Files
threadnet-operating/monitoring/grafana/dashboards/matrix/flux2.json
T
sorbandClaude Opus 5 f9a9cb406f monitoring: Stack vollstaendig provisionierbar machen
- Grafana-Provisioning ergaenzt: Datasources (prometheus/loki) mit den
  bestehenden UIDs, damit alle Dashboards weiter funktionieren, sowie vier
  Dashboard-Provider passend zu den vorhandenen Ordnern.
- 9 Dashboards aus der laufenden Instanz exportiert und bereinigt: id/version
  entfernt, hart kodierte und verwaiste Datasource-UIDs auf die
  provisionierten UIDs umgeschrieben.
- Images von :latest auf feste Versionen gepinnt (Prometheus v3.3.1,
  Loki 3.7.1, Alloy v1.16.0, Grafana 12.0.0, node-exporter v1.9.1).
- Alloy: Docker-Metadaten (container, compose_service, compose_project) als
  Loki-Labels via discovery.relabel.
- .env-Variablen auf GRAFANA_ADMIN_USER/GRAFANA_ADMIN_PASSWORD vereinheitlicht,
  .env.example ergaenzt, .env bleibt ungetrackt.
- prometheus.yml kommentiert (Remote-Write-Quellen, Fremd-Stack-Targets),
  toten auskommentierten Matrix-Job entfernt.
- README mit Deployment, Struktur, externen Abhaengigkeiten und offenen
  Sicherheitspunkten (offene Ports 9090/3100/9100).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 12:13:01 +02:00

1181 lines
29 KiB
JSON

