diff --git a/README.md b/README.md
index d8a71145f..ce4c3291c 100644
--- a/README.md
+++ b/README.md
@@ -41,6 +41,7 @@ Feel free to ask, use and report any bugs you encountered!
- [Scripts](#scripts)
- [Dependencies](#dependencies)
- [Targets](#targets)
+- [Grafana](#grafana)
## CMake
@@ -92,3 +93,9 @@ Full dependency graph can be seen [here](doc/XXX-tree.svg)
- dependency-graph : Prepares graphviz visualization of dependencies
- package : Prepares default packages which includes deb/rpm package and symbols with a systemd service. You should specify the desired package type with -DCPACK_GENERATOR="DEB" (or "RPM")
- test : Prepares gtest target
+
+## Grafana
+
+Since there is a Prometheus server integration, also there is a Grafana integration. You can find an example for dashboard [here](scripts/GrafanaDashboard-1730032129887.json). Also you can see screenshot of the dashboard below.
+
+
diff --git a/doc/GrafanaDashboard.png b/doc/GrafanaDashboard.png
new file mode 100644
index 000000000..2bf1f8661
Binary files /dev/null and b/doc/GrafanaDashboard.png differ
diff --git a/include/metrics/ProcessMetrics.hpp b/include/metrics/ProcessMetrics.hpp
index 46f51751e..5690e040d 100644
--- a/include/metrics/ProcessMetrics.hpp
+++ b/include/metrics/ProcessMetrics.hpp
@@ -17,6 +17,8 @@ class ProcessMetrics {
std::unique_ptr _thread; ///< Thread handler
std::shared_ptr _checkFlag; ///< Runtime check flag
+ prometheus::Gauge *_pInitTime; ///< Pointer to initialization time gauge
+ prometheus::Gauge *_pCurrentTime; ///< Pointer to the current time gauge
prometheus::Gauge *_pMemory; ///< Pointer to the memory usage gauge
prometheus::Gauge *_pPageFaults; ///< Pointer to the page faults gauge
prometheus::Gauge *_pCpuUsage; ///< Pointer to the CPU usage gauge
diff --git a/scripts/GrafanaDashboard-1730032129887.json b/scripts/GrafanaDashboard-1730032129887.json
new file mode 100644
index 000000000..f3dd493f3
--- /dev/null
+++ b/scripts/GrafanaDashboard-1730032129887.json
@@ -0,0 +1,1977 @@
+{
+ "__inputs": [
+ {
+ "name": "DS_PROMETHEUS",
+ "label": "prometheus",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "prometheus",
+ "pluginName": "Prometheus"
+ }
+ ],
+ "__elements": {},
+ "__requires": [
+ {
+ "type": "panel",
+ "id": "gauge",
+ "name": "Gauge",
+ "version": ""
+ },
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "11.3.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Prometheus",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "stat",
+ "name": "Stat",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "timeseries",
+ "name": "Time series",
+ "version": ""
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": {
+ "type": "grafana",
+ "uid": "-- Grafana --"
+ },
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "fiscalYearStartMonth": 0,
+ "graphTooltip": 0,
+ "id": null,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 9,
+ "panels": [],
+ "title": "General Info",
+ "type": "row"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Version of XXX",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "fixed"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 0,
+ "y": 1
+ },
+ "id": 1,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "/^version$/",
+ "limit": 1,
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "XXX_info{instance=\"$instance\"}",
+ "format": "time_series",
+ "instant": true,
+ "legendFormat": "__auto",
+ "range": false,
+ "refId": "A"
+ }
+ ],
+ "title": "Version",
+ "transformations": [
+ {
+ "id": "labelsToFields",
+ "options": {
+ "keepLabels": [
+ "version"
+ ],
+ "mode": "columns"
+ }
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "CPU usage of service",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "fieldMinMax": false,
+ "mappings": [],
+ "max": 100,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "#EAB839",
+ "value": 50
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "percent"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 3,
+ "y": 1
+ },
+ "id": 5,
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto",
+ "text": {}
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "cpu_usage{instance=\"$instance\"}",
+ "instant": true,
+ "legendFormat": "__auto",
+ "range": false,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "CPU Usage",
+ "type": "gauge"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Memory usage of service",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "fixedColor": "blue",
+ "mode": "thresholds"
+ },
+ "fieldMinMax": false,
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "bytes"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 6,
+ "y": 1
+ },
+ "id": 3,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "memory_usage{instance=\"$instance\"}",
+ "instant": false,
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Memory",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Disk read/write of service",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "fieldMinMax": false,
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "binBps"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 6,
+ "x": 9,
+ "y": 1
+ },
+ "id": 6,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "disk_read{instance=\"$instance\"}",
+ "legendFormat": "Read",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "expr": "disk_write{instance=\"$instance\"}",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Write",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "title": "Disk IO",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Thread count of the service",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 15,
+ "y": 1
+ },
+ "id": 7,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "thread_count{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Thread Count",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "File descriptor count of service",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 18,
+ "y": 1
+ },
+ "id": 8,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "file_descriptor_count{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "File Descriptor",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Total page faults occurred in service",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 21,
+ "y": 1
+ },
+ "id": 4,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "rate(page_faults{instance=\"$instance\"}[$__rate_interval])",
+ "legendFormat": "Page faults",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Page Faults",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Uptime of the service",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unit": "s"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 0,
+ "y": 3
+ },
+ "id": 2,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "current_time{instance=\"$instance\"} - init_time{instance=\"$instance\"}",
+ "instant": true,
+ "legendFormat": "__auto",
+ "range": false,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Uptime",
+ "type": "stat"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 5
+ },
+ "id": 10,
+ "panels": [],
+ "title": "ZeroMQ Server",
+ "type": "row"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Total received commands",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 0,
+ "y": 6
+ },
+ "id": 13,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "zeromq_received_commands{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Received",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "ZeroMQ failed command percentage",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "max": 1,
+ "min": 0,
+ "thresholds": {
+ "mode": "percentage",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "#EAB839",
+ "value": 30
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "percentunit"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 3,
+ "x": 3,
+ "y": 6
+ },
+ "id": 11,
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "expr": "zeromq_failed_commands{instance=\"$instance\"}/zeromq_received_commands{instance=\"$instance\"}",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Failed",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "title": "Failed Commands",
+ "type": "gauge"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Failed ZeroMQ commands",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 6,
+ "y": 6
+ },
+ "id": 12,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "zeromq_failed_commands{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Failed Commands",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "binBps"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 6,
+ "x": 9,
+ "y": 6
+ },
+ "id": 15,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "rate(zeromq_uploaded_bytes{instance=\"$instance\"}[$__rate_interval])",
+ "legendFormat": "Upload",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "expr": "rate(zeromq_downloaded_bytes{instance=\"$instance\"}[$__rate_interval])",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Download",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "title": "Speed",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "ZeroMQ processing performance",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineStyle": {
+ "fill": "solid"
+ },
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "fieldMinMax": false,
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unit": "ns"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Maximum"
+ },
+ "properties": [
+ {
+ "id": "custom.lineWidth",
+ "value": 0
+ },
+ {
+ "id": "custom.fillBelowTo",
+ "value": "Minimum"
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 15
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Minimum"
+ },
+ "properties": [
+ {
+ "id": "custom.lineWidth",
+ "value": 0
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 9,
+ "x": 15,
+ "y": 6
+ },
+ "id": 18,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": false
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "rate(zeromq_processing_time_sum{instance=\"$instance\"}[$__rate_interval])",
+ "legendFormat": "Processing",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "zeromq_minimum_processing_time{instance=\"$instance\"}",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Minimum",
+ "range": true,
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "zeromq_maximum_processing_time{instance=\"$instance\"}",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Maximum",
+ "range": true,
+ "refId": "C"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "expr": "zeromq_processing_time{instance=\"$instance\", quantile=\"0.99\"}",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "99th Quantile",
+ "range": true,
+ "refId": "D"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "expr": "zeromq_processing_time{instance=\"$instance\", quantile=\"0.5\"}",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "50th Quantile",
+ "range": true,
+ "refId": "E"
+ }
+ ],
+ "title": "Performance",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Total received command parts",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 0,
+ "y": 9
+ },
+ "id": 14,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "zeromq_total_command_parts{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Received Parts",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Failed ZeroMQ command parts",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 6,
+ "y": 9
+ },
+ "id": 17,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "zeromq_failed_command_parts{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Failed Command Parts",
+ "type": "stat"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 12
+ },
+ "id": 19,
+ "panels": [],
+ "title": "Telnet Server",
+ "type": "row"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Total received commands",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 0,
+ "y": 13
+ },
+ "id": 20,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "telnet_received_commands{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Received",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Active Telnet connections",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "max": 5,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 4
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 3,
+ "x": 3,
+ "y": 13
+ },
+ "id": 26,
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "telnet_active_connections{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Active Connections",
+ "type": "gauge"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Accepted Telnet connections",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 6,
+ "y": 13
+ },
+ "id": 28,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "telnet_received_connections{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Accepted Connections",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "binBps"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 6,
+ "x": 9,
+ "y": 13
+ },
+ "id": 22,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "rate(telnet_uploaded_bytes{instance=\"$instance\"}[$__rate_interval])",
+ "legendFormat": "Upload",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "expr": "rate(telnet_downloaded_bytes{instance=\"$instance\"}[$__rate_interval])",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Download",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "title": "Speed",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Average processing time",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "ns"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 15,
+ "y": 13
+ },
+ "id": 29,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "telnet_processing_time_sum{instance=\"$instance\"}/telnet_processing_time_count{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Avg Processing",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Telnet session duration",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "s"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 6,
+ "x": 18,
+ "y": 13
+ },
+ "id": 25,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": false
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "increase(telnet_session_duration_sum{instance=\"$instance\"}[$__rate_interval])",
+ "legendFormat": "Duration",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Session duration",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Failed Telnet commands",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 0,
+ "y": 16
+ },
+ "id": 24,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "telnet_failed_commands{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Failed Commands",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Refused Telnet connections",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 6,
+ "y": 16
+ },
+ "id": 27,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "telnet_refused_connections{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Refused Connections",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "Average session time",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "s"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 15,
+ "y": 16
+ },
+ "id": 30,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "11.3.0",
+ "targets": [
+ {
+ "editorMode": "code",
+ "expr": "telnet_session_duration_sum{instance=\"$instance\"}/telnet_session_duration_count{instance=\"$instance\"}",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A",
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ }
+ }
+ ],
+ "title": "Avg Session",
+ "type": "stat"
+ }
+ ],
+ "refresh": "30s",
+ "schemaVersion": 40,
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {},
+ "definition": "label_values(XXX_info,instance)",
+ "label": "Host",
+ "name": "instance",
+ "options": [],
+ "query": {
+ "qryType": 1,
+ "query": "label_values(XXX_info,instance)",
+ "refId": "PrometheusVariableQueryEditor-VariableQuery"
+ },
+ "refresh": 1,
+ "regex": "",
+ "type": "query"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-6h",
+ "to": "now"
+ },
+ "timepicker": {},
+ "timezone": "browser",
+ "title": "XXX Test Dashboard",
+ "uid": "ee217hei8lrswa",
+ "version": 13,
+ "weekStart": ""
+}
diff --git a/scripts/firstName.sh b/scripts/firstName.sh
index 945e417eb..fd811c211 100755
--- a/scripts/firstName.sh
+++ b/scripts/firstName.sh
@@ -13,6 +13,7 @@ done
sed -i "s/XXX/${ARGUMENT_NAME}/" CMakeLists.txt
sed -i "s/XXX/${ARGUMENT_NAME}/" CMakeLists.txt
+sed -i "s/XXX/${ARGUMENT_NAME}/" scripts/GrafanaDashboard-1730032129887.json
sed -i "s/XXX/${ARGUMENT_NAME}/" tests/CMakeLists.txt
sed -i "s/XXX/${ARGUMENT_NAME}/" tests/CMakeLists.txt
sed -i "s/XXX/${ARGUMENT_NAME}/" tests/unittests/CMakeLists.txt
diff --git a/scripts/template.service.in b/scripts/template.service.in
index 42866ce23..fa0fb6c93 100644
--- a/scripts/template.service.in
+++ b/scripts/template.service.in
@@ -3,7 +3,7 @@ Description=@PROJECT_NAME@ service
[Service]
Type=exec
-ExecStart=@EXE_PATH@ --config @CMAKE_INSTALL_PREFIX@/share/@PROJECT_NAME@/config.json --enable-prometheus localhost:2212 --telnet-server 2215 --enable-zeromq tcp://127.0.0.1:2218
+ExecStart=@EXE_PATH@ --config @CMAKE_INSTALL_PREFIX@/share/@PROJECT_NAME@/config.json --enable-prometheus localhost:2212 --enable-telnet 2215 --enable-zeromq tcp://127.0.0.1:2218
[Install]
WantedBy=multi-user.target
diff --git a/src/main.cpp b/src/main.cpp
index 881217d55..0c351ccb9 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -14,7 +14,7 @@
#include
// SIGALRM interval in seconds
-constexpr uintmax_t alarmInterval = 1;
+constexpr uintmax_t alarmInterval = 30;
// Interruption flag
// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
volatile sig_atomic_t interruptFlag = 0;
diff --git a/src/metrics/Performance.cpp b/src/metrics/Performance.cpp
index 0f8b30e4f..47e3b3ed0 100644
--- a/src/metrics/Performance.cpp
+++ b/src/metrics/Performance.cpp
@@ -28,7 +28,7 @@ PerformanceTracker::PerformanceTracker(const std::shared_ptrSet(std::numeric_limits::max());
+ _minTiming->Set(std::numeric_limits::max());
}
void PerformanceTracker::startTimer() { _startTime = std::chrono::high_resolution_clock::now(); }
diff --git a/src/metrics/ProcessMetrics.cpp b/src/metrics/ProcessMetrics.cpp
index 45409a447..3357b208b 100644
--- a/src/metrics/ProcessMetrics.cpp
+++ b/src/metrics/ProcessMetrics.cpp
@@ -87,6 +87,7 @@ size_t ProcessMetrics::getFileDescriptorCount() { return countDirectoryEntries("
void ProcessMetrics::update()
{
+ _pCurrentTime->SetToCurrentTime();
_pMemory->Set(static_cast(getMemoryUsage()));
_pPageFaults->Set(static_cast(getPageFaults()));
_pCpuUsage->Set(getCpuUsage());
@@ -127,6 +128,10 @@ ProcessMetrics::ProcessMetrics(std::shared_ptr checkFlag,
throw std::invalid_argument("Registry is nullptr");
}
+ _pInitTime =
+ &prometheus::BuildGauge().Name("init_time").Help("Initialization time of application").Register(*reg).Add({});
+ _pCurrentTime =
+ &prometheus::BuildGauge().Name("current_time").Help("Current time of application").Register(*reg).Add({});
_pMemory =
&prometheus::BuildGauge().Name("memory_usage").Help("Memory usage of application").Register(*reg).Add({});
_pPageFaults =
@@ -142,6 +147,8 @@ ProcessMetrics::ProcessMetrics(std::shared_ptr checkFlag,
.Register(*reg)
.Add({});
+ _pInitTime->SetToCurrentTime();
+
_thread = std::make_unique(&ProcessMetrics::threadRunner, this);
}
diff --git a/src/telnet/TelnetStats.cpp b/src/telnet/TelnetStats.cpp
index 8b283d616..c3b0bdcd4 100644
--- a/src/telnet/TelnetStats.cpp
+++ b/src/telnet/TelnetStats.cpp
@@ -23,7 +23,8 @@ TelnetStats::TelnetStats(const std::shared_ptr ®, uint1
initBaseStats(reg, name);
// Basic information
- _infoFamily = &prometheus::BuildInfo().Name(name).Help("Telnet server information").Register(*reg);
+ _infoFamily =
+ &prometheus::BuildInfo().Name(name.substr(0, name.size() - 1)).Help("Telnet server information").Register(*reg);
_infoFamily->Add({{"server_port", std::to_string(portNumber)}});
_infoFamily->Add({{"init_time", date::format("%FT%TZ", date::floor(
@@ -74,7 +75,7 @@ TelnetStats::TelnetStats(const std::shared_ptr ®, uint1
.Add({});
// Set defaults
- _minSessionDuration->Set(std::numeric_limits::max());
+ _minSessionDuration->Set(std::numeric_limits::max());
}
void TelnetStats::consumeStats(const TelnetSessionStats &stat, bool sessionClosed)
diff --git a/src/utils/BaseServerStats.cpp b/src/utils/BaseServerStats.cpp
index 72b4e593b..cb05de8f7 100644
--- a/src/utils/BaseServerStats.cpp
+++ b/src/utils/BaseServerStats.cpp
@@ -40,7 +40,7 @@ void BaseServerStats::initBaseStats(const std::shared_ptr
.Add({});
// Set defaults
- _minProcessingTime->Set(std::numeric_limits::max());
+ _minProcessingTime->Set(std::numeric_limits::max());
}
void BaseServerStats::consumeBaseStats(uint64_t succeeded, uint64_t failed, double processingTime)
diff --git a/src/zeromq/ZeroMQStats.cpp b/src/zeromq/ZeroMQStats.cpp
index d9737e8e0..9faa415ba 100644
--- a/src/zeromq/ZeroMQStats.cpp
+++ b/src/zeromq/ZeroMQStats.cpp
@@ -20,7 +20,8 @@ ZeroMQStats::ZeroMQStats(const std::shared_ptr ®, const
initBaseStats(reg, name);
// Basic information
- _infoFamily = &prometheus::BuildInfo().Name("zeromq").Help("ZeroMQ server information").Register(*reg);
+ _infoFamily =
+ &prometheus::BuildInfo().Name(name.substr(0, name.size() - 1)).Help("ZeroMQ server information").Register(*reg);
_infoFamily->Add({{"init_time", date::format("%FT%TZ", date::floor(
std::chrono::high_resolution_clock::now()))}});