{ "title": "OpenLDAP", "uid": "openldap-exporter", "schemaVersion": 39, "version": 1, "editable": true, "timezone": "utc", "time": { "from": "now-6h", "to": "now" }, "refresh": "30s", "templating": { "list": [ { "name": "group", "type": "query", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "query": "label_values(openldap_up, group)", "includeAll": true, "multi": true, "refresh": 2 }, { "name": "target", "type": "query", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "query": "label_values(openldap_up{group=~\"$group\", cluster=~\"$cluster\"}, target)", "includeAll": true, "multi": true, "refresh": 2 }, { "name": "cluster", "type": "query", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "query": "label_values(openldap_up, cluster)", "includeAll": true, "multi": true, "refresh": 2, "regex": "" }, { "name": "datasource", "type": "datasource", "query": "prometheus" } ] }, "annotations": { "list": [ { "name": "Restarts", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "enable": true, "iconColor": "orange", "expr": "resets(openldap_start_time_seconds{target=~\"$target\", cluster=~\"$cluster\"}[10m]) > 0", "titleFormat": "{{target}} restarted" } ] }, "panels": [ { "id": 1, "type": "row", "title": "Overview", "gridPos": { "x": 0, "y": 0, "w": 24, "h": 1 }, "fieldConfig": { "defaults": {} } }, { "id": 960, "type": "gauge", "title": "Nodes up", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "Percentage of OpenLDAP servers answering.", "gridPos": { "x": 0, "y": 1, "w": 4, "h": 5 }, "targets": [ { "refId": "A", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "100 * (sum(openldap_up{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"})) / (count(openldap_up{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}))" } ], "options": { "showThresholdLabels": false, "showThresholdMarkers": true, "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } }, "fieldConfig": { "defaults": { "min": 0, "max": 100, "unit": "percent", "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null }, { "color": "yellow", "value": 80 }, { "color": "green", "value": 100 } ] } }, "overrides": [] } }, { "id": 961, "type": "gauge", "title": "Replication in sync", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "Percentage of nodes within the replication tolerance.", "gridPos": { "x": 4, "y": 1, "w": 4, "h": 5 }, "targets": [ { "refId": "A", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "100 * (sum(openldap_replication_in_sync{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"})) / (count(openldap_replication_in_sync{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}))" } ], "options": { "showThresholdLabels": false, "showThresholdMarkers": true, "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } }, "fieldConfig": { "defaults": { "min": 0, "max": 100, "unit": "percent", "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null }, { "color": "yellow", "value": 80 }, { "color": "green", "value": 100 } ] } }, "overrides": [] } }, { "id": 962, "type": "gauge", "title": "Links healthy", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "Percentage of replication agreements the provider has observed.", "gridPos": { "x": 0, "y": 6, "w": 4, "h": 5 }, "targets": [ { "refId": "A", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "100 * (sum(openldap_syncrepl_link_seen_on_provider{group=~\"$group\", cluster=~\"$cluster\"})) / (count(openldap_syncrepl_link_seen_on_provider{group=~\"$group\", cluster=~\"$cluster\"}))" } ], "options": { "showThresholdLabels": false, "showThresholdMarkers": true, "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } }, "fieldConfig": { "defaults": { "min": 0, "max": 100, "unit": "percent", "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null }, { "color": "yellow", "value": 80 }, { "color": "green", "value": 100 } ] } }, "overrides": [] } }, { "id": 963, "type": "gauge", "title": "Clusters in sync", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "Percentage of directories fully in sync.", "gridPos": { "x": 4, "y": 6, "w": 4, "h": 5 }, "targets": [ { "refId": "A", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "100 * (sum(openldap_replication_group_in_sync{group=~\"$group\", cluster=~\"$cluster\"})) / (count(openldap_replication_group_in_sync{group=~\"$group\", cluster=~\"$cluster\"}))" } ], "options": { "showThresholdLabels": false, "showThresholdMarkers": true, "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } }, "fieldConfig": { "defaults": { "min": 0, "max": 100, "unit": "percent", "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null }, { "color": "yellow", "value": 80 }, { "color": "green", "value": 100 } ] } }, "overrides": [] } }, { "id": 990, "type": "row", "title": "$cluster", "repeat": "cluster", "collapsed": false, "gridPos": { "x": 0, "y": 11, "w": 24, "h": 1 }, "panels": [] }, { "id": 980, "type": "stat", "title": "Nodes", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "OpenLDAP servers in this directory.", "gridPos": { "x": 0, "y": 12, "w": 6, "h": 5 }, "targets": [ { "refId": "A", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "count(openldap_up{cluster=\"$cluster\"})" } ], "options": { "colorMode": "background", "graphMode": "none", "justifyMode": "center", "orientation": "horizontal", "textMode": "value", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } }, "fieldConfig": { "defaults": { "color": { "mode": "fixed", "fixedColor": "blue" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] } }, "overrides": [] } }, { "id": 981, "type": "stat", "title": "Servers up", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "Servers answering right now.", "gridPos": { "x": 6, "y": 12, "w": 6, "h": 5 }, "targets": [ { "refId": "A", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "sum(openldap_up{cluster=\"$cluster\"})" } ], "options": { "colorMode": "background", "graphMode": "none", "justifyMode": "center", "orientation": "horizontal", "textMode": "value", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } }, "fieldConfig": { "defaults": { "color": { "mode": "fixed", "fixedColor": "green" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] } }, "overrides": [] } }, { "id": 982, "type": "stat", "title": "Records", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "Directory entries this cluster holds (one copy, NOT multiplied by node count). Every node should hold the same number \u2014 a lower value on one node means replication has not delivered those entries yet.", "gridPos": { "x": 12, "y": 12, "w": 6, "h": 5 }, "targets": [ { "refId": "A", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "max(openldap_entries{cluster=\"$cluster\", name=\"all\"})" } ], "options": { "colorMode": "background", "graphMode": "none", "justifyMode": "center", "orientation": "horizontal", "textMode": "value", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } }, "fieldConfig": { "defaults": { "color": { "mode": "fixed", "fixedColor": "orange" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] } }, "overrides": [] } }, { "id": 983, "type": "stat", "title": "In sync", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "Nodes within the replication tolerance.", "gridPos": { "x": 18, "y": 12, "w": 6, "h": 5 }, "targets": [ { "refId": "A", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "sum(openldap_replication_in_sync{cluster=\"$cluster\"})" } ], "options": { "colorMode": "background", "graphMode": "none", "justifyMode": "center", "orientation": "horizontal", "textMode": "value", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } }, "fieldConfig": { "defaults": { "color": { "mode": "fixed", "fixedColor": "purple" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] } }, "overrides": [] } }, { "id": 940, "type": "table", "title": "Nodes", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "One row per OpenLDAP server in this cluster. Up, Records (entries), Change sets (contextCSN sids), In sync, Last change (newest contextCSN timestamp) and Worst lag are all per node, so a node that has fallen behind shows on its own row. Identical Last change across a cluster means the nodes have converged on the same newest change. Role is hidden: every node in a multi-provider mesh is labelled provider.", "gridPos": { "x": 0, "y": 17, "w": 24, "h": 5 }, "targets": [ { "refId": "A", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum by (cluster, group, target, role) (openldap_up{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"})", "instant": true, "format": "table" }, { "refId": "B", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum by (cluster, group, target, role) (openldap_entries{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\", name=\"all\"})", "instant": true, "format": "table" }, { "refId": "C", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "max by (cluster, group, target, role) (openldap_context_csn_sids{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"})", "instant": true, "format": "table" }, { "refId": "D", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "sum by (cluster, group, target, role) (openldap_replication_in_sync{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"})" }, { "refId": "E", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "max by (cluster, group, target, role) (openldap_replication_lag_seconds{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"})" }, { "refId": "F", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "instant": true, "format": "table", "expr": "max by (cluster, group, target, role) (openldap_context_csn_timestamp_seconds{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}) * 1000" } ], "transformations": [ { "id": "labelsToFields", "options": {} }, { "id": "merge", "options": {} }, { "id": "organize", "options": { "excludeByName": { "Time": true, "__name__": true, "instance": true, "job": true, "cluster": true, "group": true, "role": true }, "renameByName": { "cluster": "Cluster", "group": "Group", "target": "Node", "role": "Role", "Value #A": "Up", "Value #B": "Records", "Value #C": "Change sets", "Value #D": "In sync", "Value #E": "Worst lag (s)", "Value #F": "Last change" } } } ], "fieldConfig": { "defaults": { "custom": { "align": "auto" } }, "overrides": [ { "matcher": { "id": "byName", "options": "Up" }, "properties": [ { "id": "custom.cellOptions", "value": { "type": "color-background" } }, { "id": "mappings", "value": [ { "type": "value", "options": { "0": { "text": "DOWN", "color": "red", "index": 0 }, "1": { "text": "up", "color": "green", "index": 1 } } } ] } ] }, { "matcher": { "id": "byName", "options": "Records" }, "properties": [ { "id": "custom.cellOptions", "value": { "type": "color-background" } }, { "id": "color", "value": { "mode": "continuous-Blues" } } ] }, { "matcher": { "id": "byName", "options": "In sync" }, "properties": [ { "id": "custom.cellOptions", "value": { "type": "color-background" } }, { "id": "mappings", "value": [ { "type": "value", "options": { "0": { "text": "OUT OF SYNC", "color": "red", "index": 0 }, "1": { "text": "in sync", "color": "green", "index": 1 } } } ] } ] }, { "matcher": { "id": "byName", "options": "Worst lag (s)" }, "properties": [ { "id": "unit", "value": "s" } ] }, { "matcher": { "id": "byName", "options": "Last change" }, "properties": [ { "id": "unit", "value": "dateTimeAsIso" }, { "id": "custom.width", "value": 170 } ] } ] } }, { "id": 401, "type": "table", "title": "Replication topology", "description": "One row per replication agreement. \"Consumer\" pulls from \"Provider\" - in a multi-provider mesh every node is both, which is why each node appears in both columns. Link seen = the provider actually observed that consumer connect; NO means the link is dead even though both nodes look healthy.", "gridPos": { "x": 8, "y": 1, "w": 16, "h": 10 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "targets": [ { "refId": "edges", "format": "table", "instant": true, "expr": "openldap_syncrepl_link_seen_on_provider{group=~\"$group\", cluster=~\"$cluster\"}" } ], "transformations": [ { "id": "labelsToFields", "options": {} }, { "id": "organize", "options": { "excludeByName": { "Time": true, "__name__": true, "instance": true, "job": true, "link_id": true }, "renameByName": { "consumer": "Consumer (pulls from)", "provider": "Provider (serves)", "rid": "Agreement (RID)", "group": "Group", "cluster": "Cluster", "Value": "Link seen" } } } ], "fieldConfig": { "defaults": { "custom": { "align": "auto" } }, "overrides": [ { "matcher": { "id": "byName", "options": "Link seen" }, "properties": [ { "id": "custom.cellOptions", "value": { "type": "color-background" } }, { "id": "mappings", "value": [ { "type": "value", "options": { "0": { "text": "NO", "color": "red", "index": 0 }, "1": { "text": "yes", "color": "green", "index": 1 } } } ] } ] } ] }, "options": { "showHeader": true, "cellHeight": "sm" } }, { "id": 100, "type": "row", "title": "Replication", "gridPos": { "x": 0, "y": 22, "w": 24, "h": 1 }, "fieldConfig": { "defaults": {} } }, { "id": 101, "type": "timeseries", "title": "Replication lag by sid", "gridPos": { "x": 0, "y": 23, "w": 12, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "How far each target is behind the newest known value for each contextCSN sid within its group.", "targets": [ { "expr": "openldap_replication_lag_seconds{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}", "legendFormat": "{{target}} sid={{sid}}" } ], "fieldConfig": { "defaults": { "unit": "s", "custom": { "drawStyle": "line", "fillOpacity": 22, "lineWidth": 2, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" }, "thresholds": { "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 30 }, { "color": "red", "value": 300 } ] }, "color": { "mode": "continuous-Blues" } } } }, { "id": 102, "type": "state-timeline", "title": "In sync (by target, per suffix)", "gridPos": { "x": 12, "y": 23, "w": 12, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "targets": [ { "expr": "openldap_replication_in_sync{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}", "legendFormat": "{{target}} {{suffix}}" } ], "fieldConfig": { "defaults": { "mappings": [ { "type": "value", "options": { "0": { "text": "OUT OF SYNC", "color": "red" }, "1": { "text": "in sync", "color": "green" } } } ] } } }, { "id": 103, "type": "table", "title": "Sids missing per target", "gridPos": { "x": 0, "y": 29, "w": 12, "h": 7 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "A sid another group member carries that this target does not. A QA-group sid missing on a prod-only target is the one-way guarantee working as designed - check role before alerting.", "targets": [ { "expr": "openldap_replication_sid_missing{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"} == 1", "format": "table", "instant": true } ], "transformations": [ { "id": "organize", "options": { "excludeByName": { "Time": true, "Value": true, "__name__": true } } } ], "fieldConfig": { "defaults": {} } }, { "id": 104, "type": "table", "title": "Consumer links seen by providers", "gridPos": { "x": 12, "y": 29, "w": 12, "h": 7 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "One row per consumer node: min of openldap_syncrepl_link_seen_on_provider over its agreements, so 1 means every provider observed that node connect and 0 means at least one provider never saw it - the link is dead even though the consumer's own socket may look healthy. See runbook: 5.HISTORY-DEBUG-QA-SYNC.md. Per-agreement detail is in the Overview's Replication topology.", "targets": [ { "expr": "min by (cluster, group, consumer) (openldap_syncrepl_link_seen_on_provider{group=~\"$group\", cluster=~\"$cluster\"})", "format": "table", "instant": true } ], "transformations": [ { "id": "organize", "options": { "excludeByName": { "Time": true, "__name__": true, "instance": true, "job": true, "link_id": true, "group": true }, "renameByName": { "Value": "All links seen", "consumer": "Node", "cluster": "Cluster" } } } ], "fieldConfig": { "overrides": [ { "matcher": { "id": "byName", "options": "All links seen" }, "properties": [ { "id": "custom.cellOptions", "value": { "type": "color-background" } }, { "id": "mappings", "value": [ { "type": "value", "options": { "0": { "text": "NO", "color": "red", "index": 0 }, "1": { "text": "yes", "color": "green", "index": 1 } } } ] } ] } ], "defaults": {} } }, { "id": 200, "type": "row", "title": "cn=Monitor", "gridPos": { "x": 0, "y": 36, "w": 24, "h": 1 }, "fieldConfig": { "defaults": {} } }, { "id": 201, "type": "timeseries", "title": "Operations / sec", "gridPos": { "x": 0, "y": 37, "w": 8, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "targets": [ { "expr": "sum by (target, operation) (rate(openldap_operations_completed_total{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}[5m]))", "legendFormat": "{{target}} {{operation}}" } ], "fieldConfig": { "defaults": { "unit": "ops", "custom": { "drawStyle": "line", "fillOpacity": 22, "stacking": { "mode": "normal" }, "lineWidth": 2, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" }, "color": { "mode": "continuous-Blues" } } } }, { "id": 202, "type": "timeseries", "title": "Current connections", "gridPos": { "x": 8, "y": 37, "w": 8, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "targets": [ { "expr": "openldap_connections_current{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}", "legendFormat": "{{target}}" } ], "fieldConfig": { "defaults": { "custom": { "drawStyle": "line", "fillOpacity": 22, "lineWidth": 2, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" }, "color": { "mode": "continuous-Blues" } } } }, { "id": 203, "type": "timeseries", "title": "Thread pool: active / max", "gridPos": { "x": 16, "y": 37, "w": 8, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "targets": [ { "expr": "openldap_threads{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\", kind=\"active\"}", "legendFormat": "{{target}} active" }, { "expr": "openldap_threads{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\", kind=\"max\"}", "legendFormat": "{{target}} max" } ], "fieldConfig": { "defaults": { "custom": { "drawStyle": "line", "fillOpacity": 22, "lineWidth": 2, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" }, "color": { "mode": "continuous-Blues" } } } }, { "id": 204, "type": "timeseries", "title": "Pending operations", "gridPos": { "x": 0, "y": 43, "w": 8, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "targets": [ { "expr": "openldap_threads{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\", kind=\"pending\"}", "legendFormat": "{{target}}" } ], "fieldConfig": { "defaults": { "custom": { "drawStyle": "line", "fillOpacity": 22, "lineWidth": 2, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" }, "thresholds": { "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 10 } ] }, "color": { "mode": "continuous-Blues" } } } }, { "id": 205, "type": "timeseries", "title": "Bytes / sec to clients", "gridPos": { "x": 8, "y": 43, "w": 8, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "targets": [ { "expr": "rate(openldap_statistics_bytes_total{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}[5m])", "legendFormat": "{{target}}" } ], "fieldConfig": { "defaults": { "unit": "Bps", "custom": { "drawStyle": "line", "fillOpacity": 22, "lineWidth": 2, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" }, "color": { "mode": "continuous-Blues" } } } }, { "id": 206, "type": "timeseries", "title": "Bind duration", "gridPos": { "x": 16, "y": 43, "w": 8, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "targets": [ { "expr": "openldap_bind_duration_seconds{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}", "legendFormat": "{{target}}" } ], "fieldConfig": { "defaults": { "unit": "s", "custom": { "drawStyle": "line", "fillOpacity": 22, "lineWidth": 2, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" }, "color": { "mode": "continuous-Blues" } } } }, { "id": 300, "type": "row", "title": "Capacity", "gridPos": { "x": 0, "y": 49, "w": 24, "h": 1 }, "fieldConfig": { "defaults": {} } }, { "id": 301, "type": "timeseries", "title": "LMDB map used ratio", "gridPos": { "x": 0, "y": 50, "w": 8, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "LMDB fails hard (MDB_MAP_FULL) at 100%. Raise olcDbMaxSize before this reaches the red line.", "targets": [ { "expr": "openldap_mdb_pages_used_ratio{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}", "legendFormat": "{{target}} {{database}}" } ], "fieldConfig": { "defaults": { "unit": "percentunit", "max": 1, "custom": { "drawStyle": "line", "fillOpacity": 22, "lineWidth": 2, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" }, "thresholds": { "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 0.8 }, { "color": "red", "value": 0.95 } ] }, "color": { "mode": "continuous-Blues" } } } }, { "id": 302, "type": "timeseries", "title": "Entry counts", "gridPos": { "x": 8, "y": 50, "w": 8, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "targets": [ { "expr": "openldap_entries{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}", "legendFormat": "{{target}} {{name}}" } ], "fieldConfig": { "defaults": { "custom": { "drawStyle": "line", "fillOpacity": 22, "lineWidth": 2, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" }, "color": { "mode": "continuous-Blues" } } } }, { "id": 303, "type": "timeseries", "title": "Clock offset vs exporter wall clock", "gridPos": { "x": 16, "y": 50, "w": 8, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "description": "A CSN is a timestamp. Skew reorders writes.", "targets": [ { "expr": "openldap_clock_offset_seconds{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"}", "legendFormat": "{{target}}" } ], "fieldConfig": { "defaults": { "unit": "s", "custom": { "drawStyle": "line", "fillOpacity": 22, "lineWidth": 2, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" }, "thresholds": { "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 5 } ] }, "color": { "mode": "continuous-Blues" } } } }, { "id": 304, "type": "timeseries", "title": "TLS certificate days remaining", "gridPos": { "x": 0, "y": 56, "w": 8, "h": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" }, "targets": [ { "expr": "(openldap_tls_certificate_expiry_seconds{group=~\"$group\", cluster=~\"$cluster\", target=~\"$target\"} - time()) / 86400", "legendFormat": "{{target}}" } ], "fieldConfig": { "defaults": { "unit": "d", "thresholds": { "steps": [ { "color": "red", "value": null }, { "color": "yellow", "value": 14 }, { "color": "green", "value": 30 } ] }, "color": { "mode": "continuous-Blues" }, "custom": { "lineWidth": 2, "fillOpacity": 22, "gradientMode": "opacity", "showPoints": "never", "lineInterpolation": "smooth" } } } } ], "description": "OpenLDAP 2.6 monitoring: replication topology and convergence (contextCSN), syncrepl agreement links, LMDB, cn=Monitor operations and TLS expiry. Built for the vibhuvioio/openldap-exporter. Pick your Prometheus with the datasource variable; clusters appear automatically from the 'cluster' label your Prometheus attaches to each exporter.", "tags": [ "openldap", "ldap", "replication", "syncrepl" ] }