{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"description": "Basic monitoring of FluxCD resources.",
"editable": true,
"fiscalYearStartMonth": 0,
"gnetId": 16714,
"graphTooltip": 1,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"description": "",
"fieldConfig": {
"defaults": {
"decimals": 0,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "semi-dark-blue",
"value": null
},
{
"color": "dark-red",
"value": 100
}
]
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 0,
"y": 0
},
"id": 29,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"last"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "value"
},
"pluginVersion": "9.0.5",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"expr": "count(gotk_reconcile_condition{exported_namespace=~\"$namespace\",type=\"Ready\",status=\"True\",kind=~\"GitRepository|HelmRepository|Bucket\"})\n-\nsum(gotk_reconcile_condition{exported_namespace=~\"$namespace\",type=\"Ready\",status=\"Deleted\",kind=~\"GitRepository|HelmRepository|Bucket\"})",
"interval": "",
"legendFormat": "",
"refId": "A"
}
],
"title": "Sources",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"description": "",
"fieldConfig": {
"defaults": {
"decimals": 0,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-green",
"value": null
},
{
"color": "dark-red",
"value": 1
}
]
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 3,
"y": 0
},
"id": 30,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"last"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "value"
},
"pluginVersion": "9.0.5",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"expr": "sum(gotk_reconcile_condition{exported_namespace=~\"$namespace\",type=\"Ready\",status=\"False\",kind=~\"GitRepository|HelmRepository|Bucket\"})",
"interval": "",
"legendFormat": "",
"refId": "A"
}
],
"title": "Failing sources",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"description": "",
"fieldConfig": {
"defaults": {
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-green",
"value": null
},
{
"color": "dark-orange",
"value": 1
},
{
"color": "dark-red",
"value": 30
}
]
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 6,
"x": 6,
"y": 0
},
"id": 31,
"options": {
"displayMode": "basic",
"minVizHeight": 10,
"minVizWidth": 0,
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"mean"
],
"fields": "",
"values": false
},
"showUnfilled": true,
"text": {}
},
"pluginVersion": "9.0.5",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"expr": "sum(rate(gotk_reconcile_duration_seconds_sum{exported_namespace=~\"$namespace\",kind=~\"GitRepository|HelmRepository|Bucket\"}[5m])) by (kind)\n/\nsum(rate(gotk_reconcile_duration_seconds_count{exported_namespace=~\"$namespace\",kind=~\"GitRepository|HelmRepository|Bucket\"}[5m])) by (kind)",
"interval": "",
"legendFormat": "{{kind}}",
"refId": "A"
}
],
"title": "Avg. source reconciliation",
"type": "bargauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"description": "",
"fieldConfig": {
"defaults": {
"decimals": 0,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "semi-dark-blue",
"value": null
},
{
"color": "dark-red",
"value": 100
}
]
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 12,
"y": 0
},
"id": 24,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"last"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "value"
},
"pluginVersion": "9.0.5",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"exemplar": true,
"expr": "count(gotk_reconcile_condition{exported_namespace=~\"$namespace\",type=\"Ready\",status=\"True\",kind=~\"Kustomization|HelmRelease\"})\n-\nsum(gotk_reconcile_condition{exported_namespace=~\"$namespace\",type=\"Ready\",status=\"Deleted\",kind=~\"Kustomization|HelmRelease\"})",
"interval": "",
"legendFormat": "",
"refId": "A"
}
],
"title": "Applications",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"description": "",
"fieldConfig": {
"defaults": {
"decimals": 0,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-green",
"value": null
},
{
"color": "dark-red",
"value": 1
}
]
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 15,
"y": 0
},
"id": 28,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"last"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "value"
},
"pluginVersion": "9.0.5",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"expr": "sum(gotk_reconcile_condition{exported_namespace=~\"$namespace\",type=\"Ready\",status=\"False\",kind=~\"Kustomization|HelmRelease\"})",
"interval": "",
"legendFormat": "",
"refId": "A"
}
],
"title": "Failing application",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"description": "",
"fieldConfig": {
"defaults": {
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-green",
"value": null
},
{
"color": "dark-orange",
"value": 1
},
{
"color": "dark-red",
"value": 30
}
]
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 6,
"x": 18,
"y": 0
},
"id": 8,
"options": {
"displayMode": "basic",
"minVizHeight": 10,
"minVizWidth": 0,
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"mean"
],
"fields": "",
"values": false
},
"showUnfilled": true,
"text": {}
},
"pluginVersion": "9.0.5",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"expr": "sum(rate(gotk_reconcile_duration_seconds_sum{exported_namespace=~\"$namespace\",kind=~\"Kustomization|HelmRelease\"}[5m])) by (kind)\n/\nsum(rate(gotk_reconcile_duration_seconds_count{exported_namespace=~\"$namespace\",kind=~\"Kustomization|HelmRelease\"}[5m])) by (kind)",
"interval": "",
"legendFormat": "{{kind}}",
"refId": "A"
}
],
"title": "Avg. app reconciliation",
"type": "bargauge"
},
{
"collapsed": false,
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 4
},
"id": 15,
"panels": [],
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"refId": "A"
}
],
"title": "Status",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"description": "",
"fieldConfig": {
"defaults": {
"custom": {
"align": "auto",
"displayMode": "color-background-solid",
"filterable": true,
"inspect": false
},
"mappings": [
{
"options": {
"-1": {
"color": "dark-orange",
"index": 2,
"text": "Yes"
},
"-2": {
"color": "dark-green",
"index": 3,
"text": "No"
},
"0": {
"color": "dark-green",
"index": 1,
"text": "Yes"
},
"1": {
"color": "dark-red",
"index": 0,
"text": "No"
}
},
"type": "value"
}
],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "transparent",
"value": null
}
]
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Status"
},
"properties": [
{
"id": "custom.displayMode",
"value": "color-background"
}
]
}
]
},
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 5
},
"id": 34,
"options": {
"footer": {
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true
},
"pluginVersion": "9.0.5",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"expr": "label_join(gotk_reconcile_condition{exported_namespace=~\"$namespace\",type=\"Ready\",status=\"False\",kind=~\"GitRepository|HelmRepository|Bucket\"}, \"join_key\", \",\", \"kind\", \"exported_namespace\", \"name\")",
"format": "table",
"instant": true,
"interval": "",
"legendFormat": "",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"editorMode": "code",
"expr": "label_join(gotk_suspend_status{exported_namespace=~\"$namespace\",kind=~\"GitRepository|HelmRepository|Bucket\"} - 2, \"join_key\", \",\", \"kind\", \"exported_namespace\", \"name\")",
"format": "table",
"hide": false,
"legendFormat": "__auto",
"range": true,
"refId": "B"
}
],
"title": "Source acquisition readiness ",
"transformations": [
{
"id": "seriesToColumns",
"options": {
"byField": "join_key"
}
},
{
"id": "organize",
"options": {
"excludeByName": {
"Time 1": true,
"Time 2": true,
"Value #A": false,
"__name__": true,
"__name__ 1": true,
"__name__ 2": true,
"container 1": true,
"container 2": true,
"endpoint 1": true,
"endpoint 2": true,
"exported_namespace 2": true,
"instance 1": true,
"instance 2": true,
"job 1": true,
"job 2": true,
"join_key": true,
"kind 2": true,
"name 2": true,
"namespace 1": true,
"namespace 2": true,
"pod 1": true,
"pod 2": true,
"status": true,
"type": true
},
"indexByName": {
"Time 1": 6,
"Time 2": 16,
"Value #A": 4,
"Value #B": 3,
"__name__ 1": 7,
"__name__ 2": 17,
"container 1": 8,
"container 2": 18,
"endpoint 1": 9,
"endpoint 2": 19,
"exported_namespace 1": 1,
"exported_namespace 2": 20,
"instance 1": 10,
"instance 2": 21,
"job 1": 11,
"job 2": 22,
"join_key": 5,
"kind 1": 0,
"kind 2": 23,
"name 1": 2,
"name 2": 24,
"namespace 1": 12,
"namespace 2": 25,
"pod 1": 13,
"pod 2": 26,
"status": 14,
"type": 15
},
"renameByName": {
"Value #A": "Ready",
"Value #B": "Suspended",
"exported_namespace 1": "Namespace",
"kind 1": "Kind",
"name 1": "Name"
}
}
},
{
"id": "sortBy",
"options": {
"fields": {},
"sort": [
{
"field": "Kind"
}
]
}
},
{
"id": "filterByValue",
"options": {
"filters": [
{
"config": {
"id": "isNull",
"options": {}
},
"fieldName": "Ready"
}
],
"match": "any",
"type": "exclude"
}
}
],
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "auto",
"displayMode": "color-background-solid",
"filterable": true,
"inspect": false
},
"mappings": [
{
"options": {
"-1": {
"color": "dark-orange",
"index": 2,
"text": "Yes"
},
"-2": {
"color": "dark-green",
"index": 3,
"text": "No"
},
"0": {
"color": "dark-green",
"index": 1,
"text": "Yes"
},
"1": {
"color": "dark-red",
"index": 0,
"text": "No"
}
},
"type": "value"
}
],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "transparent",
"value": null
}
]
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Status"
},
"properties": [
{
"id": "custom.displayMode",
"value": "color-background"
}
]
}
]
},
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 5
},
"id": 33,
"options": {
"footer": {
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true
},
"pluginVersion": "9.0.5",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"expr": "label_join(gotk_reconcile_condition{exported_namespace=~\"$namespace\",type=\"Ready\",status=\"False\",kind=~\"Kustomization|HelmRelease\"}, \"join_key\", \",\", \"kind\", \"exported_namespace\", \"name\")",
"format": "table",
"instant": true,
"interval": "",
"legendFormat": "",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"editorMode": "code",
"expr": "label_join(gotk_suspend_status{exported_namespace=~\"$namespace\",kind=~\"Kustomization|HelmRelease\"} - 2, \"join_key\", \",\", \"kind\", \"exported_namespace\", \"name\")",
"format": "table",
"hide": false,
"range": true,
"refId": "B"
}
],
"title": "Application reconciliation readiness ",
"transformations": [
{
"id": "seriesToColumns",
"options": {
"byField": "join_key"
}
},
{
"id": "organize",
"options": {
"excludeByName": {
"Time": true,
"Time 1": true,
"Time 2": true,
"Value": true,
"__name__": true,
"container": true,
"container 1": true,
"container 2": true,
"endpoint": true,
"endpoint 1": true,
"endpoint 2": true,
"exported_namespace 2": true,
"instance": true,
"instance 1": true,
"instance 2": true,
"job": true,
"job 1": true,
"job 2": true,
"join_key": true,
"kind 2": true,
"name 2": true,
"namespace": true,
"namespace 1": true,
"namespace 2": true,
"pod": true,
"pod 2": true,
"status": true,
"type": true
},
"indexByName": {
"Time 1": 6,
"Time 2": 16,
"Value #A": 4,
"Value #B": 3,
"__name__": 7,
"container 1": 8,
"container 2": 17,
"endpoint 1": 9,
"endpoint 2": 18,
"exported_namespace 1": 1,
"exported_namespace 2": 19,
"instance 1": 10,
"instance 2": 20,
"job 1": 11,
"job 2": 21,
"join_key": 5,
"kind 1": 0,
"kind 2": 22,
"name 1": 2,
"name 2": 23,
"namespace 1": 12,
"namespace 2": 24,
"pod 1": 13,
"pod 2": 25,
"status": 14,
"type": 15
},
"renameByName": {
"Value #A": "Ready",
"Value #B": "Suspended",
"exported_namespace 1": "Namespace",
"kind 1": "Kind",
"name 1": "Name"
}
}
},
{
"id": "sortBy",
"options": {
"fields": {},
"sort": [
{
"field": "Kind"
}
]
}
},
{
"id": "filterByValue",
"options": {
"filters": [
{
"config": {
"id": "isNull",
"options": {}
},
"fieldName": "Ready"
}
],
"match": "any",
"type": "exclude"
}
}
],
"type": "table"
},
{
"collapsed": false,
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 14
},
"id": 17,
"panels": [],
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"refId": "A"
}
],
"title": "Timing",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "always",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 24,
"x": 0,
"y": 15
},
"id": 37,
"options": {
"legend": {
"calcs": [
"mean",
"lastNotNull"
],
"displayMode": "table",
"placement": "right"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"editorMode": "code",
"expr": "sum(rate(gotk_reconcile_duration_seconds_sum{exported_namespace=~\"$namespace\",kind=~\"GitRepository|HelmRepository|Bucket\"}[5m])) by (kind, exported_namespace, name)\n/\nsum(rate(gotk_reconcile_duration_seconds_count{exported_namespace=~\"$namespace\",kind=~\"GitRepository|HelmRepository|Bucket\"}[5m])) by (kind, exported_namespace, name)",
"format": "time_series",
"legendFormat": "{{kind}}: {{exported_namespace}}/{{name}}",
"range": true,
"refId": "A"
}
],
"title": "Source reconciliation duration",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "always",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 24,
"x": 0,
"y": 25
},
"id": 38,
"options": {
"legend": {
"calcs": [
"mean",
"lastNotNull"
],
"displayMode": "table",
"placement": "right"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "belof8d814dtse"
},
"editorMode": "code",
"expr": "sum(rate(gotk_reconcile_duration_seconds_sum{exported_namespace=~\"$namespace\",kind=~\"Kustomization|HelmRelease\"}[5m])) by (kind, name, exported_namespace)\n/\nsum(rate(gotk_reconcile_duration_seconds_count{exported_namespace=~\"$namespace\",kind=~\"Kustomization|HelmRelease\"}[5m])) by (kind, name, exported_namespace)",
"format": "time_series",
"legendFormat": "{{kind}}: {{exported_namespace}}/{{name}}",
"range": true,
"refId": "A"
}
],
"title": "Application reconciliation duration",
"type": "timeseries"
}
],
"refresh": "10s",
"schemaVersion": 36,
"style": "light",
"tags": [
"flux",
"flux2",
"gitops",
"toolkit",
"weave",
"fluxcd"
],
"templating": {
"list": [
{
"current": {
"selected": false,
"text": "Prometheus",
"value": "Prometheus"
},
"hide": 2,
"includeAll": false,
"multi": false,
"name": "DS_PROMETHEUS",
"options": [],
"query": "prometheus",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"type": "datasource"
},
{
"allValue": ".*",
"current": {},
"datasource": {
"type": "prometheus",
"uid": "$DS_PROMETHEUS"
},
"definition": "label_values(gotk_reconcile_condition, exported_namespace)",
"hide": 0,
"includeAll": true,
"multi": false,
"name": "namespace",
"options": [],
"query": {
"query": "label_values(gotk_reconcile_condition, exported_namespace)",
"refId": "StandardVariableQuery"
},
"refresh": 2,
"regex": "",
"skipUrlSync": false,
"sort": 5,
"tagValuesQuery": "",
"tagsQuery": "",
"type": "query",
"useTags": false
}
]
},
"time": {
"from": "now-15m",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
]
},
"timezone": "",
"title": "Flux2",
"uid": "eM7_f4V7z",
"version": 1,
"weekStart": ""
}