Open Telemetry Metrics
Patriot can export system statistics in the Open Telemetry standard format for metrics. This is a standardised common format which is supported by many major system observability + monitoring platforms.
Supported Integrations
The Open Telemetry Supported Vendors List maintains an up-to-date list of compatible systems. The exact setup steps for each platform will vary, please consult your platform documentation for details on receiving OTLP metric data.
Patriot Configuration
In the Data Service configuration file Telemetry section, set SendMetrics to True, and set the other settings to match the requirements of the destination server that will receive the OTLP metric data. Repeat this step for each Task Service as well.
{
"DataService": {
// ... other configuration ...
"Telemetry": {
"OpenTelemetry": {
"SendMetrics": true,
// Destination server
"Endpoint": "http://localhost:4317",
// Supported: Grpc (default) or HttpProtobuf
"Protocol": "Grpc",
// Optional headers to include in request (e.g. api key)
"Headers": "apikey=123,version=2"
}
}
}
}
You must restart the data service before the setting will take effect.
Data Service Metrics
Meter Name: patriot.data_service
Signal Processing Duration
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.signal_processing.duration | Histogram | ms | Time taken to process a signal |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.client.port_no | string | The client port number of the processed signal | 01; 05 | For all logged signals |
patriot.action_plan.name | string | The final action plan of the processed signal | Fire Alarm; Opening (Unset) | For all logged signals |
patriot.signal.is_test_mode | boolean | True, if the signal was processed as a test mode event | true | Only for test mode signals |
patriot.signal.non_logged_category | string | The reason the signal was processed but not logged | Non-Monitored; Caller ID | Only for signals which were processed without being logged |
Signal Processing Queues
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.signal_processing.queued_signals | Gauge | {signal} | Number of signals currently queued for processing |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.signal_processing.queue_name | string | The queue name | recsigs_writer.pending_writes; recsigs_reader.available; processing_queue.in_progress | Always |
Signal Processing Clients
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.signal_processing.clients_in_process | Gauge | {client} | Number of clients with signals in the processing queue |
Note: This metric has no attributes
Signals Received
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.signal_processing.signals_received | Counter | {signal} | Number of signals received for processing |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.raw_signal.category | string | The category of the received signal | bad_data; system; standard | Always |
Signal Processing Workers
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.signal_processing.active_workers | Gauge | {worker} | Number of currently active signal processing workers |
Note: This metric has no attributes
Signal Processing Faulted Components
| Instrument Name | Instrument Type | Description |
|---|---|---|
patriot.data_service.signal_processing.faulted_components | Gauge | Signal logging component is faulted (1) or not (0) |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.signal_processing.component_name | string | The name of the signal logging component | RecSigsWriter; RecSigsReader; LoadClient; ProcessSignal | Always |
Archiving Duration
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.archiving.duration | Histogram | s | Time taken for archiving to complete |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.archiving.type | string | The type of archiving | daily; periodic | Always |
Runaway Available Signal Permits
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.runaway.available_signal_permits | Histogram | {signal} | Number of remaining allowed signals before runaway detection |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.runaway_profile.name | string | The runaway profile applied to the client | Default | Always |
Reminder Processing
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.reminder_processing.reminders_processed | Counter | {reminder} | Number of reminders processed |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.reminder.category | string | The kind of reminder that was processed | auto_status_monitoring; alarm_processing | Always |
Command Message Processing
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.command_message_processing.messages_processed | Counter | {message} | Number of command messages processed |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.command_message.type | string | The kind of message that was processed | Poll; ForwardedSignal | Always |
Command Message Processing Queue
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.command_message_processing.queued_messages | Gauge | {message} | Number of command messages queued for processing |
Note: This metric has no attributes
Pending Alarm Activations Count
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.pending_activations.count | Gauge | {activation} | Number of currently active alarm events |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.action_plan.name | string | The current action plan of the event | Fire Alarm; Opening (Unset) | Always |
patriot.activation.status | string | The current status of the event | new | Always |
patriot.activation.warning_level | int | The current warning timer level of the event | 0; 1; 2; 3 | If action plan exists |
Only new alarms are currently reported
Pending Alarm Activations Created
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.data_service.pending_activations.created | Counter | {activation} | Number of alarm activations created |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.action_plan.name | string | The action plan of the created activation | Fire Alarm; Opening (Unset) | Always |
Task Monitor
Reports the current status of each task. Each metric emits one measurement per task, with a value of 1 if the task is in that state, or 0 if not.
| Instrument Name | Instrument Type | Description |
|---|---|---|
patriot.data_service.task_monitor.active | Gauge | Task is active (1) or not (0) |
patriot.data_service.task_monitor.faulted | Gauge | Task is faulted (1) or not (0) |
patriot.data_service.task_monitor.disabled | Gauge | Task is disabled (1) or not (0) |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.task.taskno | string | The task number | 1; 17 | Always |
patriot.task.taskname | string | The task name | Surgard Serial; Email Task | Always |
Task Service Metrics
Meter Name: patriot.task_service
Signal Buffer Queue Length
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.task_service.signal_buffer.queue_length | UpDownCounter | {raw_signal} | Number of signals currently buffered by the task service, awaiting delivery to the data service |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
messaging.destination.name | string | The destination data service for the buffered signal | patriot-data-server; localhost | Always |
Signal Buffer Queue Length
| Instrument Name | Instrument Type | Unit (UCUM) | Description |
|---|---|---|---|
patriot.task.signals_received | Counter | {raw_signal} | Number of signals received by a Patriot task |
| Attribute | Type | Description | Examples | Presence |
|---|---|---|---|---|
patriot.raw_signal.source | string | The source task that generated the signal | Task 17: Surgard Serial; | Always |
patriot.raw_signal.category | string | The category of the generated signal | bad_data; system; standard | Always |