From 2778f6582c10ca2dc8d8274af5b198c68026e3df Mon Sep 17 00:00:00 2001 From: Ultradesu Date: Tue, 5 May 2026 19:06:01 +0100 Subject: [PATCH] Added grafana to keycloak. clean up prom-stak --- .../auth-proxy-dashboard-cm.yaml | 0 .../{ => dashboards}/telemt-dashboard-cm.yaml | 0 k8s/core/prom-stack/furumi-dashboard-cm.yaml | 669 ------------------ k8s/core/prom-stack/kustomization.yaml | 5 +- terraform/keycloak/main.tf | 4 +- terraform/keycloak/terraform.tfvars | 9 +- 6 files changed, 11 insertions(+), 676 deletions(-) rename k8s/core/prom-stack/{ => dashboards}/auth-proxy-dashboard-cm.yaml (100%) rename k8s/core/prom-stack/{ => dashboards}/telemt-dashboard-cm.yaml (100%) delete mode 100644 k8s/core/prom-stack/furumi-dashboard-cm.yaml diff --git a/k8s/core/prom-stack/auth-proxy-dashboard-cm.yaml b/k8s/core/prom-stack/dashboards/auth-proxy-dashboard-cm.yaml similarity index 100% rename from k8s/core/prom-stack/auth-proxy-dashboard-cm.yaml rename to k8s/core/prom-stack/dashboards/auth-proxy-dashboard-cm.yaml diff --git a/k8s/core/prom-stack/telemt-dashboard-cm.yaml b/k8s/core/prom-stack/dashboards/telemt-dashboard-cm.yaml similarity index 100% rename from k8s/core/prom-stack/telemt-dashboard-cm.yaml rename to k8s/core/prom-stack/dashboards/telemt-dashboard-cm.yaml diff --git a/k8s/core/prom-stack/furumi-dashboard-cm.yaml b/k8s/core/prom-stack/furumi-dashboard-cm.yaml deleted file mode 100644 index fbeefa1..0000000 --- a/k8s/core/prom-stack/furumi-dashboard-cm.yaml +++ /dev/null @@ -1,669 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: furumi-server-dashboard - labels: - grafana_dashboard: "1" -data: - furumi-server.json: |- - { - "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": [], - "liveNow": false, - "panels": [ - { - "gridPos": { - "h": 4, - "w": 6, - "x": 0, - "y": 0 - }, - "id": 1, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calc": "lastNotNull", - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "10.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(furumi_active_streams)", - "refId": "A" - } - ], - "title": "Active Streams", - "type": "stat" - }, - { - "gridPos": { - "h": 4, - "w": 6, - "x": 6, - "y": 0 - }, - "id": 2, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calc": "rate", - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "10.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(rate(furumi_bytes_read_total[$__rate_interval]))", - "refId": "A" - } - ], - "title": "Bytes Read / Sec", - "type": "stat", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "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": "green", - "value": null - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - } - }, - { - "gridPos": { - "h": 4, - "w": 6, - "x": 12, - "y": 0 - }, - "id": 3, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calc": "lastNotNull", - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "10.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(increase(furumi_file_open_errors_total[$__rate_interval]))", - "refId": "A" - } - ], - "title": "File Open Errors (Rate)", - "type": "stat", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { "color": "green", "value": null }, - { "color": "red", "value": 1 } - ] - } - }, - "overrides": [] - } - }, - { - "gridPos": { - "h": 4, - "w": 6, - "x": 18, - "y": 0 - }, - "id": 4, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calc": "lastNotNull", - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "10.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(increase(furumi_auth_failures_total[$__rate_interval]))", - "refId": "A" - } - ], - "title": "Auth Failures (Rate)", - "type": "stat", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { "color": "green", "value": null }, - { "color": "red", "value": 1 } - ] - } - }, - "overrides": [] - } - }, - { - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 4 - }, - "id": 5, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "10.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum by (method, status) (rate(furumi_grpc_requests_total[$__rate_interval]))", - "legendFormat": "{{method}} - {{status}}", - "refId": "A" - } - ], - "title": "gRPC Request Rate by Method & Status", - "type": "timeseries", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 2, - "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 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - } - }, - { - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 4 - }, - "id": 6, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "10.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "histogram_quantile(0.95, sum(rate(furumi_grpc_request_duration_seconds_bucket[$__rate_interval])) by (le, method))", - "legendFormat": "p95 {{method}}", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "histogram_quantile(0.99, sum(rate(furumi_grpc_request_duration_seconds_bucket[$__rate_interval])) by (le, method))", - "legendFormat": "p99 {{method}}", - "refId": "B" - } - ], - "title": "gRPC Request Duration (p95, p99)", - "type": "timeseries", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 2, - "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 - } - ] - }, - "unit": "s" - }, - "overrides": [] - } - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 12 - }, - "id": 99, - "panels": [ - { - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 13 - }, - "id": 7, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "10.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "process_resident_memory_bytes / 1024 / 1024", - "legendFormat": "Resident Memory", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "process_virtual_memory_bytes / 1024 / 1024", - "legendFormat": "Virtual Memory", - "refId": "B" - } - ], - "title": "Process Memory Usage", - "type": "timeseries", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 15, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 2, - "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 } - ] - }, - "unit": "megbytes" - }, - "overrides": [] - } - }, - { - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 13 - }, - "id": 8, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "10.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "process_open_fds", - "legendFormat": "Open FDs", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "process_max_fds", - "legendFormat": "Max FDs", - "refId": "B" - } - ], - "title": "Process File Descriptors", - "type": "timeseries", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 2, - "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 } - ] - }, - "unit": "short" - }, - "overrides": [] - } - } - ], - "title": "Process Metrics (Memory, FDs)", - "type": "row" - } - ], - "refresh": "10s", - "schemaVersion": 38, - "style": "dark", - "tags": [ - "furumi-server", - "grpc" - ], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "includeAll": false, - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Furumi Server Metrics", - "uid": "furumi-metrics", - "version": 1 - } diff --git a/k8s/core/prom-stack/kustomization.yaml b/k8s/core/prom-stack/kustomization.yaml index bcb510f..32e6f64 100644 --- a/k8s/core/prom-stack/kustomization.yaml +++ b/k8s/core/prom-stack/kustomization.yaml @@ -6,9 +6,8 @@ resources: - external-secrets.yaml - grafana-alerting-configmap.yaml - alertmanager-config.yaml - - furumi-dashboard-cm.yaml - - telemt-dashboard-cm.yaml - - auth-proxy-dashboard-cm.yaml + - dashboards/telemt-dashboard-cm.yaml + - dashboards/auth-proxy-dashboard-cm.yaml helmCharts: - name: kube-prometheus-stack diff --git a/terraform/keycloak/main.tf b/terraform/keycloak/main.tf index b62ca15..1763a28 100644 --- a/terraform/keycloak/main.tf +++ b/terraform/keycloak/main.tf @@ -128,9 +128,9 @@ resource "keycloak_openid_client" "oauth2_app" { standard_flow_enabled = true direct_access_grants_enabled = false - valid_redirect_uris = each.value.redirect_uris + valid_redirect_uris = each.value.redirect_uris valid_post_logout_redirect_uris = each.value.post_logout_redirect_uris - web_origins = each.value.web_origins + web_origins = each.value.web_origins } resource "keycloak_openid_group_membership_protocol_mapper" "oauth2_app_groups" { diff --git a/terraform/keycloak/terraform.tfvars b/terraform/keycloak/terraform.tfvars index eaa0f4f..95cb249 100644 --- a/terraform/keycloak/terraform.tfvars +++ b/terraform/keycloak/terraform.tfvars @@ -18,8 +18,8 @@ proxy_applications = { oauth2_applications = { gitea = { - redirect_uris = ["https://gt.hexor.cy/user/oauth2/Keycloak/callback"] - web_origins = ["https://gt.hexor.cy"] + redirect_uris = ["https://gt.hexor.cy/user/oauth2/Keycloak/callback"] + web_origins = ["https://gt.hexor.cy"] post_logout_redirect_uris = ["https://gt.hexor.cy/*"] } ArgoCD = { @@ -28,5 +28,10 @@ oauth2_applications = { post_logout_redirect_uris = ["https://ag.hexor.cy/*"] extra_optional_scopes = ["offline_access"] } + Grafana = { + redirect_uris = ["https://gf.hexor.cy/login/generic_oauth"] + web_origins = ["https://gf.hexor.cy"] + post_logout_redirect_uris = ["https://gf.hexor.cy/*"] + } }