%SYS.Monitor.SAM.Abstract
class %SYS.Monitor.SAM.Abstract extends %SYS.Monitor.AbstractSensor
Abstract class to provide Sensor metrics for the SAM (System Alerting and Monitoring) application and Prometheus API. All classes which define SAM metrics should inherit from this class. Users may inherit from this class to create application metrics. The application classes may then be registered using SYS.Monitor.SAM.Config.AddApplicationClass(), and they will be added to the system metrics.Note that this will be called directly by the SAM REST service, and not by the System Monitor. The main SAM polling API will call GetSensors(), which should create the array of:
SAMValues(key)=value or SAMValues(key,item)=value.
Users may call SetSensor(Sensor, Value, Item) or directly set ..SAMValues for each metric.
All 'values' MUST BE NUMERIC values to be used for SAM and/or Prometheus.
Since this will be called directly by the SAM REST service, users should be careful to not introduce any hangs, pauses, or any coding excesses here, as this may be called at intervals of only a few seconds.
Method Inventory
Parameters
parameter PRODUCT = unknown;
Fill in the Product name here, which will be appended to all metric names.
This should be a short, lower-case prefix to indicate the company or application.
InterSystems IRIS will use "iris" for system metrics.
Methods
Override Dashboard sensors which are persistent, and System sensors which get passed to Subscribers.
Just store all Sensors in the local SAMValues array.
final method SetSensorInfo(Sensor As %String, Help As %String = "", Type As %String = "", Unit As %String = "") as %Integer
Add informational data (Help, Type and Unit) describing a Sensor (i.e. Metric)
Valid values for 'Type' are (counter, gauge, histogram, summary, or untyped)
final method SetSensorLabels(Sensor As %String, Value As %String, ByRef Labels As %String = "") as %Integer
Extension of SetSensor which allows for multiple Prometheus 'labels' for a metric.
Labels are passed as an array of label/value pairs, e.g. for a database metric we might use
Labels("id")="USER"
Labels("dir")="c:\\intersystems\\iris\\mgr\\user"
By convention, metrics with a single label value use the "id" key. So, for consistency, multiple labels should always include an "id" label which identifies that metric instance. Other labels can be used to add further information about the metric.
Labels are passed as an array of label/value pairs, e.g. for a database metric we might use
Labels("id")="USER"
Labels("dir")="c:\\intersystems\\iris\\mgr\\user"
By convention, metrics with a single label value use the "id" key. So, for consistency, multiple labels should always include an "id" label which identifies that metric instance. Other labels can be used to add further information about the metric.
Inherited Members
Inherited Properties
Inherited Methods
- %AddToSaveSet()
- %ClassIsLatestVersion()
- %ClassName()
- %ConstructClone()
- %DispatchClassMethod()
- %DispatchGetModified()
- %DispatchGetProperty()
- %DispatchMethod()
- %DispatchSetModified()
- %DispatchSetMultidimProperty()
- %DispatchSetProperty()
- %Extends()
- %GetParameter()
- %IsA()
- %IsModified()
- %New()
- %NormalizeObject()
- %ObjectModified()
- %OriginalNamespace()
- %PackageName()
- %RemoveFromSaveSet()
- %SerializeObject()
- %SetModified()
- %ValidateObject()
- ClearNotifications()
- ClearSensors()
- GetSensors()
- LogCon()
- LogMsg()
- Notify()
- OpenLog()
- Start()