Logging

General concept

The Hyper Alarm Logger is internally organized into 4 distinct objects: the Collector, Subscriptions, Collections and Loggers. In 10.97.1, there is always just one Collector. The following picture illustrates the relationship between these objects:

Hyper Alarm Logger Concept

The Hyper Alarm Logger subscribes to configured alarm sources (like OPC UA alarms, BACnet alarms or the Hyper Alarm Server), each Subscription is depicted in the picture above separately.

One or multiple Subscriptions are organized into a Collection. A Collection defines a single common set of columns (or Fields) that all the Subscriptions are mapped onto. A Collection can be understood to define the layout of the table that contains individual logged alarms / events.

A Logger then logs the alarms / events into storage files. As multiple Collections can be logged by a single Logger, the storage files can contain multiple different tables.

 

Configuring Collections and Subscriptions

Individual Collections are added through In the Workbench configuration tool, under Alarms and Notifications → Hyper Alarm Logger → Collections.

Hyper Alarm Logger Collections

In general, there are these items to configure in a Collection:

General settings

Name – the name of the Collection (Collection1 in the screenshot). It should be noted that the name of the Collection is stored in each log file created by the Hyper Alarm Logger and changing the Collection name will prevent the Hyper Alarm Logger from successfully load log files that have a different name stored inside. Thus, changing the Collection name is not advisable once the system set up.

 

Description – any text, this field is not processed by the Hyper Alarm Logger further.

Logger – the logger that will log alarms / events from this Collection. This setting determines the directory for the storage files, as well as the schedule when new files get created or old files archived. Again, changing this setting is not advised once the system is set up.

The Subscriptions tab

This tab defines the individual Subscriptions of a Collection. On each Subscription, it is possible to define the following items:

 

Name – The name of the subscription. This text gets logged as one of the fields into the resulting log and can be used for filtering purposes when viewing the log later. If changed, new alarms/ events will get logged with a new value, which may make the filtering harder.

 

Description – any text, this filed is not processed by the Hyper Alarm Logger further.

 

Point Name – the point name of the source of alarms/ events.

 

Event fields

The rest of the Subscriptions tab defines what event fields will be fetched from the alarm source. The Click to browse Event Fields hyperlink opens a browser that allows to choose from a list of event fields exposed by the Point Name above. Even if no fields are selected here, the Hyper Alarm Logger will fetch these fields - it is not possible to not exclude them:

 

Type name

Field name

BaseEventType

EventID

BaseEventType

EventClass

BaseEventType

SourceName

BaseEventType

Time

BaseEventType

TimeZone

BaseConditionType

NewState

BaseConditionType

ConditionName

 

The other columns in the table have the following functionality:

 

Event Type, Field Name – the event type name and field name that is fetched from the alarm source.

Type, Array – type data type of the fetched field. This information used just to determine the final field data type on the Fields tab.

Rename As – this can be optionally filled to change the target field name a field gets mapped onto. The default value is visible in light blue color (depending on the color scheme). Workbench validates that the value in this field adheres to the following rules:

  1. If the Event Type is BaseEventType or BaseConditionType, the final field will be the Event Type + dot + Field Name (e.g. BaseEventType.Message) and cannot be renamed into anything else.
  2. Otherwise, the final field name is just the Field Name by default and can be renamed, but the new name must not start with BaseEventType., BaseConditionType., AlmlBaseType. or AlmlInternalType..

 

The Fields tab

This tab contains the definite list of fields that gets logged by the Hyper Alarm Logger. It is recommended to automatically generate this list by clicking the Generate Fields from the Selected Subscriptions, which will automatically add/remove fields here based on fields defined by individual Subscriptions.

If a field disappears from this list, it will never get physically deleted from the log for alarms that were already logged, although the field will no longer be accessible to clients until re-added.

 

Individual items of each field have this meaning:

 

Name – the field name. For a field to be used, it must match the default or manual value of the Rename As setting of a field on the Subscriptions tab.

Description - any text, this filed is not processed by the Hyper Alarm Logger further.

