diff options
author | Christian Pointner <equinox@spreadspace.org> | 2023-05-26 21:34:14 +0200 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2023-07-17 21:51:22 +0200 |
commit | 695131994b5a749e129fb304e8ba709acd37afe8 (patch) | |
tree | 02111746a1cd0cfc31c5736170b12aafadcb771e /roles/monitoring/grafana | |
parent | make textfile collector for apt packages configurable (diff) |
add support for chrony_exporter (replaces textfile collector)
Diffstat (limited to 'roles/monitoring/grafana')
-rw-r--r-- | roles/monitoring/grafana/defaults/main.yml | 2 | ||||
-rw-r--r-- | roles/monitoring/grafana/files/dashboard-chrony.json (renamed from roles/monitoring/grafana/files/dashboard-chronyd.json) | 758 |
2 files changed, 412 insertions, 348 deletions
diff --git a/roles/monitoring/grafana/defaults/main.yml b/roles/monitoring/grafana/defaults/main.yml index 10eac947..8a113e2d 100644 --- a/roles/monitoring/grafana/defaults/main.yml +++ b/roles/monitoring/grafana/defaults/main.yml @@ -41,7 +41,7 @@ grafana_datasources: [] grafana_dashboards: [] # - file: node-full # datasource: "Prometheus" -# - file: chronyd +# - file: chrony # datasource: "Prometheus" # - file: environment-sensors # datasource: "Prometheus" diff --git a/roles/monitoring/grafana/files/dashboard-chronyd.json b/roles/monitoring/grafana/files/dashboard-chrony.json index 1a401ffa..d6ae5c4f 100644 --- a/roles/monitoring/grafana/files/dashboard-chronyd.json +++ b/roles/monitoring/grafana/files/dashboard-chrony.json @@ -9,12 +9,13 @@ "pluginName": "Prometheus" } ], + "__elements": {}, "__requires": [ { "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "8.2.2" + "version": "10.0.2" }, { "type": "datasource", @@ -30,12 +31,6 @@ }, { "type": "panel", - "id": "state-timeline", - "name": "State timeline", - "version": "" - }, - { - "type": "panel", "id": "table", "name": "Table", "version": "" @@ -51,7 +46,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -68,16 +66,17 @@ }, "editable": true, "fiscalYearStartMonth": 0, - "gnetId": null, "graphTooltip": 1, "id": null, - "iteration": 1642434896568, "links": [], "liveNow": false, "panels": [ { "collapsed": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, "gridPos": { "h": 1, "w": 24, @@ -86,11 +85,23 @@ }, "id": 11, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "refId": "A" + } + ], "title": "Tracking", "type": "row" }, { - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, "description": "", "fieldConfig": { "defaults": { @@ -132,24 +143,31 @@ "text": {}, "textMode": "name" }, - "pluginVersion": "8.2.2", - "repeat": null, + "pluginVersion": "10.0.2", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", "exemplar": false, - "expr": "chronyd_tracking_source{instance=\"$instance\"}", + "expr": "chrony_tracking_info{instance=\"$instance\"}", "format": "time_series", "instant": true, "interval": "", - "legendFormat": "{{ value }}", + "legendFormat": "{{ tracking_address }}", "refId": "A" } ], - "title": "Reference Source", + "title": "Reference Source Address", "type": "stat" }, { - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, "description": "", "fieldConfig": { "defaults": { @@ -199,11 +217,16 @@ "text": {}, "textMode": "value" }, - "pluginVersion": "8.2.2", + "pluginVersion": "10.0.2", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", "exemplar": false, - "expr": "chronyd_tracking_stratum{instance=\"$instance\"}", + "expr": "chrony_tracking_stratum{instance=\"$instance\"}", "instant": true, "interval": "", "legendFormat": "", @@ -214,14 +237,18 @@ "type": "stat" }, { - "datasource": null, - "description": "", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -256,60 +283,87 @@ { "color": "green", "value": null + }, + { + "color": "red", + "value": 80 } ] }, - "unit": "ppm" + "unit": "s" }, "overrides": [] }, "gridPos": { - "h": 8, + "h": 7, "w": 12, "x": 12, "y": 1 }, - "id": 6, + "id": 8, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { - "mode": "single" + "mode": "single", + "sort": "none" } }, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", "exemplar": true, - "expr": "chronyd_tracking_frequency_error{instance=\"$instance\"}", + "expr": "chrony_tracking_last_offset_seconds{instance=\"$instance\"}", "interval": "", - "legendFormat": "Frequency", + "legendFormat": "Last Offset", + "range": true, "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", "exemplar": true, - "expr": "chronyd_tracking_frequency_residual{instance=\"$instance\"}", + "expr": "chrony_tracking_rms_offset_seconds{instance=\"$instance\"}", "hide": false, "interval": "", - "legendFormat": "Residual Frequency", + "legendFormat": "RMS Offset (long term average)", + "range": true, "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", "exemplar": true, - "expr": "chronyd_tracking_frequency_skew{instance=\"$instance\"}", + "expr": "chrony_tracking_system_time_seconds{instance=\"$instance\"}", "hide": false, "interval": "", - "legendFormat": "Skew", + "legendFormat": "System Time", + "range": true, "refId": "C" } ], - "title": "Frequency", + "title": "Offset", "type": "timeseries" }, { - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, "description": "", "fieldConfig": { "defaults": { @@ -351,28 +405,39 @@ "text": {}, "textMode": "name" }, - "pluginVersion": "8.2.2", + "pluginVersion": "10.0.2", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", "exemplar": true, - "expr": "chronyd_tracking_leap_status{instance=\"$instance\"}", + "expr": "chrony_tracking_info{instance=\"$instance\"}", "instant": true, "interval": "", - "legendFormat": "{{ value }}", + "legendFormat": "{{ tracking_refid }}", "refId": "A" } ], - "title": "Leap second status", + "title": "Reference Source ID", "type": "stat" }, { - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "Absolute bound on the computer’s clock accuracy (assuming the stratum-1 computer is correct)", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -407,10 +472,6 @@ { "color": "green", "value": null - }, - { - "color": "red", - "value": 80 } ] }, @@ -419,58 +480,57 @@ "overrides": [] }, "gridPos": { - "h": 10, + "h": 8, "w": 12, "x": 0, "y": 7 }, - "id": 8, + "id": 6, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { - "mode": "single" + "mode": "single", + "sort": "none" } }, "targets": [ { - "exemplar": true, - "expr": "chronyd_tracking_last_offset{instance=\"$instance\"}", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "instance:chrony_clock_error_seconds:abs{instance=\"$instance\"}", + "format": "time_series", + "instant": false, "interval": "", - "legendFormat": "Last Offset", + "legendFormat": "Clock Error", + "range": true, "refId": "A" - }, - { - "exemplar": true, - "expr": "chronyd_tracking_rms_offset{instance=\"$instance\"}", - "hide": false, - "interval": "", - "legendFormat": "RMS Offse (long term average)", - "refId": "B" - }, - { - "exemplar": true, - "expr": "chronyd_tracking_system_time{instance=\"$instance\"}", - "hide": false, - "interval": "", - "legendFormat": "System Time", - "refId": "C" } ], - "title": "Offset", + "title": "Maximum Clock Error", "type": "timeseries" }, { - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -517,36 +577,50 @@ "overrides": [] }, "gridPos": { - "h": 8, + "h": 7, "w": 12, "x": 12, - "y": 9 + "y": 8 }, "id": 9, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { - "mode": "single" + "mode": "single", + "sort": "none" } }, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", "exemplar": true, - "expr": "chronyd_tracking_root_delay{instance=\"$instance\"}", + "expr": "chrony_tracking_root_delay_seconds{instance=\"$instance\"}", "interval": "", "legendFormat": "Root delay", + "range": true, "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", "exemplar": true, - "expr": "chronyd_tracking_root_dispersion{instance=\"$instance\"}", + "expr": "chrony_tracking_root_dispersion_seconds{instance=\"$instance\"}", "hide": false, "interval": "", "legendFormat": "Root dispersion", + "range": true, "refId": "B" } ], @@ -555,20 +629,35 @@ }, { "collapsed": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 17 + "y": 15 }, "id": 13, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "refId": "A" + } + ], "title": "Sources", "type": "row" }, { - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, "description": "", "fieldConfig": { "defaults": { @@ -577,211 +666,234 @@ }, "custom": { "align": "auto", - "displayMode": "color-background-solid", - "filterable": false + "cellOptions": { + "mode": "basic", + "type": "color-background" + }, + "filterable": false, + "inspect": false }, - "mappings": [ - { - "options": { - "0": { - "index": 0, - "text": "may be in error" - }, - "1": { - "index": 1, - "text": "unusable" - }, - "2": { - "index": 2, - "text": "not combined" - }, - "3": { - "index": 3, - "text": "combined" - }, - "4": { - "index": 4, - "text": "current best" - } - }, - "type": "value" - } - ], + "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "transparent", "value": null - }, - { - "color": "red", - "value": 0 - }, - { - "color": "orange", - "value": 1 - }, - { - "color": "blue", - "value": 2 - }, - { - "color": "light-green", - "value": 3 - }, - { - "color": "green", - "value": 4 } ] }, "unit": "none" }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "State" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "candidate": { + "color": "light-green", + "index": 4, + "text": "combined" + }, + "falseticker": { + "color": "orange", + "index": 2, + "text": "falseticker" + }, + "jittery": { + "color": "yellow", + "index": 3, + "text": "jittery" + }, + "outlier": { + "color": "transparent", + "index": 5, + "text": "not combined" + }, + "sync": { + "color": "green", + "index": 0, + "text": "syncronized" + }, + "unreach": { + "color": "red", + "index": 1, + "text": "unreachable" + } + }, + "type": "value" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Polling Interval" + }, + "properties": [ + { + "id": "unit", + "value": "s" + } + ] + } + ] }, "gridPos": { - "h": 7, - "w": 8, + "h": 8, + "w": 24, "x": 0, - "y": 18 + "y": 16 }, "id": 19, "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, "frameIndex": 0, - "showHeader": false + "showHeader": true, + "sortBy": [] }, - "pluginVersion": "8.2.2", - "repeat": null, + "pluginVersion": "10.0.2", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "builder", "exemplar": false, - "expr": "chronyd_peer_status{instance=\"$instance\"}", + "expr": "chrony_sources_state_info{instance=\"$instance\"}", "format": "table", "instant": true, "interval": "", - "legendFormat": "{{ remote }}", + "legendFormat": "__auto", + "range": false, "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "builder", + "exemplar": false, + "expr": "chrony_sources_stratum{instance=\"$instance\"}", + "format": "table", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "builder", + "exemplar": false, + "expr": "chrony_sources_polling_interval_seconds{instance=\"$instance\"}", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "__auto", + "range": false, + "refId": "C" } ], "title": "Current Status", "transformations": [ { + "id": "joinByField", + "options": { + "byField": "source_address", + "mode": "outer" + } + }, + { "id": "organize", "options": { "excludeByName": { "Time": true, + "Time 2": true, + "Value #A": true, + "Value #B": false, "__name__": true, + "__name__ 2": true, "instance": true, + "instance 2": true, "job": true, - "mode": true, - "stratum": true + "job 2": true, + "source_mode": true, + "source_name 2": true, + "source_name 3": true + }, + "indexByName": { + "Time 1": 1, + "Time 2": 9, + "Time 3": 15, + "Value #A": 8, + "Value #B": 14, + "Value #C": 20, + "__name__ 1": 2, + "__name__ 2": 10, + "__name__ 3": 16, + "instance 1": 3, + "instance 2": 11, + "instance 3": 17, + "job 1": 4, + "job 2": 12, + "job 3": 18, + "source_address": 0, + "source_mode": 5, + "source_name 1": 6, + "source_name 2": 13, + "source_name 3": 19, + "source_state": 7 }, - "indexByName": {}, "renameByName": { - "Time": "" + "Value #B": "Stratum", + "Value #C": "Polling Interval", + "source_address": "Address", + "source_name": "Name", + "source_name 1": "Name", + "source_state": "State" } } - }, - { - "id": "sortBy", - "options": { - "fields": {}, - "sort": [ - { - "desc": true, - "field": "Value" - } - ] - } } ], "type": "table" }, { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "fillOpacity": 74, - "lineWidth": 0 - }, - "mappings": [ - { - "options": { - "0": { - "index": 0, - "text": "unreachable" - }, - "1": { - "index": 1, - "text": "ok" - } - }, - "type": "value" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "green", - "value": 1 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 18 + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" }, - "id": 16, - "options": { - "alignValue": "center", - "legend": { - "displayMode": "hidden", - "placement": "bottom" - }, - "mergeValues": true, - "rowHeight": 0.5, - "showValue": "never", - "tooltip": { - "mode": "single" - } - }, - "targets": [ - { - "exemplar": false, - "expr": "max without (stratum) (chronyd_peer_reachable{instance=\"$instance\"})", - "instant": false, - "interval": "", - "legendFormat": "{{ remote }}", - "refId": "A" - } - ], - "title": "Reachability", - "type": "state-timeline" - }, - { - "datasource": null, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -830,122 +942,53 @@ "gridPos": { "h": 7, "w": 8, - "x": 16, - "y": 18 - }, - "id": 17, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ - { - "exemplar": true, - "expr": "chronyd_offset_seconds{instance=\"$instance\"}", - "interval": "", - "legendFormat": "{{ remote }}", - "refId": "A" - } - ], - "title": "Offset", - "type": "timeseries" - }, - { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "smooth", - "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": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "ppm" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 8, "x": 0, - "y": 25 + "y": 24 }, - "id": 15, + "id": 18, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { - "mode": "single" + "mode": "single", + "sort": "none" } }, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "builder", "exemplar": true, - "expr": "chronyd_freq_ppm{instance=\"$instance\"}", + "expr": "chrony_sources_last_sample_age_seconds{instance=\"$instance\"} < 4294967295", "interval": "", - "legendFormat": "{{ remote }}", + "legendFormat": "{{ source_address }} ({{ source_name }})", + "range": true, "refId": "A" } ], - "title": "Frequency", + "title": "Last Sample: Age", "type": "timeseries" }, { - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -987,7 +1030,7 @@ } ] }, - "unit": "ppm" + "unit": "s" }, "overrides": [] }, @@ -995,39 +1038,52 @@ "h": 7, "w": 8, "x": 8, - "y": 25 + "y": 24 }, - "id": 20, + "id": 21, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { - "mode": "single" + "mode": "single", + "sort": "none" } }, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", "exemplar": true, - "expr": "chronyd_freq_skew_ppm{instance=\"$instance\"}", + "expr": "chrony_sources_last_sample_offset_seconds{instance=\"$instance\"}", "interval": "", - "legendFormat": "{{ remote }}", + "legendFormat": "{{ source_address }} ({{ source_name }})", + "range": true, "refId": "A" } ], - "title": "Frequency Skew", + "title": "Last Sample: Offset", "type": "timeseries" }, { - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -1077,54 +1133,61 @@ "h": 7, "w": 8, "x": 16, - "y": 25 + "y": 24 }, - "id": 18, + "id": 20, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { - "mode": "single" + "mode": "single", + "sort": "none" } }, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", "exemplar": true, - "expr": "chronyd_std_dev_seconds{instance=\"$instance\"}", + "expr": "chrony_sources_last_sample_error_margin_seconds{instance=\"$instance\"}", "interval": "", - "legendFormat": "{{ remote }}", + "legendFormat": "{{ source_address }} ({{ source_name }})", + "range": true, "refId": "A" } ], - "title": "Std. Dev.", + "title": "Last Sample: Error Margin", "type": "timeseries" } ], "refresh": "30s", - "schemaVersion": 31, + "schemaVersion": 38, "style": "dark", "tags": [], "templating": { "list": [ { - "allValue": null, "current": {}, - "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(chronyd_tracking_source, instance)", - "description": null, - "error": null, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "label_values(chrony_up,instance)", "hide": 0, "includeAll": false, - "label": null, "multi": false, "name": "instance", "options": [], "query": { - "query": "label_values(chronyd_tracking_source, instance)", - "refId": "StandardVariableQuery" + "query": "label_values(chrony_up,instance)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "refresh": 1, "regex": "", @@ -1140,7 +1203,8 @@ }, "timepicker": {}, "timezone": "", - "title": "chronyd", - "uid": "eIO_Uyd7k", - "version": 3 -} + "title": "chrony", + "uid": "c252be85-471b-41c9-b1cb-f0e1b8206593", + "version": 3, + "weekStart": "" +}
\ No newline at end of file |