init commit

This commit is contained in:
2026-04-25 14:43:45 +00:00
commit 30af3165e4
26 changed files with 16629 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
# Grafana Alerting Provisioning
Dieses Verzeichnis enthaelt die aktuell in Grafana gepflegten Traefik-Alerts als file-based Provisioning-Dateien.
## Dateien
- `traefik-alert-rules.yaml`: Export der Rule Group `traefik-prometheus` im Folder `Traefik Alerts`
- `contact-points.n8n.yaml`: Kontaktpunkt `n8n` als Provisioning-Datei
- `grafana-alerting-traefik.configmap.yaml`: Kubernetes-ConfigMap mit beiden Dateien
- `kube-prometheus-stack-values-alerting-snippet.yaml`: Helm-Values-Snippet zum Einhaengen der ConfigMap in Grafana
## Wichtiger Hinweis
Grafana exportiert Secret-Felder wie Webhook-Passwoerter nur redigiert. Ersetze deshalb in `contact-points.n8n.yaml` und in der ConfigMap den Platzhalter `__REPLACE_WITH_N8N_WEBHOOK_PASSWORD__` durch das echte Secret.
## Nutzung
1. Passe den Passwort-Platzhalter an.
2. Wende die ConfigMap an.
3. Erweitere die `kube-prometheus-stack`-Values um das Mount-Snippet.
4. Rolle Grafana neu aus oder fuehre ein Helm-Upgrade durch.
Die Regeln referenzieren den Receiver direkt ueber `notification_settings.receiver: n8n`, daher ist kein separater Policy-Export notwendig.
File-provisioned Alerting-Ressourcen sind in der Grafana-UI anschliessend read-only.
+12
View File
@@ -0,0 +1,12 @@
apiVersion: 1
contactPoints:
- orgId: 1
name: n8n
receivers:
- uid: dfjuxb8oyjh8ge
type: webhook
settings:
httpMethod: POST
url: https://n8n.apps.rsitservice.de/webhook/alerting
password: __REPLACE_WITH_N8N_WEBHOOK_PASSWORD__
disableResolveMessage: false
@@ -0,0 +1,507 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: grafana-alerting-traefik
namespace: kube-mon
data:
traefik-alert-rules.yaml: |
apiVersion: 1
groups:
- orgId: 1
name: traefik-prometheus
folder: Traefik Alerts
interval: 1m
rules:
- uid: traefik-instance-down
title: Traefik Instance Down
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
editorMode: code
expr: max by (pod, instance) (up{job="traefik"} == 0)
hide: false
intervalMs: 1000
maxDataPoints: 43200
range: true
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
hide: false
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
settings:
mode: dropNN
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 0.5
type: gt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
hide: false
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
dashboardUid: traefik-overview
panelId: 5
noDataState: OK
execErrState: Error
for: 5m
annotations:
__dashboardUid__: traefik-overview
__panelId__: "5"
description: Die Traefik-Instanz {{ $labels.pod }} auf {{ $labels.instance }} liefert seit 5 Minuten keine erfolgreichen Prometheus-Scrapes.
summary: Traefik-Instanz {{ $labels.pod }} ist nicht erreichbar
labels:
category: availability
cluster: microk8s
severity: critical
source: traefik
team: ops
isPaused: false
notification_settings:
receiver: n8n
- uid: traefik-websecure-5xx-ratio-high
title: Traefik Websecure 5xx Ratio High
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
editorMode: code
expr: (100 * sum by (entrypoint) (rate(traefik_entrypoint_requests_total{entrypoint="websecure",code=~"5.."}[5m])) / clamp_min(sum by (entrypoint) (rate(traefik_entrypoint_requests_total{entrypoint="websecure"}[5m])), 0.001)) and on(entrypoint) (sum by (entrypoint) (rate(traefik_entrypoint_requests_total{entrypoint="websecure"}[5m])) > 0.3)
hide: false
intervalMs: 1000
maxDataPoints: 43200
range: true
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
hide: false
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
settings:
mode: dropNN
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 15
type: gt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
hide: false
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
dashboardUid: traefik-overview
panelId: 6
noDataState: OK
execErrState: Error
for: 10m
annotations:
__dashboardUid__: traefik-overview
__panelId__: "6"
description: Die 5xx-Quote auf {{ $labels.entrypoint }} liegt seit 10 Minuten ueber 15% (aktuell {{ printf "%.2f" $values.B.Value }}%).
summary: Traefik Websecure 5xx-Quote ist erhoeht
labels:
category: errors
cluster: microk8s
severity: warning
source: traefik
team: ops
isPaused: false
notification_settings:
receiver: n8n
- uid: traefik-router-5xx-ratio-critical
title: Traefik Router 5xx Ratio Critical
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
editorMode: code
expr: (100 * sum by (router) (rate(traefik_router_requests_total{router!~"ping@internal|prometheus@internal",code=~"5.."}[5m])) / clamp_min(sum by (router) (rate(traefik_router_requests_total{router!~"ping@internal|prometheus@internal"}[5m])), 0.001)) and on(router) (sum by (router) (rate(traefik_router_requests_total{router!~"ping@internal|prometheus@internal"}[5m])) > 0.1)
hide: false
intervalMs: 1000
maxDataPoints: 43200
range: true
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
hide: false
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
settings:
mode: dropNN
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 50
type: gt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
hide: false
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
dashboardUid: traefik-overview
panelId: 11
noDataState: OK
execErrState: Error
for: 10m
annotations:
__dashboardUid__: traefik-overview
__panelId__: "11"
description: Der Router {{ $labels.router }} liegt seit 10 Minuten ueber 50% 5xx-Quote bei relevanter Last (aktuell {{ printf "%.2f" $values.B.Value }}%).
summary: Traefik-Router {{ $labels.router }} produziert viele 5xx
labels:
category: errors
cluster: microk8s
severity: critical
source: traefik
team: ops
isPaused: false
notification_settings:
receiver: n8n
- uid: traefik-router-p95-latency-high
title: Traefik Router P95 Latency High
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
editorMode: code
expr: (1000 * histogram_quantile(0.95, sum by (router, le) (rate(traefik_router_request_duration_seconds_bucket{router!~"ping@internal|prometheus@internal"}[5m])))) and on(router) (sum by (router) (rate(traefik_router_requests_total{router!~"ping@internal|prometheus@internal"}[5m])) > 0.05)
hide: false
intervalMs: 1000
maxDataPoints: 43200
range: true
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
hide: false
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
settings:
mode: dropNN
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 3000
type: gt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
hide: false
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
dashboardUid: traefik-overview
panelId: 44
noDataState: OK
execErrState: Error
for: 10m
annotations:
__dashboardUid__: traefik-overview
__panelId__: "44"
description: Der Router {{ $labels.router }} hat seit 10 Minuten eine p95-Latenz ueber 3000 ms (aktuell {{ printf "%.0f" $values.B.Value }} ms).
summary: Traefik-Router {{ $labels.router }} ist langsam
labels:
category: latency
cluster: microk8s
severity: warning
source: traefik
team: ops
isPaused: false
notification_settings:
receiver: n8n
- uid: traefik-cert-expiry-soon
title: Traefik Certificate Expiry Soon
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
editorMode: code
expr: (max by (cn) (traefik_tls_certs_not_after) - time()) / 86400
hide: false
intervalMs: 1000
maxDataPoints: 43200
range: true
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
hide: false
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
settings:
mode: dropNN
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 30
type: lt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
hide: false
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
dashboardUid: traefik-overview
panelId: 46
noDataState: OK
execErrState: Error
for: 1h
annotations:
__dashboardUid__: traefik-overview
__panelId__: "46"
description: Das Zertifikat {{ $labels.cn }} laeuft in weniger als 30 Tagen ab (aktuell {{ printf "%.1f" $values.B.Value }} Tage Restlaufzeit).
summary: Traefik-Zertifikat {{ $labels.cn }} laeuft bald ab
labels:
category: certificate
cluster: microk8s
severity: warning
source: traefik
team: ops
isPaused: false
notification_settings:
receiver: n8n
contact-points.n8n.yaml: |
apiVersion: 1
contactPoints:
- orgId: 1
name: n8n
receivers:
- uid: dfjuxb8oyjh8ge
type: webhook
settings:
httpMethod: POST
url: https://n8n.apps.rsitservice.de/webhook/alerting
password: __REPLACE_WITH_N8N_WEBHOOK_PASSWORD__
disableResolveMessage: false
@@ -0,0 +1,12 @@
grafana:
extraConfigmapMounts:
- name: grafana-alerting-traefik-rules
configMap: grafana-alerting-traefik
subPath: traefik-alert-rules.yaml
mountPath: /etc/grafana/provisioning/alerting/traefik-alert-rules.yaml
readOnly: true
- name: grafana-alerting-traefik-contact-point
configMap: grafana-alerting-traefik
subPath: contact-points.n8n.yaml
mountPath: /etc/grafana/provisioning/alerting/contact-points.n8n.yaml
readOnly: true
+487
View File
@@ -0,0 +1,487 @@
apiVersion: 1
groups:
- orgId: 1
name: traefik-prometheus
folder: Traefik Alerts
interval: 1m
rules:
- uid: traefik-instance-down
title: Traefik Instance Down
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
editorMode: code
expr: max by (pod, instance) (up{job="traefik"} == 0)
hide: false
intervalMs: 1000
maxDataPoints: 43200
range: true
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
hide: false
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
settings:
mode: dropNN
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 0.5
type: gt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
hide: false
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
dashboardUid: traefik-overview
panelId: 5
noDataState: OK
execErrState: Error
for: 5m
annotations:
__dashboardUid__: traefik-overview
__panelId__: "5"
description: Die Traefik-Instanz {{ $labels.pod }} auf {{ $labels.instance }} liefert seit 5 Minuten keine erfolgreichen Prometheus-Scrapes.
summary: Traefik-Instanz {{ $labels.pod }} ist nicht erreichbar
labels:
category: availability
cluster: microk8s
severity: critical
source: traefik
team: ops
isPaused: false
notification_settings:
receiver: n8n
- uid: traefik-websecure-5xx-ratio-high
title: Traefik Websecure 5xx Ratio High
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
editorMode: code
expr: (100 * sum by (entrypoint) (rate(traefik_entrypoint_requests_total{entrypoint="websecure",code=~"5.."}[5m])) / clamp_min(sum by (entrypoint) (rate(traefik_entrypoint_requests_total{entrypoint="websecure"}[5m])), 0.001)) and on(entrypoint) (sum by (entrypoint) (rate(traefik_entrypoint_requests_total{entrypoint="websecure"}[5m])) > 0.3)
hide: false
intervalMs: 1000
maxDataPoints: 43200
range: true
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
hide: false
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
settings:
mode: dropNN
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 15
type: gt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
hide: false
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
dashboardUid: traefik-overview
panelId: 6
noDataState: OK
execErrState: Error
for: 10m
annotations:
__dashboardUid__: traefik-overview
__panelId__: "6"
description: Die 5xx-Quote auf {{ $labels.entrypoint }} liegt seit 10 Minuten ueber 15% (aktuell {{ printf "%.2f" $values.B.Value }}%).
summary: Traefik Websecure 5xx-Quote ist erhoeht
labels:
category: errors
cluster: microk8s
severity: warning
source: traefik
team: ops
isPaused: false
notification_settings:
receiver: n8n
- uid: traefik-router-5xx-ratio-critical
title: Traefik Router 5xx Ratio Critical
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
editorMode: code
expr: (100 * sum by (router) (rate(traefik_router_requests_total{router!~"ping@internal|prometheus@internal",code=~"5.."}[5m])) / clamp_min(sum by (router) (rate(traefik_router_requests_total{router!~"ping@internal|prometheus@internal"}[5m])), 0.001)) and on(router) (sum by (router) (rate(traefik_router_requests_total{router!~"ping@internal|prometheus@internal"}[5m])) > 0.1)
hide: false
intervalMs: 1000
maxDataPoints: 43200
range: true
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
hide: false
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
settings:
mode: dropNN
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 50
type: gt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
hide: false
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
dashboardUid: traefik-overview
panelId: 11
noDataState: OK
execErrState: Error
for: 10m
annotations:
__dashboardUid__: traefik-overview
__panelId__: "11"
description: Der Router {{ $labels.router }} liegt seit 10 Minuten ueber 50% 5xx-Quote bei relevanter Last (aktuell {{ printf "%.2f" $values.B.Value }}%).
summary: Traefik-Router {{ $labels.router }} produziert viele 5xx
labels:
category: errors
cluster: microk8s
severity: critical
source: traefik
team: ops
isPaused: false
notification_settings:
receiver: n8n
- uid: traefik-router-p95-latency-high
title: Traefik Router P95 Latency High
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
editorMode: code
expr: (1000 * histogram_quantile(0.95, sum by (router, le) (rate(traefik_router_request_duration_seconds_bucket{router!~"ping@internal|prometheus@internal"}[5m])))) and on(router) (sum by (router) (rate(traefik_router_requests_total{router!~"ping@internal|prometheus@internal"}[5m])) > 0.05)
hide: false
intervalMs: 1000
maxDataPoints: 43200
range: true
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
hide: false
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
settings:
mode: dropNN
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 3000
type: gt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
hide: false
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
dashboardUid: traefik-overview
panelId: 44
noDataState: OK
execErrState: Error
for: 10m
annotations:
__dashboardUid__: traefik-overview
__panelId__: "44"
description: Der Router {{ $labels.router }} hat seit 10 Minuten eine p95-Latenz ueber 3000 ms (aktuell {{ printf "%.0f" $values.B.Value }} ms).
summary: Traefik-Router {{ $labels.router }} ist langsam
labels:
category: latency
cluster: microk8s
severity: warning
source: traefik
team: ops
isPaused: false
notification_settings:
receiver: n8n
- uid: traefik-cert-expiry-soon
title: Traefik Certificate Expiry Soon
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
editorMode: code
expr: (max by (cn) (traefik_tls_certs_not_after) - time()) / 86400
hide: false
intervalMs: 1000
maxDataPoints: 43200
range: true
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
hide: false
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
settings:
mode: dropNN
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 30
type: lt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
hide: false
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
dashboardUid: traefik-overview
panelId: 46
noDataState: OK
execErrState: Error
for: 1h
annotations:
__dashboardUid__: traefik-overview
__panelId__: "46"
description: Das Zertifikat {{ $labels.cn }} laeuft in weniger als 30 Tagen ab (aktuell {{ printf "%.1f" $values.B.Value }} Tage Restlaufzeit).
summary: Traefik-Zertifikat {{ $labels.cn }} laeuft bald ab
labels:
category: certificate
cluster: microk8s
severity: warning
source: traefik
team: ops
isPaused: false
notification_settings:
receiver: n8n
@@ -0,0 +1,14 @@
---
"kind": "Namespace"
"apiVersion": "v1"
"metadata":
"name": "kube-mon"
"labels":
"kubernetes.io/metadata.name": "kube-mon"
---
"kind": "Namespace"
"apiVersion": "v1"
"metadata":
"name": "loki"
"labels":
"kubernetes.io/metadata.name": "loki"
+31
View File
@@ -0,0 +1,31 @@
# Live Monitoring Deployment Export
Diese Manifeste wurden am 2026-04-25 14:31:07 UTC direkt aus den aktuell laufenden Instanzen im Cluster exportiert und von Laufzeitfeldern bereinigt.
## Enthalten
- `00-namespaces.yaml`: Namespaces `kube-mon` und `loki`
- `alertmanager/`: Alertmanager StatefulSet, Services, ServiceAccount und die aktuell genutzten Config-/TLS-Secrets
- `grafana/`: Grafana StatefulSet, Services, RBAC, Secret, Core-Config und alle aktuell gelabelten Grafana-Dashboard-/Datasource-ConfigMaps aus `kube-mon`
- `promtail/`: Promtail DaemonSet, ConfigMap, ServiceAccount und Cluster-RBAC aus `loki`
- `prometheus/`: Prometheus StatefulSet, Services, RBAC, Config-Secrets und das aktuell geladene Rulefile-ConfigMap
- `loki/`: Loki StatefulSet, Services, ServiceAccount, ConfigMap und PVC
## Wichtige Hinweise
- Der Export bildet die aktuell laufenden Instanzen moeglichst nah ab, aber nicht die urspruenglichen Helm-Releases oder Operator-CRDs.
- Grafana-Datasources werden unveraendert exportiert. Die aktuelle Prometheus-Datasource verweist zusaetzlich auf Alertmanager; der zugehoerige StatefulSet-/Service-/Secret-Stand ist in diesem Paket enthalten.
- Alertmanager- und Promtail-Konfigurationen werden inklusive der aktuell im Cluster hinterlegten Secrets bzw. Push-Ziele exportiert. Fuer andere Umgebungen muessen diese Werte ggf. angepasst oder vor einem Commit redigiert werden.
- Die Prometheus-Konfiguration ist als aktuell generiertes Secret exportiert. In einer anderen Umgebung koennen Scrape-Targets fehlen, wenn dort Cluster-Services, Endpoints oder Exporter anders heissen.
- Persistenz bleibt auf den aktuell genutzten StorageClasses (`nfs-csi`) und Groessen (`Grafana 20Gi`, `Prometheus 50Gi`, `Loki 20Gi`).
- Alertmanager ist wie im Live-Cluster als Operator-generiertes StatefulSet exportiert. Die zugehoerigen CRDs/CRs und der Prometheus-Operator selbst sind weiterhin nicht Teil dieses Pakets.
- NodePort-Services wurden mit den aktuell gesetzten Ports exportiert (`Grafana 30637`, `Prometheus 31595`, `Alertmanager 32626`, `Loki 31940/30320`).
## Reihenfolge
1. `00-namespaces.yaml`
2. `loki/01-core.yaml`, `loki/02-services.yaml`, `loki/03-statefulset.yaml`
3. `promtail/01-rbac.yaml`, `promtail/02-config.yaml`, `promtail/03-daemonset.yaml`
4. `alertmanager/01-core.yaml`, `alertmanager/02-services.yaml`, `alertmanager/03-statefulset.yaml`
5. `prometheus/01-rbac.yaml`, `prometheus/02-config.yaml`, `prometheus/03-services.yaml`, `prometheus/04-statefulset.yaml`
6. `grafana/01-rbac.yaml`, `grafana/02-core-config.yaml`, `grafana/03-services.yaml`, `grafana/04-statefulset.yaml`, `grafana/05-provisioning-configmaps.yaml`
@@ -0,0 +1,88 @@
---
"kind": "ServiceAccount"
"apiVersion": "v1"
"metadata":
"name": "kube-prometheus-stack-1761-alertmanager"
"namespace": "kube-mon"
"labels":
"app": "kube-prometheus-stack-alertmanager"
"app.kubernetes.io/component": "alertmanager"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "kube-prometheus-stack-alertmanager"
"app.kubernetes.io/part-of": "kube-prometheus-stack"
"app.kubernetes.io/version": "79.0.1"
"chart": "kube-prometheus-stack-79.0.1"
"heritage": "Helm"
"release": "kube-prometheus-stack-1761819498"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"automountServiceAccountToken": true
---
"kind": "Secret"
"apiVersion": "v1"
"metadata":
"name": "alertmanager-kube-prometheus-stack-1761-alertmanager"
"namespace": "kube-mon"
"labels":
"app": "kube-prometheus-stack-alertmanager"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/part-of": "kube-prometheus-stack"
"app.kubernetes.io/version": "79.0.1"
"chart": "kube-prometheus-stack-79.0.1"
"heritage": "Helm"
"release": "kube-prometheus-stack-1761819498"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"data":
"alertmanager.yaml": "Z2xvYmFsOgogIHJlc29sdmVfdGltZW91dDogNW0KICBzbXRwX2F1dGhfcGFzc3dvcmQ6IFJzMjAxMjE5ODgKICBzbXRwX2F1dGhfdXNlcm5hbWU6IGFsZXJ0aW5nQHJzaXRzZXJ2aWNlLmRlCiAgc210cF9mcm9tOiBhbGVydGluZ0Byc2l0c2VydmljZS5kZQogIHNtdHBfcmVxdWlyZV90bHM6IHRydWUKICBzbXRwX3NtYXJ0aG9zdDogbWFpbGNvdy5yc2l0c2VydmljZS5kZTo1ODcKaW5oaWJpdF9ydWxlczoKLSBlcXVhbDoKICAtIG5hbWVzcGFjZQogIC0gYWxlcnRuYW1lCiAgc291cmNlX21hdGNoZXJzOgogIC0gc2V2ZXJpdHkgPSBjcml0aWNhbAogIHRhcmdldF9tYXRjaGVyczoKICAtIHNldmVyaXR5ID1+IHdhcm5pbmd8aW5mbwotIGVxdWFsOgogIC0gbmFtZXNwYWNlCiAgLSBhbGVydG5hbWUKICBzb3VyY2VfbWF0Y2hlcnM6CiAgLSBzZXZlcml0eSA9IHdhcm5pbmcKICB0YXJnZXRfbWF0Y2hlcnM6CiAgLSBzZXZlcml0eSA9IGluZm8KLSBlcXVhbDoKICAtIG5hbWVzcGFjZQogIHNvdXJjZV9tYXRjaGVyczoKICAtIGFsZXJ0bmFtZSA9IEluZm9JbmhpYml0b3IKICB0YXJnZXRfbWF0Y2hlcnM6CiAgLSBzZXZlcml0eSA9IGluZm8KLSB0YXJnZXRfbWF0Y2hlcnM6CiAgLSBhbGVydG5hbWUgPSBJbmZvSW5oaWJpdG9yCnJlY2VpdmVyczoKLSBuYW1lOiAibnVsbCIKcm91dGU6CiAgZ3JvdXBfYnk6CiAgLSBhbGVydG5hbWUKICAtIGNsdXN0ZXIKICAtIHNlcnZpY2UKICBncm91cF9pbnRlcnZhbDogNW0KICBncm91cF93YWl0OiAzMHMKICByZWNlaXZlcjogbWFpbC1hbGVydHMKICByZWNlaXZlcnM6CiAgLSBlbWFpbF9jb25maWdzOgogICAgLSBzZW5kX3Jlc29sdmVkOiB0cnVlCiAgICAgIHRvOiBpbmZvQHJzaXRzZXJ2aWNlLmRlCiAgICBuYW1lOiBtYWlsLWFsZXJ0cwogIHJlcGVhdF9pbnRlcnZhbDogMTJoCiAgcm91dGVzOgogIC0gbWF0Y2hlcnM6CiAgICAtIGFsZXJ0bmFtZSA9ICJXYXRjaGRvZyIKICAgIHJlY2VpdmVyOiAibnVsbCIKdGVtcGxhdGVzOgotIC9ldGMvYWxlcnRtYW5hZ2VyL2NvbmZpZy8qLnRtcGw="
"type": "Opaque"
---
"kind": "Secret"
"apiVersion": "v1"
"metadata":
"name": "alertmanager-kube-prometheus-stack-1761-alertmanager-generated"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/managed-by": "prometheus-operator"
"managed-by": "prometheus-operator"
"data":
"alertmanager.yaml.gz": "H4sIAAAAAAAA/7ySy2r0MAyF934KMcsf5k8vdBOYB5gn6DJoXMUR+JLKcoaB0mcvTtppCg3tqlvpWN+xjpxPJ/StARDKyU/UKQdKRVt4CEZSUVqalngiaWEXi/c7A+AklbE7XWp7DxED5REtVXF9lZf6Nw8BAqodSGZJFaEn0ToBDrB7rM2n5D4ZZ2Rt4f4mXysclWRCP5us7kZCXVVv7wbDceATayfFVzN7UBRH2q3he8g0kbBe4PAKZ5TI0b1w7JMByKmIpU09WGFli94A0HNZlvh1Eauf/cyHX2LfXf4FdZ3LMfbpuKw0yRZ8A7c95+M85oCq4nonSmH0qEt0Dalt5ikBIzqSxqbYs2v+/dcwevMWAAD//yheIjPGAgAA"
"type": "Opaque"
---
"kind": "Secret"
"apiVersion": "v1"
"metadata":
"name": "alertmanager-kube-prometheus-stack-1761-alertmanager-web-config"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/managed-by": "prometheus-operator"
"managed-by": "prometheus-operator"
"data":
"web-config.yaml": ""
"type": "Opaque"
---
"kind": "Secret"
"apiVersion": "v1"
"metadata":
"name": "alertmanager-kube-prometheus-stack-1761-alertmanager-tls-assets-0"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/managed-by": "prometheus-operator"
"managed-by": "prometheus-operator"
"type": "Opaque"
---
"kind": "Secret"
"apiVersion": "v1"
"metadata":
"name": "alertmanager-kube-prometheus-stack-1761-alertmanager-cluster-tls-config"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/managed-by": "prometheus-operator"
"managed-by": "prometheus-operator"
"data":
"cluster-tls-config.yaml": ""
"type": "Opaque"
@@ -0,0 +1,91 @@
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "kube-prometheus-stack-1761-alertmanager"
"namespace": "kube-mon"
"labels":
"app": "kube-prometheus-stack-alertmanager"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/part-of": "kube-prometheus-stack"
"app.kubernetes.io/version": "79.0.1"
"chart": "kube-prometheus-stack-79.0.1"
"heritage": "Helm"
"release": "kube-prometheus-stack-1761819498"
"self-monitor": "true"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"spec":
"ports":
-
"name": "http-web"
"protocol": "TCP"
"port": 9093
"targetPort": 9093
-
"name": "reloader-web"
"protocol": "TCP"
"appProtocol": "http"
"port": 8080
"targetPort": "reloader-web"
"selector":
"alertmanager": "kube-prometheus-stack-1761-alertmanager"
"app.kubernetes.io/name": "alertmanager"
"type": "ClusterIP"
"sessionAffinity": "None"
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "alertmanager-operated"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/managed-by": "prometheus-operator"
"managed-by": "prometheus-operator"
"operated-alertmanager": "true"
"spec":
"ports":
-
"name": "http-web"
"protocol": "TCP"
"port": 9093
"targetPort": "http-web"
-
"name": "tcp-mesh"
"protocol": "TCP"
"port": 9094
"targetPort": "mesh-tcp"
-
"name": "udp-mesh"
"protocol": "UDP"
"port": 9094
"targetPort": "mesh-udp"
"selector":
"app.kubernetes.io/name": "alertmanager"
"clusterIP": "None"
"type": "ClusterIP"
"sessionAffinity": "None"
"publishNotReadyAddresses": true
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "alertmanager-nodeport"
"namespace": "kube-mon"
"labels":
"k8slens-edit-resource-version": "v1"
"spec":
"ports":
-
"name": "http-web"
"protocol": "TCP"
"port": 9093
"targetPort": "http-web"
"nodePort": 32626
"selector":
"app.kubernetes.io/name": "alertmanager"
"type": "NodePort"
"sessionAffinity": "None"
"externalTrafficPolicy": "Cluster"
@@ -0,0 +1,317 @@
---
"kind": "StatefulSet"
"apiVersion": "apps/v1"
"metadata":
"name": "alertmanager-kube-prometheus-stack-1761-alertmanager"
"namespace": "kube-mon"
"labels":
"alertmanager": "kube-prometheus-stack-1761-alertmanager"
"app": "kube-prometheus-stack-alertmanager"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761-alertmanager"
"app.kubernetes.io/managed-by": "prometheus-operator"
"app.kubernetes.io/name": "alertmanager"
"app.kubernetes.io/part-of": "kube-prometheus-stack"
"app.kubernetes.io/version": "79.0.1"
"chart": "kube-prometheus-stack-79.0.1"
"heritage": "Helm"
"managed-by": "prometheus-operator"
"release": "kube-prometheus-stack-1761819498"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"prometheus-operator-input-hash": "12770747348952997375"
"spec":
"replicas": 1
"selector":
"matchLabels":
"alertmanager": "kube-prometheus-stack-1761-alertmanager"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761-alertmanager"
"app.kubernetes.io/managed-by": "prometheus-operator"
"app.kubernetes.io/name": "alertmanager"
"template":
"metadata":
"labels":
"alertmanager": "kube-prometheus-stack-1761-alertmanager"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761-alertmanager"
"app.kubernetes.io/managed-by": "prometheus-operator"
"app.kubernetes.io/name": "alertmanager"
"app.kubernetes.io/version": "0.28.1"
"annotations":
"kubectl.kubernetes.io/default-container": "alertmanager"
"spec":
"volumes":
-
"name": "config-volume"
"secret":
"secretName": "alertmanager-kube-prometheus-stack-1761-alertmanager-generated"
"defaultMode": 420
-
"name": "tls-assets"
"projected":
"sources":
-
"secret":
"name": "alertmanager-kube-prometheus-stack-1761-alertmanager-tls-assets-0"
"defaultMode": 420
-
"name": "config-out"
"emptyDir":
"medium": "Memory"
-
"name": "web-config"
"secret":
"secretName": "alertmanager-kube-prometheus-stack-1761-alertmanager-web-config"
"defaultMode": 420
-
"name": "cluster-tls-config"
"secret":
"secretName": "alertmanager-kube-prometheus-stack-1761-alertmanager-cluster-tls-config"
"defaultMode": 420
"initContainers":
-
"name": "init-config-reloader"
"image": "quay.io/prometheus-operator/prometheus-config-reloader:v0.86.1"
"command":
- "/bin/prometheus-config-reloader"
"args":
- "--watch-interval=0"
- "--listen-address=:8081"
- "--config-file=/etc/alertmanager/config/alertmanager.yaml.gz"
- "--config-envsubst-file=/etc/alertmanager/config_out/alertmanager.env.yaml"
- "--watched-dir=/etc/alertmanager/config"
"ports":
-
"name": "reloader-init"
"containerPort": 8081
"protocol": "TCP"
"env":
-
"name": "POD_NAME"
"valueFrom":
"fieldRef":
"apiVersion": "v1"
"fieldPath": "metadata.name"
-
"name": "SHARD"
"value": "-1"
"resources": {}
"volumeMounts":
-
"name": "config-volume"
"readOnly": true
"mountPath": "/etc/alertmanager/config"
-
"name": "config-out"
"mountPath": "/etc/alertmanager/config_out"
-
"name": "web-config"
"readOnly": true
"mountPath": "/etc/alertmanager/web_config/web-config.yaml"
"subPath": "web-config.yaml"
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "FallbackToLogsOnError"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"capabilities":
"drop":
- "ALL"
"readOnlyRootFilesystem": true
"allowPrivilegeEscalation": false
"containers":
-
"name": "alertmanager"
"image": "quay.io/prometheus/alertmanager:v0.28.1"
"args":
- "--config.file=/etc/alertmanager/config_out/alertmanager.env.yaml"
- "--storage.path=/alertmanager"
- "--data.retention=120h"
- "--cluster.listen-address="
- "--web.listen-address=:9093"
- "--web.external-url=http://kube-prometheus-stack-1761-alertmanager.kube-mon:9093"
- "--web.route-prefix=/"
- "--cluster.label=kube-mon/kube-prometheus-stack-1761-alertmanager"
- "--cluster.peer=alertmanager-kube-prometheus-stack-1761-alertmanager-0.alertmanager-operated:9094"
- "--cluster.reconnect-timeout=5m"
- "--web.config.file=/etc/alertmanager/web_config/web-config.yaml"
"ports":
-
"name": "http-web"
"containerPort": 9093
"protocol": "TCP"
-
"name": "mesh-tcp"
"containerPort": 9094
"protocol": "TCP"
-
"name": "mesh-udp"
"containerPort": 9094
"protocol": "UDP"
"env":
-
"name": "POD_IP"
"valueFrom":
"fieldRef":
"apiVersion": "v1"
"fieldPath": "status.podIP"
"resources":
"requests":
"memory": "200Mi"
"volumeMounts":
-
"name": "config-volume"
"mountPath": "/etc/alertmanager/config"
-
"name": "config-out"
"readOnly": true
"mountPath": "/etc/alertmanager/config_out"
-
"name": "tls-assets"
"readOnly": true
"mountPath": "/etc/alertmanager/certs"
-
"name": "alertmanager-kube-prometheus-stack-1761-alertmanager-db"
"mountPath": "/alertmanager"
"subPath": "alertmanager-db"
-
"name": "web-config"
"readOnly": true
"mountPath": "/etc/alertmanager/web_config/web-config.yaml"
"subPath": "web-config.yaml"
-
"name": "cluster-tls-config"
"readOnly": true
"mountPath": "/etc/alertmanager/cluster_tls_config/cluster-tls-config.yaml"
"subPath": "cluster-tls-config.yaml"
"livenessProbe":
"httpGet":
"path": "/-/healthy"
"port": "http-web"
"scheme": "HTTP"
"timeoutSeconds": 3
"periodSeconds": 10
"successThreshold": 1
"failureThreshold": 10
"readinessProbe":
"httpGet":
"path": "/-/ready"
"port": "http-web"
"scheme": "HTTP"
"initialDelaySeconds": 3
"timeoutSeconds": 3
"periodSeconds": 5
"successThreshold": 1
"failureThreshold": 10
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "FallbackToLogsOnError"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"capabilities":
"drop":
- "ALL"
"readOnlyRootFilesystem": true
"allowPrivilegeEscalation": false
-
"name": "config-reloader"
"image": "quay.io/prometheus-operator/prometheus-config-reloader:v0.86.1"
"command":
- "/bin/prometheus-config-reloader"
"args":
- "--listen-address=:8080"
- "--web-config-file=/etc/alertmanager/web_config/web-config.yaml"
- "--reload-url=http://127.0.0.1:9093/-/reload"
- "--config-file=/etc/alertmanager/config/alertmanager.yaml.gz"
- "--config-envsubst-file=/etc/alertmanager/config_out/alertmanager.env.yaml"
- "--watched-dir=/etc/alertmanager/config"
"ports":
-
"name": "reloader-web"
"containerPort": 8080
"protocol": "TCP"
"env":
-
"name": "POD_NAME"
"valueFrom":
"fieldRef":
"apiVersion": "v1"
"fieldPath": "metadata.name"
-
"name": "SHARD"
"value": "-1"
"resources": {}
"volumeMounts":
-
"name": "config-volume"
"readOnly": true
"mountPath": "/etc/alertmanager/config"
-
"name": "config-out"
"mountPath": "/etc/alertmanager/config_out"
-
"name": "web-config"
"readOnly": true
"mountPath": "/etc/alertmanager/web_config/web-config.yaml"
"subPath": "web-config.yaml"
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "FallbackToLogsOnError"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"capabilities":
"drop":
- "ALL"
"readOnlyRootFilesystem": true
"allowPrivilegeEscalation": false
"restartPolicy": "Always"
"terminationGracePeriodSeconds": 120
"dnsPolicy": "ClusterFirst"
"serviceAccountName": "kube-prometheus-stack-1761-alertmanager"
"serviceAccount": "kube-prometheus-stack-1761-alertmanager"
"automountServiceAccountToken": true
"securityContext":
"runAsUser": 1000
"runAsGroup": 2000
"runAsNonRoot": true
"fsGroup": 2000
"seccompProfile":
"type": "RuntimeDefault"
"affinity":
"podAntiAffinity":
"preferredDuringSchedulingIgnoredDuringExecution":
-
"weight": 100
"podAffinityTerm":
"labelSelector":
"matchExpressions":
-
"key": "app.kubernetes.io/name"
"operator": "In"
"values":
- "alertmanager"
-
"key": "alertmanager"
"operator": "In"
"values":
- "kube-prometheus-stack-1761-alertmanager"
"topologyKey": "kubernetes.io/hostname"
"schedulerName": "default-scheduler"
"volumeClaimTemplates":
-
"kind": "PersistentVolumeClaim"
"apiVersion": "v1"
"metadata":
"name": "alertmanager-kube-prometheus-stack-1761-alertmanager-db"
"spec":
"accessModes":
- "ReadWriteOnce"
"resources":
"requests":
"storage": "50Gi"
"storageClassName": "nfs-csi"
"volumeMode": "Filesystem"
"serviceName": "alertmanager-operated"
"podManagementPolicy": "Parallel"
"updateStrategy":
"type": "RollingUpdate"
"revisionHistoryLimit": 10
"persistentVolumeClaimRetentionPolicy":
"whenDeleted": "Retain"
"whenScaled": "Retain"
@@ -0,0 +1,104 @@
---
"kind": "ServiceAccount"
"apiVersion": "v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"automountServiceAccountToken": true
---
"kind": "Role"
"apiVersion": "rbac.authorization.k8s.io/v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"rules": []
---
"kind": "RoleBinding"
"apiVersion": "rbac.authorization.k8s.io/v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"subjects":
-
"kind": "ServiceAccount"
"name": "kube-prometheus-stack-1761819498-grafana"
"namespace": "kube-mon"
"roleRef":
"apiGroup": "rbac.authorization.k8s.io"
"kind": "Role"
"name": "kube-prometheus-stack-1761819498-grafana"
---
"kind": "ClusterRole"
"apiVersion": "rbac.authorization.k8s.io/v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana-clusterrole"
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"rules":
-
"verbs":
- "get"
- "watch"
- "list"
"apiGroups":
- ""
"resources":
- "configmaps"
- "secrets"
---
"kind": "ClusterRoleBinding"
"apiVersion": "rbac.authorization.k8s.io/v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana-clusterrolebinding"
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"subjects":
-
"kind": "ServiceAccount"
"name": "kube-prometheus-stack-1761819498-grafana"
"namespace": "kube-mon"
"roleRef":
"apiGroup": "rbac.authorization.k8s.io"
"kind": "ClusterRole"
"name": "kube-prometheus-stack-1761819498-grafana-clusterrole"
@@ -0,0 +1,83 @@
---
"kind": "ConfigMap"
"apiVersion": "v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"data":
"grafana.ini": |
[analytics]
check_for_updates = true
[grafana_net]
url = https://grafana.net
[log]
mode = console
[paths]
data = /var/lib/grafana/
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins
provisioning = /etc/grafana/provisioning
[server]
domain = ''
---
"kind": "ConfigMap"
"apiVersion": "v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana-config-dashboards"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"data":
"provider.yaml": |
apiVersion: 1
providers:
- name: 'sidecarProvider'
orgId: 1
folder: ''
folderUid: ''
type: file
disableDeletion: true
allowUiUpdates: false
updateIntervalSeconds: 30
options:
foldersFromFilesStructure: false
path: /tmp/dashboards
---
"kind": "Secret"
"apiVersion": "v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/component": "admin-secret"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"k8slens-edit-resource-version": "v1"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"data":
"admin-password": "UnMyMDEyMTk4OCE="
"admin-user": "YWRtaW4="
"ldap-toml": ""
"type": "Opaque"
@@ -0,0 +1,78 @@
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"k8slens-edit-resource-version": "v1"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"spec":
"ports":
-
"name": "http-web"
"protocol": "TCP"
"port": 80
"targetPort": "grafana"
"selector":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/name": "grafana"
"type": "ClusterIP"
"sessionAffinity": "None"
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana-headless"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"spec":
"ports":
-
"name": "gossip-tcp"
"protocol": "TCP"
"port": 9094
"targetPort": "gossip-tcp"
"selector":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/name": "grafana"
"type": "ClusterIP"
"sessionAffinity": "None"
"clusterIP": "None"
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "grafana-nodeport"
"namespace": "kube-mon"
"labels":
"k8slens-edit-resource-version": "v1"
"spec":
"ports":
-
"name": "http-web"
"protocol": "TCP"
"port": 80
"targetPort": "grafana"
"nodePort": 30637
"selector":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/name": "grafana"
"type": "NodePort"
"sessionAffinity": "None"
"externalTrafficPolicy": "Cluster"
@@ -0,0 +1,333 @@
---
"kind": "StatefulSet"
"apiVersion": "apps/v1"
"metadata":
"name": "kube-prometheus-stack-1761819498-grafana"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"k8slens-edit-resource-version": "v1"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"spec":
"replicas": 1
"selector":
"matchLabels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/name": "grafana"
"template":
"metadata":
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/name": "grafana"
"app.kubernetes.io/version": "12.2.1"
"helm.sh/chart": "grafana-10.1.4"
"annotations":
"checksum/config": "d4994ce00e7811465a2fa6543bf581120fee2eef2b029c1877d15c2a3886deae"
"checksum/dashboards-json-config": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
"checksum/sc-dashboard-provider-config": "77f303eadac6bf5e0f42c223d042ba2827635e029336a34ae30a97433b486bdb"
"checksum/secret": "68ab9c5d48640ff3232bd4e6b4f93001b47e8cc44ae8bbd347e5af4fa2bafa55"
"kubectl.kubernetes.io/default-container": "grafana"
"spec":
"volumes":
-
"name": "config"
"configMap":
"name": "kube-prometheus-stack-1761819498-grafana"
"defaultMode": 420
-
"name": "sc-dashboard-volume"
"emptyDir": {}
-
"name": "sc-dashboard-provider"
"configMap":
"name": "kube-prometheus-stack-1761819498-grafana-config-dashboards"
"defaultMode": 420
-
"name": "sc-datasources-volume"
"emptyDir": {}
"initContainers":
-
"name": "init-chown-data"
"image": "docker.io/library/busybox:1.31.1"
"command":
- "chown"
- "-R"
- "472:472"
- "/var/lib/grafana"
"resources": {}
"volumeMounts":
-
"name": "storage"
"mountPath": "/var/lib/grafana"
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "File"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"capabilities":
"add":
- "CHOWN"
"drop":
- "ALL"
"runAsUser": 0
"runAsNonRoot": false
"readOnlyRootFilesystem": false
"seccompProfile":
"type": "RuntimeDefault"
"containers":
-
"name": "grafana-sc-dashboard"
"image": "quay.io/kiwigrid/k8s-sidecar:1.30.10"
"env":
-
"name": "METHOD"
"value": "WATCH"
-
"name": "LABEL"
"value": "grafana_dashboard"
-
"name": "LABEL_VALUE"
"value": "1"
-
"name": "FOLDER"
"value": "/tmp/dashboards"
-
"name": "RESOURCE"
"value": "both"
-
"name": "NAMESPACE"
"value": "ALL"
-
"name": "SKIP_TLS_VERIFY"
"value": "true"
-
"name": "REQ_USERNAME"
"valueFrom":
"secretKeyRef":
"name": "kube-prometheus-stack-1761819498-grafana"
"key": "admin-user"
-
"name": "REQ_PASSWORD"
"valueFrom":
"secretKeyRef":
"name": "kube-prometheus-stack-1761819498-grafana"
"key": "admin-password"
-
"name": "REQ_URL"
"value": "http://localhost:3000/api/admin/provisioning/dashboards/reload"
-
"name": "REQ_METHOD"
"value": "POST"
"resources": {}
"volumeMounts":
-
"name": "sc-dashboard-volume"
"mountPath": "/tmp/dashboards"
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "File"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"capabilities":
"drop":
- "ALL"
"allowPrivilegeEscalation": false
"seccompProfile":
"type": "RuntimeDefault"
-
"name": "grafana-sc-datasources"
"image": "quay.io/kiwigrid/k8s-sidecar:1.30.10"
"env":
-
"name": "METHOD"
"value": "WATCH"
-
"name": "LABEL"
"value": "grafana_datasource"
-
"name": "LABEL_VALUE"
"value": "1"
-
"name": "FOLDER"
"value": "/etc/grafana/provisioning/datasources"
-
"name": "RESOURCE"
"value": "both"
-
"name": "SKIP_TLS_VERIFY"
"value": "true"
-
"name": "REQ_USERNAME"
"valueFrom":
"secretKeyRef":
"name": "kube-prometheus-stack-1761819498-grafana"
"key": "admin-user"
-
"name": "REQ_PASSWORD"
"valueFrom":
"secretKeyRef":
"name": "kube-prometheus-stack-1761819498-grafana"
"key": "admin-password"
-
"name": "REQ_URL"
"value": "http://localhost:3000/api/admin/provisioning/datasources/reload"
-
"name": "REQ_METHOD"
"value": "POST"
"resources": {}
"volumeMounts":
-
"name": "sc-datasources-volume"
"mountPath": "/etc/grafana/provisioning/datasources"
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "File"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"capabilities":
"drop":
- "ALL"
"allowPrivilegeEscalation": false
"seccompProfile":
"type": "RuntimeDefault"
-
"name": "grafana"
"image": "docker.io/grafana/grafana:13.1.0-24485707904"
"ports":
-
"name": "grafana"
"containerPort": 3000
"protocol": "TCP"
-
"name": "gossip-tcp"
"containerPort": 9094
"protocol": "TCP"
-
"name": "gossip-udp"
"containerPort": 9094
"protocol": "UDP"
-
"name": "profiling"
"containerPort": 6060
"protocol": "TCP"
"env":
-
"name": "POD_IP"
"valueFrom":
"fieldRef":
"apiVersion": "v1"
"fieldPath": "status.podIP"
-
"name": "GF_SECURITY_ADMIN_USER"
"valueFrom":
"secretKeyRef":
"name": "kube-prometheus-stack-1761819498-grafana"
"key": "admin-user"
-
"name": "GF_SECURITY_ADMIN_PASSWORD"
"valueFrom":
"secretKeyRef":
"name": "kube-prometheus-stack-1761819498-grafana"
"key": "admin-password"
-
"name": "GF_PATHS_DATA"
"value": "/var/lib/grafana/"
-
"name": "GF_PATHS_LOGS"
"value": "/var/log/grafana"
-
"name": "GF_PATHS_PLUGINS"
"value": "/var/lib/grafana/plugins"
-
"name": "GF_PATHS_PROVISIONING"
"value": "/etc/grafana/provisioning"
"resources": {}
"volumeMounts":
-
"name": "config"
"mountPath": "/etc/grafana/grafana.ini"
"subPath": "grafana.ini"
-
"name": "storage"
"mountPath": "/var/lib/grafana"
-
"name": "sc-dashboard-volume"
"mountPath": "/tmp/dashboards"
-
"name": "sc-dashboard-provider"
"mountPath": "/etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml"
"subPath": "provider.yaml"
-
"name": "sc-datasources-volume"
"mountPath": "/etc/grafana/provisioning/datasources"
"livenessProbe":
"httpGet":
"path": "/api/health"
"port": 3000
"scheme": "HTTP"
"initialDelaySeconds": 60
"timeoutSeconds": 30
"periodSeconds": 10
"successThreshold": 1
"failureThreshold": 10
"readinessProbe":
"httpGet":
"path": "/api/health"
"port": 3000
"scheme": "HTTP"
"timeoutSeconds": 1
"periodSeconds": 10
"successThreshold": 1
"failureThreshold": 3
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "File"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"capabilities":
"drop":
- "ALL"
"allowPrivilegeEscalation": false
"seccompProfile":
"type": "RuntimeDefault"
"restartPolicy": "Always"
"terminationGracePeriodSeconds": 30
"dnsPolicy": "ClusterFirst"
"serviceAccountName": "kube-prometheus-stack-1761819498-grafana"
"serviceAccount": "kube-prometheus-stack-1761819498-grafana"
"automountServiceAccountToken": true
"shareProcessNamespace": false
"securityContext":
"runAsUser": 472
"runAsGroup": 472
"runAsNonRoot": true
"fsGroup": 472
"schedulerName": "default-scheduler"
"enableServiceLinks": true
"volumeClaimTemplates":
-
"kind": "PersistentVolumeClaim"
"apiVersion": "v1"
"metadata":
"name": "storage"
"spec":
"accessModes":
- "ReadWriteOnce"
"resources":
"requests":
"storage": "20Gi"
"storageClassName": "nfs-csi"
"volumeMode": "Filesystem"
"serviceName": "kube-prometheus-stack-1761819498-grafana-headless"
"podManagementPolicy": "OrderedReady"
"updateStrategy":
"type": "RollingUpdate"
"rollingUpdate":
"partition": 0
"maxUnavailable": 1
"revisionHistoryLimit": 10
"persistentVolumeClaimRetentionPolicy":
"whenDeleted": "Retain"
"whenScaled": "Retain"
File diff suppressed because one or more lines are too long
@@ -0,0 +1,71 @@
---
"kind": "ServiceAccount"
"apiVersion": "v1"
"metadata":
"name": "loki"
"namespace": "loki"
---
"kind": "ConfigMap"
"apiVersion": "v1"
"metadata":
"name": "loki-config"
"namespace": "loki"
"data":
"loki.yaml": |
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
common:
instance_addr: 127.0.0.1
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: "2024-04-01"
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
limits_config:
allow_structured_metadata: true
reject_old_samples: true
reject_old_samples_max_age: 168h
ingestion_rate_mb: 16
ingestion_burst_size_mb: 32
max_cache_freshness_per_query: 10m
storage_config:
filesystem:
directory: /loki/chunks
tsdb_shipper:
active_index_directory: /loki/index
cache_location: /loki/index_cache
---
"kind": "PersistentVolumeClaim"
"apiVersion": "v1"
"metadata":
"name": "loki-data"
"namespace": "loki"
"spec":
"accessModes":
- "ReadWriteOnce"
"resources":
"requests":
"storage": "20Gi"
"storageClassName": "nfs-csi"
"volumeMode": "Filesystem"
@@ -0,0 +1,50 @@
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "loki"
"namespace": "loki"
"labels":
"k8slens-edit-resource-version": "v1"
"spec":
"ports":
-
"name": "http-metrics"
"protocol": "TCP"
"port": 3100
"targetPort": "http-metrics"
"nodePort": 31940
-
"name": "grpc"
"protocol": "TCP"
"port": 9096
"targetPort": "grpc"
"nodePort": 30320
"selector":
"app": "loki"
"type": "NodePort"
"sessionAffinity": "None"
"externalTrafficPolicy": "Cluster"
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "loki-headless"
"namespace": "loki"
"spec":
"ports":
-
"name": "http-metrics"
"protocol": "TCP"
"port": 3100
"targetPort": "http-metrics"
-
"name": "grpc"
"protocol": "TCP"
"port": 9096
"targetPort": "grpc"
"selector":
"app": "loki"
"type": "ClusterIP"
"sessionAffinity": "None"
"clusterIP": "None"
@@ -0,0 +1,100 @@
---
"kind": "StatefulSet"
"apiVersion": "apps/v1"
"metadata":
"name": "loki"
"namespace": "loki"
"spec":
"replicas": 1
"selector":
"matchLabels":
"app": "loki"
"template":
"metadata":
"labels":
"app": "loki"
"spec":
"volumes":
-
"name": "config"
"configMap":
"name": "loki-config"
"defaultMode": 420
-
"name": "storage"
"persistentVolumeClaim":
"claimName": "loki-data"
"containers":
-
"name": "loki"
"image": "grafana/loki:3.4.2"
"args":
- "-config.file=/etc/loki/config/loki.yaml"
"ports":
-
"name": "http-metrics"
"containerPort": 3100
"protocol": "TCP"
-
"name": "grpc"
"containerPort": 9096
"protocol": "TCP"
"resources":
"limits":
"cpu": "1"
"memory": "1Gi"
"requests":
"cpu": "100m"
"memory": "256Mi"
"volumeMounts":
-
"name": "storage"
"mountPath": "/loki"
-
"name": "config"
"mountPath": "/etc/loki/config"
"livenessProbe":
"httpGet":
"path": "/ready"
"port": "http-metrics"
"scheme": "HTTP"
"initialDelaySeconds": 45
"timeoutSeconds": 1
"periodSeconds": 10
"successThreshold": 1
"failureThreshold": 3
"readinessProbe":
"httpGet":
"path": "/ready"
"port": "http-metrics"
"scheme": "HTTP"
"initialDelaySeconds": 45
"timeoutSeconds": 1
"periodSeconds": 10
"successThreshold": 1
"failureThreshold": 3
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "File"
"imagePullPolicy": "IfNotPresent"
"restartPolicy": "Always"
"terminationGracePeriodSeconds": 30
"dnsPolicy": "ClusterFirst"
"serviceAccountName": "loki"
"serviceAccount": "loki"
"securityContext":
"runAsUser": 10001
"runAsGroup": 10001
"runAsNonRoot": true
"fsGroup": 10001
"schedulerName": "default-scheduler"
"serviceName": "loki"
"podManagementPolicy": "OrderedReady"
"updateStrategy":
"type": "RollingUpdate"
"rollingUpdate":
"partition": 0
"maxUnavailable": 1
"revisionHistoryLimit": 10
"persistentVolumeClaimRetentionPolicy":
"whenDeleted": "Retain"
"whenScaled": "Retain"
@@ -0,0 +1,102 @@
---
"kind": "ServiceAccount"
"apiVersion": "v1"
"metadata":
"name": "kube-prometheus-stack-1761-prometheus"
"namespace": "kube-mon"
"labels":
"app": "kube-prometheus-stack-prometheus"
"app.kubernetes.io/component": "prometheus"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/name": "kube-prometheus-stack-prometheus"
"app.kubernetes.io/part-of": "kube-prometheus-stack"
"app.kubernetes.io/version": "79.0.1"
"chart": "kube-prometheus-stack-79.0.1"
"heritage": "Helm"
"release": "kube-prometheus-stack-1761819498"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"automountServiceAccountToken": true
---
"kind": "ClusterRole"
"apiVersion": "rbac.authorization.k8s.io/v1"
"metadata":
"name": "kube-prometheus-stack-1761-prometheus"
"labels":
"app": "kube-prometheus-stack-prometheus"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/part-of": "kube-prometheus-stack"
"app.kubernetes.io/version": "79.0.1"
"chart": "kube-prometheus-stack-79.0.1"
"heritage": "Helm"
"release": "kube-prometheus-stack-1761819498"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"rules":
-
"verbs":
- "get"
- "list"
- "watch"
"apiGroups":
- ""
"resources":
- "nodes"
- "nodes/metrics"
- "services"
- "endpoints"
- "pods"
-
"verbs":
- "get"
- "list"
- "watch"
"apiGroups":
- "discovery.k8s.io"
"resources":
- "endpointslices"
-
"verbs":
- "get"
- "list"
- "watch"
"apiGroups":
- "networking.k8s.io"
"resources":
- "ingresses"
-
"verbs":
- "get"
"nonResourceURLs":
- "/metrics"
- "/metrics/cadvisor"
---
"kind": "ClusterRoleBinding"
"apiVersion": "rbac.authorization.k8s.io/v1"
"metadata":
"name": "kube-prometheus-stack-1761-prometheus"
"labels":
"app": "kube-prometheus-stack-prometheus"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/part-of": "kube-prometheus-stack"
"app.kubernetes.io/version": "79.0.1"
"chart": "kube-prometheus-stack-79.0.1"
"heritage": "Helm"
"release": "kube-prometheus-stack-1761819498"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"subjects":
-
"kind": "ServiceAccount"
"name": "kube-prometheus-stack-1761-prometheus"
"namespace": "kube-mon"
"roleRef":
"apiGroup": "rbac.authorization.k8s.io"
"kind": "ClusterRole"
"name": "kube-prometheus-stack-1761-prometheus"
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,80 @@
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "kube-prometheus-stack-1761-prometheus"
"namespace": "kube-mon"
"labels":
"app": "kube-prometheus-stack-prometheus"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761819498"
"app.kubernetes.io/managed-by": "Helm"
"app.kubernetes.io/part-of": "kube-prometheus-stack"
"app.kubernetes.io/version": "79.0.1"
"chart": "kube-prometheus-stack-79.0.1"
"heritage": "Helm"
"release": "kube-prometheus-stack-1761819498"
"self-monitor": "true"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"spec":
"ports":
-
"name": "http-web"
"protocol": "TCP"
"port": 9090
"targetPort": 9090
-
"name": "reloader-web"
"protocol": "TCP"
"appProtocol": "http"
"port": 8080
"targetPort": "reloader-web"
"selector":
"app.kubernetes.io/name": "prometheus"
"operator.prometheus.io/name": "kube-prometheus-stack-1761-prometheus"
"type": "ClusterIP"
"sessionAffinity": "None"
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "prometheus-operated"
"namespace": "kube-mon"
"labels":
"app.kubernetes.io/managed-by": "prometheus-operator"
"managed-by": "prometheus-operator"
"operated-prometheus": "true"
"spec":
"ports":
-
"name": "http-web"
"protocol": "TCP"
"port": 9090
"targetPort": "http-web"
"selector":
"app.kubernetes.io/name": "prometheus"
"type": "ClusterIP"
"sessionAffinity": "None"
"clusterIP": "None"
---
"kind": "Service"
"apiVersion": "v1"
"metadata":
"name": "prometheus-operated-nodeport"
"namespace": "kube-mon"
"labels":
"k8slens-edit-resource-version": "v1"
"spec":
"ports":
-
"name": "http-web"
"protocol": "TCP"
"port": 9090
"targetPort": "http-web"
"nodePort": 31595
"selector":
"app.kubernetes.io/name": "prometheus"
"type": "NodePort"
"sessionAffinity": "None"
"externalTrafficPolicy": "Cluster"
@@ -0,0 +1,302 @@
---
"kind": "StatefulSet"
"apiVersion": "apps/v1"
"metadata":
"name": "prometheus-kube-prometheus-stack-1761-prometheus"
"namespace": "kube-mon"
"labels":
"app": "kube-prometheus-stack-prometheus"
"app.kubernetes.io/instance": "kube-prometheus-stack-1761-prometheus"
"app.kubernetes.io/managed-by": "prometheus-operator"
"app.kubernetes.io/name": "prometheus"
"app.kubernetes.io/part-of": "kube-prometheus-stack"
"app.kubernetes.io/version": "79.0.1"
"chart": "kube-prometheus-stack-79.0.1"
"heritage": "Helm"
"k8slens-edit-resource-version": "v1"
"managed-by": "prometheus-operator"
"operator.prometheus.io/mode": "server"
"operator.prometheus.io/name": "kube-prometheus-stack-1761-prometheus"
"operator.prometheus.io/shard": "0"
"prometheus": "kube-prometheus-stack-1761-prometheus"
"release": "kube-prometheus-stack-1761819498"
"annotations":
"meta.helm.sh/release-name": "kube-prometheus-stack-1761819498"
"meta.helm.sh/release-namespace": "kube-mon"
"prometheus-operator-input-hash": "5891682108210749018"
"spec":
"replicas": 1
"selector":
"matchLabels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761-prometheus"
"app.kubernetes.io/managed-by": "prometheus-operator"
"app.kubernetes.io/name": "prometheus"
"operator.prometheus.io/name": "kube-prometheus-stack-1761-prometheus"
"operator.prometheus.io/shard": "0"
"prometheus": "kube-prometheus-stack-1761-prometheus"
"template":
"metadata":
"labels":
"app.kubernetes.io/instance": "kube-prometheus-stack-1761-prometheus"
"app.kubernetes.io/managed-by": "prometheus-operator"
"app.kubernetes.io/name": "prometheus"
"app.kubernetes.io/version": "3.7.2"
"operator.prometheus.io/name": "kube-prometheus-stack-1761-prometheus"
"operator.prometheus.io/shard": "0"
"prometheus": "kube-prometheus-stack-1761-prometheus"
"annotations":
"kubectl.kubernetes.io/default-container": "prometheus"
"spec":
"volumes":
-
"name": "config"
"secret":
"secretName": "prometheus-kube-prometheus-stack-1761-prometheus"
"defaultMode": 420
-
"name": "tls-assets"
"projected":
"sources":
-
"secret":
"name": "prometheus-kube-prometheus-stack-1761-prometheus-tls-assets-0"
"defaultMode": 420
-
"name": "config-out"
"emptyDir":
"medium": "Memory"
-
"name": "prometheus-kube-prometheus-stack-1761-prometheus-rulefiles-0"
"configMap":
"name": "prometheus-kube-prometheus-stack-1761-prometheus-rulefiles-0"
"defaultMode": 420
-
"name": "web-config"
"secret":
"secretName": "prometheus-kube-prometheus-stack-1761-prometheus-web-config"
"defaultMode": 420
"initContainers":
-
"name": "init-config-reloader"
"image": "quay.io/prometheus-operator/prometheus-config-reloader:v0.86.1"
"command":
- "/bin/prometheus-config-reloader"
"args":
- "--watch-interval=0"
- "--listen-address=:8081"
- "--config-file=/etc/prometheus/config/prometheus.yaml.gz"
- "--config-envsubst-file=/etc/prometheus/config_out/prometheus.env.yaml"
- "--watched-dir=/etc/prometheus/rules/prometheus-kube-prometheus-stack-1761-prometheus-rulefiles-0"
"ports":
-
"name": "reloader-init"
"containerPort": 8081
"protocol": "TCP"
"env":
-
"name": "POD_NAME"
"valueFrom":
"fieldRef":
"apiVersion": "v1"
"fieldPath": "metadata.name"
-
"name": "SHARD"
"value": "0"
"resources": {}
"volumeMounts":
-
"name": "config"
"mountPath": "/etc/prometheus/config"
-
"name": "config-out"
"mountPath": "/etc/prometheus/config_out"
-
"name": "prometheus-kube-prometheus-stack-1761-prometheus-rulefiles-0"
"mountPath": "/etc/prometheus/rules/prometheus-kube-prometheus-stack-1761-prometheus-rulefiles-0"
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "FallbackToLogsOnError"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"capabilities":
"drop":
- "ALL"
"readOnlyRootFilesystem": true
"allowPrivilegeEscalation": false
"containers":
-
"name": "prometheus"
"image": "quay.io/prometheus/prometheus:v3.7.2"
"args":
- "--config.file=/etc/prometheus/config_out/prometheus.env.yaml"
- "--web.enable-lifecycle"
- "--web.external-url=http://kube-prometheus-stack-1761-prometheus.kube-mon:9090"
- "--web.route-prefix=/"
- "--storage.tsdb.retention.time=10d"
- "--storage.tsdb.path=/prometheus"
- "--storage.tsdb.wal-compression"
- "--web.config.file=/etc/prometheus/web_config/web-config.yaml"
"ports":
-
"name": "http-web"
"containerPort": 9090
"protocol": "TCP"
"resources": {}
"volumeMounts":
-
"name": "config-out"
"readOnly": true
"mountPath": "/etc/prometheus/config_out"
-
"name": "tls-assets"
"readOnly": true
"mountPath": "/etc/prometheus/certs"
-
"name": "prometheus-kube-prometheus-stack-1761-prometheus-db"
"mountPath": "/prometheus"
"subPath": "prometheus-db"
-
"name": "prometheus-kube-prometheus-stack-1761-prometheus-rulefiles-0"
"mountPath": "/etc/prometheus/rules/prometheus-kube-prometheus-stack-1761-prometheus-rulefiles-0"
-
"name": "web-config"
"readOnly": true
"mountPath": "/etc/prometheus/web_config/web-config.yaml"
"subPath": "web-config.yaml"
"livenessProbe":
"httpGet":
"path": "/-/healthy"
"port": "http-web"
"scheme": "HTTP"
"timeoutSeconds": 3
"periodSeconds": 5
"successThreshold": 1
"failureThreshold": 6
"readinessProbe":
"httpGet":
"path": "/-/ready"
"port": "http-web"
"scheme": "HTTP"
"timeoutSeconds": 3
"periodSeconds": 5
"successThreshold": 1
"failureThreshold": 3
"startupProbe":
"httpGet":
"path": "/-/ready"
"port": "http-web"
"scheme": "HTTP"
"timeoutSeconds": 3
"periodSeconds": 15
"successThreshold": 1
"failureThreshold": 60
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "FallbackToLogsOnError"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"capabilities":
"drop":
- "ALL"
"readOnlyRootFilesystem": true
"allowPrivilegeEscalation": false
-
"name": "config-reloader"
"image": "quay.io/prometheus-operator/prometheus-config-reloader:v0.86.1"
"command":
- "/bin/prometheus-config-reloader"
"args":
- "--listen-address=:8080"
- "--reload-url=http://127.0.0.1:9090/-/reload"
- "--config-file=/etc/prometheus/config/prometheus.yaml.gz"
- "--config-envsubst-file=/etc/prometheus/config_out/prometheus.env.yaml"
- "--watched-dir=/etc/prometheus/rules/prometheus-kube-prometheus-stack-1761-prometheus-rulefiles-0"
"ports":
-
"name": "reloader-web"
"containerPort": 8080
"protocol": "TCP"
"env":
-
"name": "POD_NAME"
"valueFrom":
"fieldRef":
"apiVersion": "v1"
"fieldPath": "metadata.name"
-
"name": "SHARD"
"value": "0"
"resources": {}
"volumeMounts":
-
"name": "config"
"mountPath": "/etc/prometheus/config"
-
"name": "config-out"
"mountPath": "/etc/prometheus/config_out"
-
"name": "prometheus-kube-prometheus-stack-1761-prometheus-rulefiles-0"
"mountPath": "/etc/prometheus/rules/prometheus-kube-prometheus-stack-1761-prometheus-rulefiles-0"
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "FallbackToLogsOnError"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"capabilities":
"drop":
- "ALL"
"readOnlyRootFilesystem": true
"allowPrivilegeEscalation": false
"restartPolicy": "Always"
"terminationGracePeriodSeconds": 600
"dnsPolicy": "ClusterFirst"
"serviceAccountName": "kube-prometheus-stack-1761-prometheus"
"serviceAccount": "kube-prometheus-stack-1761-prometheus"
"automountServiceAccountToken": true
"shareProcessNamespace": false
"securityContext":
"runAsUser": 1000
"runAsGroup": 2000
"runAsNonRoot": true
"fsGroup": 2000
"seccompProfile":
"type": "RuntimeDefault"
"affinity":
"podAntiAffinity":
"preferredDuringSchedulingIgnoredDuringExecution":
-
"weight": 100
"podAffinityTerm":
"labelSelector":
"matchExpressions":
-
"key": "app.kubernetes.io/name"
"operator": "In"
"values":
- "prometheus"
-
"key": "app.kubernetes.io/instance"
"operator": "In"
"values":
- "kube-prometheus-stack-1761-prometheus"
"topologyKey": "kubernetes.io/hostname"
"schedulerName": "default-scheduler"
"volumeClaimTemplates":
-
"kind": "PersistentVolumeClaim"
"apiVersion": "v1"
"metadata":
"name": "prometheus-kube-prometheus-stack-1761-prometheus-db"
"spec":
"accessModes":
- "ReadWriteOnce"
"resources":
"requests":
"storage": "50Gi"
"storageClassName": "nfs-csi"
"volumeMode": "Filesystem"
"serviceName": "prometheus-operated"
"podManagementPolicy": "Parallel"
"updateStrategy":
"type": "RollingUpdate"
"revisionHistoryLimit": 10
"persistentVolumeClaimRetentionPolicy":
"whenDeleted": "Retain"
"whenScaled": "Retain"
@@ -0,0 +1,39 @@
---
"kind": "ServiceAccount"
"apiVersion": "v1"
"metadata":
"name": "promtail"
"namespace": "loki"
---
"kind": "ClusterRole"
"apiVersion": "rbac.authorization.k8s.io/v1"
"metadata":
"name": "promtail"
"rules":
-
"verbs":
- "get"
- "list"
- "watch"
"apiGroups":
- ""
"resources":
- "nodes"
- "nodes/proxy"
- "services"
- "endpoints"
- "pods"
---
"kind": "ClusterRoleBinding"
"apiVersion": "rbac.authorization.k8s.io/v1"
"metadata":
"name": "promtail"
"subjects":
-
"kind": "ServiceAccount"
"name": "promtail"
"namespace": "loki"
"roleRef":
"apiGroup": "rbac.authorization.k8s.io"
"kind": "ClusterRole"
"name": "promtail"
@@ -0,0 +1,50 @@
---
"kind": "ConfigMap"
"apiVersion": "v1"
"metadata":
"name": "promtail-config"
"namespace": "loki"
"data":
"promtail.yaml": |
server:
http_listen_port: 9080
grpc_listen_port: 0
clients:
- url: http://loki.loki.svc.cluster.local:3100/loki/api/v1/push
positions:
filename: /run/promtail/positions.yaml
scrape_configs:
- job_name: kubernetes-pods
pipeline_stages:
- cri: {}
kubernetes_sd_configs:
- role: pod
relabel_configs:
- action: replace
source_labels: [__meta_kubernetes_pod_node_name]
target_label: __host__
- action: replace
source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
regex: (.+)
target_label: app
- action: replace
source_labels: [__meta_kubernetes_pod_label_app]
regex: (.+)
target_label: app
- action: replace
source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- action: replace
source_labels: [__meta_kubernetes_pod_name]
target_label: pod
- action: replace
source_labels: [__meta_kubernetes_pod_container_name]
target_label: container
- action: replace
source_labels: [__meta_kubernetes_pod_uid, __meta_kubernetes_pod_container_name]
separator: /
replacement: /var/log/pods/*$1/*.log
target_label: __path__
@@ -0,0 +1,84 @@
---
"kind": "DaemonSet"
"apiVersion": "apps/v1"
"metadata":
"name": "promtail"
"namespace": "loki"
"spec":
"selector":
"matchLabels":
"app": "promtail"
"template":
"metadata":
"labels":
"app": "promtail"
"spec":
"volumes":
-
"name": "config"
"configMap":
"name": "promtail-config"
"defaultMode": 420
-
"name": "run"
"hostPath":
"path": "/run/promtail"
"type": ""
-
"name": "pods"
"hostPath":
"path": "/var/log/pods"
"type": ""
"containers":
-
"name": "promtail"
"image": "grafana/promtail:3.4.2"
"args":
- "-config.file=/etc/promtail/promtail.yaml"
- "-config.expand-env=true"
"ports":
-
"name": "http-metrics"
"containerPort": 9080
"protocol": "TCP"
"env":
-
"name": "HOSTNAME"
"valueFrom":
"fieldRef":
"apiVersion": "v1"
"fieldPath": "spec.nodeName"
"resources": {}
"volumeMounts":
-
"name": "config"
"mountPath": "/etc/promtail"
-
"name": "run"
"mountPath": "/run/promtail"
-
"name": "pods"
"readOnly": true
"mountPath": "/var/log/pods"
"terminationMessagePath": "/dev/termination-log"
"terminationMessagePolicy": "File"
"imagePullPolicy": "IfNotPresent"
"securityContext":
"privileged": true
"runAsUser": 0
"restartPolicy": "Always"
"terminationGracePeriodSeconds": 30
"dnsPolicy": "ClusterFirst"
"serviceAccountName": "promtail"
"serviceAccount": "promtail"
"securityContext": {}
"schedulerName": "default-scheduler"
"tolerations":
-
"operator": "Exists"
"updateStrategy":
"type": "RollingUpdate"
"rollingUpdate":
"maxUnavailable": 1
"maxSurge": 0
"revisionHistoryLimit": 10
File diff suppressed because it is too large Load Diff