Data Type, Is Data Type Array – the data type of the final field. When reading logged alarms / events, the logged data is converted into this data type. No conversion is done while logging and the Hyper Alarm Logger will log any value it supports, even if it does not match this type.

Data Type Length – used for Exports, planned for 10.97.2.

 

Configuring the Default Collector

Version 10.97.1 currently supports one, in-process collector. There are some settings that can be configured on the Store and Forward tab (the Description setting on the General tab is not processed by the Hyper Alarm Logger further). Store and forward buffer is a part of recovery mechanism in the alarm logger. When e.g., write of an event package fails from any reason (can’t access target media, etc.), data is still stored in the buffer and later re-send to the logger as a part of re-try operation.

Buffer keeps most recent data in the memory and if a package can’t be processed within configured time interval then such package is persistently stored (file “sf_buffer.almb”).

 

Directory – A buffer file location, when empty then default file location is used (“…ProgramData\ICONICS\HyperAlarmLogger\Buffer”).

Max. Persistent Buffer Size – Maximum size of data packages, which can be persistently stored. When this maximum is reached then all data packages that are ready for persistent storage are discarded i.e., packages that are processed within memory part of the SF buffer are untouched by this mechanism.

 

Memory Lead Time – The time interval, for which are unprocessed packages kept in the memory part of SF buffer. After this period, all the unconfirmed packages are persistently stored.

 

Resend Timeout – A timeout after which unsuccessfully processed data packages are re-sent to the logger for further processing.

 

Send Most Recent Data First – Whether to send oldest or newest data from persistent part of the SF buffer first.

 

All these setting take effect even in a non-redundant setup. It could happen that the Hyper Alarm Logger is not able to log into its main storage (disk may be full or a similar reason) and in this case the buffers of the Collector will try hold the alarms / events.

 

Configuring Loggers

Each Logger defines a target directory, where Hyper Alarm Logger will start creating storage files. A new log file gets created periodically here, and old files can be optionally moved to an archive directory.

The File Storage Information tab

This tab specifies where the Logger creates the new storage files. Please note that any changes made to this tab only take effect when the Logger fills the current storage file. If the current file is valid till the end of the year, then that is when the new settings will apply.

File storage information

 

Data Store Directory – directory new files will get created. When empty, then the directory is C:\ProgramData\ICONICS\HyperAlarmLogger\Data with the name of the Logger appended (in this case …\Data\Alarm Logger\).

Time settings – the rest of this tab defines the time recurrence at which the Logger creates a new storage file.

 

Archiving Information tab

It is possible to configure the Logger to either delete old storage files or to move them to a different directory. Once moved by the Logger, the storage files are then treated as read-only.

 

Condition – Can be one of the following:

- Disabled – archiving is disabled, data is stored in “Data Store Directory”.

- Minimum Time Extent – archiving is enabled, files with the end time older than “time now” – “time extent” are ready for archiving operation.

- Minimum Time Extent and Maximum Total Size – archiving is enabled, it keeps minimal time extent as in previous case, however archiving starts when total file size of logged files exceeds specified limit. Note, minimum time extent has the priority i.e., can’t be “shorten” by total file size threshold.

 

Min Time Extent – Minimum time extent for which a logger data must be available to alarm logger clients. This time extent can be increased by granularity of created storage files (e.g. when files are created with one week period and minimum time extent is also one week then one and two weeks of data is available).

 

Max Total Size – Maximum file size of data storage files in the data store folder, used when “Minimum Time Extent and Maximum Total Size” condition is selected.

 

On Event – Global trigger event, when this event is activated then the logger checks for data storages to archive. When disabled then it uses periodic check, which period is configured in the “system settings” form, section “Data Processing”, value “Data Storage Archiving Period” – default value is 1 minute.

 

Take Action – What to do with storage files that are ready to archive. There are two options available:

- Archive Older Files – files are stored in the “Archive Directory” and marked as read-only.

- Delete Older Files – files are permanently deleted.

 

Data Archive Directory – Valid when “Archive Older Files” option is selected and specifies where to store archived files. Can be NAS drive or some other, long-term storage. When empty then default location is used (“…ProgramData\ICONICS\HyperAlarmLogger\Archive\logger_name”).