Skip to main content

Metrics

Introduction

There are various metrics that are captured as you use the platform which can be used to help you investigate issues and pro-actively ensure that issues are caught as early as possible.

Metric Providers

Metric providers represent a specific source of stored metrics, at present these are:

  • ODSLRequest

    Metrics for every API request made to the platform

  • ODSLProcess

    Metrics for process executions

  • AzureServiceBus

    Metrics for the messaging subsystem

ODSLRequest

With every API call to the platform, irrespective of the calling application, a metric record is stored capturing key information about the call.

Metrics

The following metrics are available:

NameDescription
ReadRequestResponseSizeThe size of the response returned to the client in bytes
ReadRequestDurationThe duration in milliseconds of the call
ReadRequestsThe count of read requests
WriteRequestsThe count of write requests
DeleteRequestsThe count of delete requests

Field Filters

The following fields are available to filter on:

NameDescription
serviceThe name of the REST service, e.g. data
keyThe id of the item in the request
actionThe actual action performed by the request, e.g. list
applicationThe application making the request, e.g. portal
httpstatusThe HTTP status number of the request
userThe user id or email address of the user making the request

ODSLProcess

You can query the metrics stored for every process execution.

Metrics

The following metrics are available:

NameDescription
RunRequestsThe count of the number of process executions
RunRequestDurationThe overall duration in milliseconds of the call

Field Filters

The following fields are available to filter on:

NameDescription
nameThe name of the process
triggerThe trigger for the process execution, e.g. scheduled
statusThe final status of the process execution, e.g. success

AzureServiceBus

Metrics

The following metrics are available:

NameDescription
SuccessfulRequestsSuccessful requests
ServerErrorsServer errors
UserErrorsUser errors
ThrottledRequestsThrottled requests
IncomingRequestsIncoming requests
IncomingMessagesIncoming messages
OutgoingMessagesOutgoing messages
ActiveConnectionsActive connections
ConnectionsOpenedConnections opened
ConnectionsClosedConnections closed
SizeSize of an Queue/Topic in Bytes
MessagesCount of messages in a Queue/Topic
ActiveMessagesCount of active messages in a Queue/Topic
DeadletteredMessagesCount of dead-lettered messages in a Queue/Topic
ScheduledMessagesCount of scheduled messages in a Queue/Topic
CompleteMessageCount of messages completed on a Queue/Topic
AbandonMessageCount of messages abandoned on a Queue/Topic
PendingCheckpointOperationCountPending Checkpoint Operations Count
ServerSendLatencyLatency of Send Message operations for Service Bus resources
ReplicationLagDurationReplication lag by time duration in seconds
ReplicationLagCountReplication lag by message count

Field Filters

The following fields are available to filter on:

NameDescription
queueThe name of the queue

Using Metrics

Metrics can be extracted as timeseries and can be either:

  • Used dynamically by passing in configuration information
  • Used as a regular timeseries by saving the configuration as a MetricTimeSeries

Dynamic metric timeseries

// Get the average duration of read requests for object AAA
mts = metric("ODSLRequest/ReadRequestDuration", "#PT15M", "averaged", "between(T-1Dh0m0s0,T-1Dh23m59s59)", ?service='object' and key='AAA')
print mts

// Get the total number of run requests for all processes
mts = metric("ODSLProcess/RunRequests", "#PT15M", "summed", "between(T-1Dh0m0s0,T-1Dh23m59s59)")
print mts

Stored metric timeseries

cal = ${calendar:"#PT1H"}

AAA = Object()
AAA.id = "ODSL.METRICS.REQUEST"
AAA.name = "ODSL request metrics"

// Create a metric timeseries to sum up all requests to the user service
ReadRequests_1h = MetricTimeSeries("ODSLRequest", "ReadRequests")
ReadRequests_1h.calendar = cal
ReadRequests_1h.observed = "summed"
ReadRequests_1h.filter = ?service='user'
AAA.ReadRequests_1h = ReadRequests_1h

// Create a metric timeseries average the active messages in the etrm queue
ActiveMessages = MetricTimeSeries("AzureServiceBus", "ActiveMessages")
ActiveMessages.calendar = cal
ActiveMessages.filter = ?queue='etrm'
ActiveMessages.observed="averaged"
AAA.ActiveMessages = ActiveMessages

save AAA