GENESIS64 includes multiple Platform Services Health Monitoring features.
All data points exposed for diagnostics purpose are not license counted.
Diagnostic Counters are internal variables of FrameWorX Servers and its Point Managers. They are exposed as data points under Control and Diagnostics\Diagnostics Counters. They may be setup to generate alarms and to log warnings in Windows Event Log.
All Diagnostic Counters except for Session and SessionByPID categories are also exposed as Windows Performance Counters (not available in Azure) and can be viewed and logged with Windows Performance Monitor (perfmon.exe). [NOTE: Session and SessionByPID are not exposed as Windows Performance Counters, because their number grows over time and the total number of created Windows Performance Counters is limited. They may be optionally exposed as Performance Counters by changing <EnableCoutersPerClient> and <EnableCountersPerClientSession> items in FwxAsyncServer.config.xml. This should be done only temporarily for troubleshooting.]
The Diagnostics Counters may be of a single instance or of multiple instances. A multi-instance counter means the counter exists for multiple objects of the same kind. They are divided into the following categories:
Counter Name |
Single/Multi Instance |
Meaning |
QueueLength |
Multi Instance |
Length of update queue used by an internal session. Internal session may be used by Point Managers that request points on other Point Managers (e.g. Aggregator). If the queue grows, it means the Point Manager using the internal session does not remove the updates from the queue as quick as it should. It indicates a serious error or overload of the Point Manager. |
Counter Name |
Single/Multi Instance |
Meaning |
AggregatorCacheSize |
Single Instance |
Count of points that are in the Aggregator’s cache. These points are on scan, but no client is currently subscribed to them. Points in cache add load to under laying servers, increase memory usage and CPU utilization, but improve the performance of switching client displays. |
EventIdCache |
Single Instance |
Count of EventIDs stored in EventID cache, which is used to check security when acknowledging alarms. The count should never exceed the number of all configured alarms. |
InvalidHandleRequestRate |
Single Instance |
Rate of requests with invalid handles per second. Proper clients should use only valid handles. Invalid handles indicate a buggy or rogue client. |
InvalidPointNameRequestRate |
Single Instance |
Rate of requests with invalid point names per second. Invalid point name is a name that has been recognized by a Point Manager, but the point manager rejected it. Invalid names indicate a client is using point names that don’t exist in the system. Requesting invalid point names adds unnecessary load. Invalid point names may become valid though, e.g. when a device becomes online. |
UnknownPointNameRequestRate |
Single Instance |
Rate of requests with unknown point names per second. Unknown point name is a name that has not been recognized by any Point Manager. Unknown names indicate a client is using point names that don’t exist in the system and never will. Requesting unknown point names adds unnecessary load. |
Counters in this category may be used to figure out what a Point Manager is doing and what Point Managers are more busy than others.
Note the instances contain an instance named _total, which represents total number for all Point Managers.
Counter Name |
Single/Multi Instance |
Meaning |
RequestCount |
Multi Instance |
Number of all requests handled by the particular Point Manager. This counter always grows. Value of 0 means the Point Manager never handled any request, i.e. it has not been used (so far). |
RequestRate |
Multi Instance |
Number of all requests handled by the particular Point Manager per second. The higher the value is, the busier the Point Manager is. |
BrowseRequestCount |
Multi Instance |
Same as RequestCount, but only for Browse requests |
BrowseRequestRate |
Multi Instance |
Same as RequestRate, but only for Browse requests |
CustomRequestCount |
Multi Instance |
Same as RequestCount, but only for Custom requests |
CustomRequestRate |
Multi Instance |
Same as RequestRate, but only for Custom requests |
DatasetRequestCount |
Multi Instance |
Same as RequestCount, but only for Dataset requests |
DatasetRequestRate |
Multi Instance |
Same as RequestRate, but only for Dataset requests |
MethodRequestCount |
Multi Instance |
Same as RequestCount, but only for Method requests |
MethodRequestRate |
Multi Instance |
Same as RequestRate, but only for Method requests |
ReadWriteRequestCount |
Multi Instance |
Same as RequestCount, but only for ReadWrite requests |
ReadWriteRequestRate |
Multi Instance |
Same as RequestRate, but only for ReadWrite requests |
SubscriptionRequestCount |
Multi Instance |
Same as RequestCount, but only for Subscription requests |
SubscriptionRequestRate |
Multi Instance |
Same as RequestRate, but only for Subscription requests |
DataUpdateCount |
Multi Instance |
Number of all data updates sent to clients by the particular Point Manager. This counter always grows. Value of 0 means the Point Manager never sent any data update to any client. |
DataUpdateRate |
Multi Instance |
Number of data updates sent to clients by the particular Point Manager per second. The higher the value is, the busier the Point Manager is. |
DroppedDataUpdateCount |
Multi Instance |
Number of dropped data updates. A dropped data update is a data update that has been discarded before sending to a client, because a newer data update became available. This counter always grows. Too many dropped updates indicates the clients requested faster scan rate than they can handle. Dropped updates create unnecessary load to the server. |
DataUpdateRate |
Multi Instance |
Number of dropped data updates per second. High values indicate overloading. |
EventUpdateCount |
Multi Instance |
Same as DataUpdateCount, but represents for Event updates. Event updates include AE notifications, updates from procedures and dataset updates. |
EventUpdateRate |
Multi Instance |
Same as DataUpdateRate, but for Event updates. |
PointCount |
Multi Instance |
Number of points handled by the particular Point Manager. |
The difference between the counter instances in Session and SessionByPID is that:
An instance in Session category represents all occurrences of a certain client application on one computer, e.g. all GraphWorX’s running on PC1 will be counted in one instance.
An instance in SessionByPID category represents each occurrence of a client application separately, e.g. starting GraphWorX, stopping it, starting another GraphWorX on the same computer creates two instances.
Instances in SessionByPID are more “granular” than instances in Session category.
The following counters are common for both Session and SessionByPID categories.
Counter Name |
Single/Multi Instance |
Meaning |
DroppedDataUpdateRate |
Multi Instance |
Number of dropped data updates in the particular session per second. A high value indicates the client that created the session requested faster scan rate than it can handle. |
PendingRequestCount |
Multi Instance |
Number of requests that have been sent to FWX server, but the server did not sent any response back yet. Constant high value means the particular session is overloading the server. Growing value may indicate a problem in the server (the server does not respond to incoming requests). |
PendingBrowseRequestCount |
Multi Instance |
Same as PendingRequestCount, but only for Browse requests. |
PendingCustomRequestCount |
Multi Instance |
Same as PendingRequestCount, but only for Custom requests. |
PendingDatasetRequestCount |
Multi Instance |
Same as PendingRequestCount, but only for Dataset requests. |
PendingMethodRequestCount |
Multi Instance |
Same as PendingRequestCount, but only for Method requests. |
PendingReadWriteRequestCount |
Multi Instance |
Same as PendingRequestCount, but only for ReadWrite requests. |
PendingSubscribeRequestCount |
Multi Instance |
Same as PendingRequestCount, but only for Subscribe requests. |
PointCount |
Multi Instance |
Number of points being used by the particular session. |
RequestRate |
Multi Instance |
Number of requests the particular session sends to the server. This can be used to determine which session causes the biggest load. |
ResponseRate |
Multi Instance |
Number of responses the server sends to the particular session. Note that Responses are Results (one per each Request) + Updates, i.e. RequestRate does not have to be equal to ResponseRate. |
Besides the counters common for both Session and SessionByPID categories, the following counters are only available for SessionByPID category:
Counter Name |
Single/Multi Instance |
Meaning |
OutputQueueRate |
Multi Instance |
Number of responses sent though the session’s output queue per second. |
OutputQueueSize |
Multi Instance |
Size of the output queue for the particular session. Should not grow over time. |
Counter Name |
Single/Multi Instance |
Meaning |
SessionCount |
Multi Instance |
Number of sessions currently handled by the server. |
Diagnostic Counters may be configured to generate alarms when a certain limit is reached. The alarm can be viewer with AWX Viewer.
When an alarm is generated by a Diagnostic Counter, an event may be logged in Windows Event Log.
To enable this feature, use Platform Services configuration – Diagnostic tab.
Users may add other Diagnostics Counters for generating alarms.
For multi-instance Diagnostic Counters you may use * to indicate the alarm generation is enabled for all instances. The alarm then contains the information which instance generated it.
In AlarmWorX64 Viewer, then subscribe to the Diagnostics Counters folder or any of its subfolders.
The events may be logged in Windows Event Log.
All Windows Performance Counters (which are available in Performance Monitor) are exposed as data points to GENESIS64 (not available in Azure). The Performance Counters include:
Private bytes, CPU usage, handle count, thread count etc. for each process
.NET-related counters
File system activity counters
Many others
Exposes state of services installed on the computer. Services are divided into two folders:
Platform Services – contains services related to GENESIS64
Other services – contains other services
Each service is represented by an object with the following members:
Name |
Data Type |
Meaning |
Description |
String |
Description of the service |
DisplayName |
String |
Human-readable name of the service |
IsRunning |
Boolean |
Tells whether the service is currently running |
StartMode |
Enumerated |
0 – Boot 1 – System 2 – Auto 3 – Manual 4 – Disabled |
Status |
Enumerated |
0 – Stopped 1 – StartPending 2 – StopPending 3 – Running 4 – ContinuePending 5 – PausePending 6 – Paused 7 – Unknown |
Enumerated values may be accessed with enum() modifier to get their textual representation, e.g.: enum(:Services/Platform/IcoGenBroker/Status).
The Services folder and all under laying service objects generate alarms when the service is not running and may be subscribed to with AWX Viewer.
Pings other computers with ICMP Ping and exposes the results of pinging as data points. User has to type in the address of the target computer. Each target computer exposes the following data points:
Name |
Data Type |
Meaning |
Alive |
Boolean |
Tells whether the target computer responded on the last ping. |
Failed Responses Received |
UInt64 |
Total number of failed responses. |
Requests Sent |
UInt64 |
Total number of sent requests. |
Roundtrip (milliseconds) |
UInt32 |
Last roundtrip time in milliseconds. |
Status |
String |
Last status message or error. |
Successful Responses Received |
UInt64 |
Total number of successful responses received. |
Point name example: :Ping/www.google.com/RoundTripMsec
Exposes information about disk drives on the computer as data points. Each disk drive is represented by a folder containing the following tags:
Name |
Data Type |
Meaning |
AvailableFreeSpace |
Int64 |
The amount of free space available on the drive, in bytes. |
DriveFormat |
String |
The name of the file system, such as NTFS or FAT32 |
DriveType |
Enumerated |
Drive type, see System.IO.DriveType values. 0 – Unknown 1 – NoRootDirectory 2 – Removable 3 – Fixed 4 – Network 5 – CDRom 6 – Ram |
IsReady |
Boolean |
Value indicating whether a drive is ready. |
Name |
String |
The name of the drive. |
TotalFreeSpace |
Int64 |
The total free space available on a drive, in bytes. |
TotalSize |
Int64 |
The total size of the drive, in bytes. |
VolumeLabel |
String |
The volume label. |
Contains data points representing the operating system environment variables, such as Machine Name, OS Version information and Processor Count.
Contains data points representing information about installed ICONICS products.
FWX Server Limits were introduced in order to protect FWX Server against overloading (e.g. by a rogue client application). They can be configured in Platform Services dialog – Settings tab.
Max Session Count – maximal number of concurrent sessions.
Max Sessions per Client Process – maximal number of concurrent sessions created by one client process. A process may create multiple sessions, e.g. one for data updates, another for security.
Max Points per Session – maximal number of concurrently subscribed points for one session.
Fastest Allowed Scan Rate – limits fastest possible scan rate. If a client requires faster scan rate (lesser number), FWX server modifies it to the values defined here, in milliseconds.
BACnet exposes diagnostic variables as data points.
See Also:
ICONICS Modules Performance Counters
System Health Monitor Services Enumeration