Summary Messages

Introduction

Management summary messages pass between the ManageApp and any other application (including itself) to request and return an application summary for the purposes of run-time administration.

!MANAGEMENT-SUMMARY-REQUEST

The !MANAGEMENT-SUMMARY-REQUEST message is sent by ManageApp to any application (including itself and the WatchdogApp) in order to determine that application’s current configuration and resource allocation.

The !MANAGEMENT-SUMMARY-REQUEST message has no attributes.

!MANAGEMENT-SUMMARY-RESPONSE

The !MANAGEMENT-SUMMARY-REQUEST is returned by an application in response to an inbount !MANAGEMENT-SUMMARY-REQUEST message.

The attributes of the MANAGEMENT-SUMMARY-RESPONSE message are:

Field Type Description
success 0/1 [Required] Indicates if the management summary request was successful.
shutdown_level 0/1/2 [Required] The application's current shutdown level 0 = None, 1 = Pending, 2 = Shutdown.
configuration Object Container for scalar and vector configuration values on this application.
.scalars Array An Array of Objects representing application scalar configuration values. See documentation below.
.vectors Array An Array of Objects representing application vector configuration values. See documentation below.
resource Array Container for scalar and vector resource values on this application.
.scalars Array An Array of Objects representing application scalar resource values. See documentation below.
.vectors Array An Array of Objects representing application vector resource values. See documentation below.
statistics Array An Array of Objects representing current application Statistics counters. See documentation below.
poll_stats Object A container for timing information regarding recent polling/work-loop timing.
.total Integer Total number of milliseconds covered by these polling-loop statistics.
The default poll-reporting period is approximately 3000ms, but may change.
.poll_all Integer Total number of milliseconds spent "working" across all applications within this process.
When running n2svcd in --multi mode then this will include only one application.
.poll_app Integer Total number of milliseconds spent "working" for this application.
When running n2svcd in --multi (multi-process) mode, poll_app = poll_all.
.sleep Integer Total number of milliseconds that this process spent in "sleep" calls.
Note that total = poll_all + sleep subject to potential rounding error.

Configuration/Resource Scalars

Each Object in the Array of configuration.scalar entries for a managed application represents a scalar configuration value associated with the application. Configuration scalars are defined in a configuration file or database, and/or are expressly managed by an administrator.

Each Object in the Array of resource.scalar entries for a managed application represents a scalar resource value associated with the application. Resource scalars are values which vary according to the current behavior of the application, e.g. the size of a working cache in megabytes, the time of the last flush to disk, or other such operational indicators.

Both concepts use a common data structure, with minor differences. Each configuration.scalar or resource.scalar entry has the following attributes:

Field Type Description
key String [Required] A unique key for this configuration/resource attribute.
name String [Required] A human-readable name for the configuration/resource attribute.
value String The configuration/resource current value, which may be undef.
type choice/ string/ integer/ boolean Indicates the underlying type for this scalar. This may be used to decide how to render the value visually. When a configuration scalar is also editable, then it implies data entry checking rules.
choice entries should also have a values list of permitted values.
string entries have no special formatting, and are typically left-aligned.
integer entries have no special formatting, and are typically center-aligned.
boolean entries have value = 0/1/undef, displayed as "YES"/"NO"/"", center-aligned.
(Default = string)
description String Optional "help text" for this configuration scalar.
editable 0/1 For configuration entries only. The value may be edited by an authorized administrator.
A scalar value or vector column must also have a defined type in order for it to be considered editable.
(Default = scalar value or vector column is not editable)
default Scalar Optional suggested default value for administration GUI to initialise for new configuration vector entries.
values Array of String For configuration scalars of type = choice. The list of permitted values for this field.
(Default = constraint cannot be checked)
minlen Integer For configuration scalars of type = string, minimum length in characters for new value.
(Default = No minimum length for string, empty string is permitted)
maxlen Integer For configuration scalars of type = string, maximum length in characters for new value.
(Default = No maximum length for string)
min Integer For configuration scalars of type = integer, minimum integer value for new value.
(Default = 0, any non-negative value may be provided)
max Integer For configuration scalars of type = integer, maximum integer value for new value.
(Default = not specified, any maximum value may be provided)

Note that a scalar value or vector column denoted here as “editable” means that the application may allow the value to be changed (subject to sanity and consistency checks) via messages sent over the internal message bus. However, any application (such as the ManageApp) which is providing an external HTTP interface should perform additional security checks before sending these internal messages.

