Platform Services Health Monitoring Features

GENESIS64 includes multiple Platform Services Health Monitoring features.

Monitoring System Health and Variables

All data points exposed for diagnostics purpose are not license counted.

Diagnostic Counters

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:

InternalSession

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.

MasterPointManager

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.

PointManager

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.

Session and SessionByPID Categories

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.

SessionManager

Counter Name

Single/Multi Instance

Meaning

SessionCount

Multi Instance

Number of sessions currently handled by the server.

Generating Alarms, Event Logging

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.

Performance Counters

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

Service Monitoring

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.

Ping Feature

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

Drives

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.

Other Folders

Environment

Contains data points representing the operating system environment variables, such as Machine Name, OS Version information and Processor Count.

Installed Products

Contains data points representing information about installed ICONICS products.

FWX Server Limits

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 Diagnostic Variables

BACnet exposes diagnostic variables as data points.

See Also:

System Health Monitor

Health Monitor Settings

ICONICS Modules Performance Counters

System Health Monitor Services Enumeration