Configuration/Resource Vectors

Each Object in the Array of configuration.vectors for a managed application represents a static vector of configuration rows associated with the application. Configuration vectors are defined in a configuration file or database, and/or are expressly managed by an administrator.

Each Object in the Array of resource.vectors for a managed application represents a resource vector, i.e. a table of resource values dynamically assigned by the system during run-time, as a side-effect of the platform functions.

Each configuration.vectors or resource.vectors entry has the following attributes:

Field Type Description
key String [Required] A unique key for this configuration/resource vector.
name String [Required] A human-readable name for the configuration/resource vector.
count Integer [Required] The number of rows in this configuration/resource vector.
drillable 0/1 Does the application support detailed drilldown on this configuration/resource vector?
(Default = 0, drilldown is not available)
status idle / active / overload Applies to resource vectors only. When active, indicates that this resource is currently being used for current or recent processing. When overload indicates that the resource is currently or recently exceeding its maximum capacity.
(Default = idle)

Statistics Entries

The statistics Object holds statistics in the form of counters, gauges, and timing measurements.

These statistics are primarily designed to be relayed via StatsD “graphite-format” to a dedicated statistic management application. This API access is a secondary feature for “ad hoc” administration and management purposes.

The statistics Object contains the following attributes:

Field Type Description
gauges Object of Integer [Required] Contains details for statistics gauges for the application, representing the current value of a measured item.

These statistics values are initialized to the appropriate value on first use after application startup and are lost after an application restart.

Each attribute name in this Object is the name of a statistic gauge pointing at its current value.
slice_secs Integer [Required] The number of seconds captured in each statistics slice for counters and timings.
last_slice_start Integer [Required] The epoch time for the start of the last slice in each statistics slices list.

Note that the last slice in each array is still collecting new statistics, and for this reason you may wish to exclude it from any graphing or reporting display.
counters Object of Array of Integer [Required] Contains details for increment-by-one statistics counters for the application, representing discrete countable events separated by timed slices, regardless of any tags applied.

Each attribute name in this Object is the name of a statistic counter, pointing at an array of its values for historical timed slices.

These statistics values are initialized to zero only on first use after application startup and are lost after an application restart.

The last slice in each array has a collection start time defined by last_slice_start. The first slice in each array is the oldest slice.

The length of the slices array may be different for each statistic. This means that the first slices in each array may not typically have matching times. It is the last slices in each array which have matching times.
counters_count Object of Integer [Required] Contains total counts of statistics counters for the application, showing the total amount of timing counters held in memory, regardless of any tags applied.

Each attribute name in this Object is the name of a statistic counter pointing at the count of all of its occurrences within all retained timed slices.

These statistics values are lost after an application restart.
timings Object of Array of Array of Integer [Required] Contains details for statistics timings for the application, showing the time used (in milliseconds) for measured operations separated by timed slices, regardless of any tags applied.

Each attribute name in this Object is the name of a statistic timing pointing at an array of all of its occurrences for historical timed slices. Each occurrence is an integer showing the milliseconds measured for the relevant operation.

These statistics values are lost after an application restart.

The last slice in each array has a collection start time defined by last_slice_start. The first slice in each array is the oldest slice.

The length of the slices array may be different for each statistic. This means that the first slices in each array may not typically have matching times. It is the last slices in each array which have matching times.
timings_summary Object of Array of Object [Required] Contains summarised details for statistics timings for the application, showing the minimum, maximum, and average time used (in milliseconds) along with occurrence count for measured operations separated by timed slices, regardless of any tags applied.

Each attribute name in this Object is the name of a statistic timing pointing at an array of all of its summarised occurrences within the given timed slice. Each summary will always contain the member count, indicating the number of occurrences for the given slice. If count is positive, the members min, max, and average will also be present, showing the relevant summary time in milliseconds.

These statistics values are lost after an application restart.

The last slice in each array has a collection start time defined by last_slice_start. The first slice in each array is the oldest slice.

The length of the slices array may be different for each statistic. This means that the first slices in each array may not typically have matching times. It is the last slices in each array which have matching times.
timings_count Object of Integer [Required] Contains total counts of statistics timings for the application, showing the total amount of timing statistics held in memory, regardless of any tags applied.

Each attribute name in this Object is the name of a statistic timing pointing at the count of all of its occurrences within all retained timed slices.

These statistics values are lost after an application restart.