Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-wiki:kubernetes:cluster_logging_loki

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
it-wiki:kubernetes:cluster_logging_loki [2025/09/04 11:39] markoit-wiki:kubernetes:cluster_logging_loki [2025/09/05 07:36] (aktuell) – [Installation von Loki] marko
Zeile 70: Zeile 70:
   * **Microservice**   * **Microservice**
 (vgl. [[https://grafana.com/docs/loki/latest/setup/install/helm/ (vgl. [[https://grafana.com/docs/loki/latest/setup/install/helm/
-concepts/|]]Grafana Labs Documentation)+concepts/|Grafana Labs Documentation]])
 \\ \\
  
Zeile 315: Zeile 315:
       memory: 128Mi       memory: 128Mi
 </code> </code>
 +
 +===== Installation von Grafana mittels Helm-Chart =====
 +Die Bereitstellung von Grafana erfolgt analog zu Loki über ein offizielles Helm-Chart. Auch hier kann wieder das selbe Repository von Grafana verwendet werden.
 +
 +<code bash>
 +helm install grafana grafana/grafana -f grafana-values.yaml --create-namespace -n grafana
 +</code>
 +
 +Für die Installation empfiehlt sich die Verwendung einer vorbereiteten Konfigurationsdatei, welche die notwendigen Parameter für eine einfache Grafana-Instanz enthält. Diese kann unter folgender Adresse abgerufen werden:
 +[[https://grafana.com/docs/loki/latest/setup/install/helm/monitor-and-alert/with-grafana-cloud/?utm_source=chatgpt.com|Grafana Cloud Helm-Konfiguration]]
 +
 +Für unsere kleine Übung verwenden wir am besten folgende Konfiguration. Diese beinhaltet bereits ein vorkonfiguriertes Dashboard.
 +''grafana-values.yaml''
 +<code yaml>
 +# grafana-values.yaml - Erweiterte Version mit Dashboards
 +replicas: 1
 +
 +resources:
 +  limits:
 +    cpu: 300m
 +    memory: 512Mi
 +  requests:
 +    cpu: 100m
 +    memory: 256Mi
 +
 +persistence:
 +  enabled: true
 +  size: 5Gi
 +  storageClassName: null
 +
 +adminUser: admin
 +adminPassword: admin123
 +
 +# Service configuration
 +service:
 +  type: ClusterIP
 +  port: 80
 +
 +# Datasources
 +datasources:
 +  datasources.yaml:
 +    apiVersion: 1
 +    datasources:
 +    - name: Loki
 +      type: loki
 +      url: http://loki-gateway.loki.svc.cluster.local
 +      access: proxy
 +      isDefault: true
 +      jsonData:
 +        maxLines: 1000
 +        derivedFields:
 +          - datasourceUid: loki
 +            matcherRegex: "traceID=(\\w+)"
 +            name: TraceID
 +            url: "$${__value.raw}"
 +
 +# Dashboard providers
 +dashboardProviders:
 +  dashboardproviders.yaml:
 +    apiVersion: 1
 +    providers:
 +    - name: 'kubernetes'
 +      orgId: 1
 +      folder: 'Kubernetes'
 +      type: file
 +      disableDeletion: false
 +      editable: true
 +      updateIntervalSeconds: 10
 +      allowUiUpdates: true
 +      options:
 +        path: /var/lib/grafana/dashboards/kubernetes
 +    - name: 'loki'
 +      orgId: 1
 +      folder: 'Loki'
 +      type: file
 +      disableDeletion: false
 +      editable: true
 +      updateIntervalSeconds: 10
 +      allowUiUpdates: true
 +      options:
 +        path: /var/lib/grafana/dashboards/loki
 +
 +# Custom Dashboards
 +dashboards:
 +  kubernetes:
 +    kubernetes-cluster-overview:
 +      json: |
 +        {
 +          "annotations": {
 +            "list": [
 +              {
 +                "builtIn": 1,
 +                "datasource": "-- Grafana --",
 +                "enable": true,
 +                "hide": true,
 +                "iconColor": "rgba(0, 211, 255, 1)",
 +                "name": "Annotations & Alerts",
 +                "type": "dashboard"
 +              }
 +            ]
 +          },
 +          "description": "Kubernetes Cluster Overview with Loki Logs",
 +          "editable": true,
 +          "gnetId": null,
 +          "graphTooltip": 0,
 +          "id": null,
 +          "links": [],
 +          "panels": [
 +            {
 +              "datasource": "Loki",
 +              "fieldConfig": {
 +                "defaults": {},
 +                "overrides": []
 +              },
 +              "gridPos": {
 +                "h": 8,
 +                "w": 24,
 +                "x": 0,
 +                "y": 0
 +              },
 +              "id": 1,
 +              "options": {
 +                "showLabels": false,
 +                "showTime": false,
 +                "sortOrder": "Descending",
 +                "wrapLogMessage": false,
 +                "prettifyLogMessage": false,
 +                "enableLogDetails": true,
 +                "dedupStrategy": "none"
 +              },
 +              "targets": [
 +                {
 +                  "expr": "{namespace=~\".+\"} |= \"\"",
 +                  "refId": "A"
 +                }
 +              ],
 +              "title": "All Kubernetes Logs",
 +              "type": "logs"
 +            },
 +            {
 +              "datasource": "Loki",
 +              "fieldConfig": {
 +                "defaults": {
 +                  "color": {
 +                    "mode": "palette-classic"
 +                  },
 +                  "custom": {
 +                    "axisLabel": "",
 +                    "axisPlacement": "auto",
 +                    "barAlignment": 0,
 +                    "drawStyle": "line",
 +                    "fillOpacity": 10,
 +                    "gradientMode": "none",
 +                    "hideFrom": {
 +                      "legend": false,
 +                      "tooltip": false,
 +                      "vis": false
 +                    },
 +                    "lineInterpolation": "linear",
 +                    "lineWidth": 1,
 +                    "pointSize": 5,
 +                    "scaleDistribution": {
 +                      "type": "linear"
 +                    },
 +                    "showPoints": "never",
 +                    "spanNulls": false,
 +                    "stacking": {
 +                      "group": "A",
 +                      "mode": "none"
 +                    },
 +                    "thresholdsStyle": {
 +                      "mode": "off"
 +                    }
 +                  },
 +                  "mappings": [],
 +                  "thresholds": {
 +                    "mode": "absolute",
 +                    "steps": [
 +                      {
 +                        "color": "green",
 +                        "value": null
 +                      },
 +                      {
 +                        "color": "red",
 +                        "value": 80
 +                      }
 +                    ]
 +                  },
 +                  "unit": "short"
 +                },
 +                "overrides": []
 +              },
 +              "gridPos": {
 +                "h": 8,
 +                "w": 12,
 +                "x": 0,
 +                "y": 8
 +              },
 +              "id": 2,
 +              "options": {
 +                "legend": {
 +                  "calcs": [],
 +                  "displayMode": "list",
 +                  "placement": "bottom"
 +                },
 +                "tooltip": {
 +                  "mode": "single"
 +                }
 +              },
 +              "targets": [
 +                {
 +                  "expr": "sum(rate({namespace=~\".+\"}[5m])) by (namespace)",
 +                  "refId": "A"
 +                }
 +              ],
 +              "title": "Log Rate by Namespace",
 +              "type": "timeseries"
 +            },
 +            {
 +              "datasource": "Loki",
 +              "fieldConfig": {
 +                "defaults": {
 +                  "color": {
 +                    "mode": "thresholds"
 +                  },
 +                  "custom": {
 +                    "align": "auto",
 +                    "displayMode": "auto"
 +                  },
 +                  "mappings": [],
 +                  "thresholds": {
 +                    "mode": "absolute",
 +                    "steps": [
 +                      {
 +                        "color": "green",
 +                        "value": null
 +                      },
 +                      {
 +                        "color": "red",
 +                        "value": 80
 +                      }
 +                    ]
 +                  }
 +                },
 +                "overrides": []
 +              },
 +              "gridPos": {
 +                "h": 8,
 +                "w": 12,
 +                "x": 12,
 +                "y": 8
 +              },
 +              "id": 3,
 +              "options": {
 +                "showHeader": true
 +              },
 +              "targets": [
 +                {
 +                  "expr": "topk(10, sum(count_over_time({namespace=~\".+\"}[5m])) by (namespace, pod_name))",
 +                  "refId": "A"
 +                }
 +              ],
 +              "title": "Top 10 Pods by Log Volume",
 +              "type": "table"
 +            }
 +          ],
 +          "refresh": "30s",
 +          "schemaVersion": 30,
 +          "style": "dark",
 +          "tags": ["kubernetes", "logs"],
 +          "templating": {
 +            "list": []
 +          },
 +          "time": {
 +            "from": "now-1h",
 +            "to": "now"
 +          },
 +          "timepicker": {},
 +          "timezone": "",
 +          "title": "Kubernetes Cluster Overview",
 +          "uid": "kubernetes-cluster-overview",
 +          "version": 1
 +        }
 +
 +    kubernetes-namespace-logs:
 +      json: |
 +        {
 +          "annotations": {
 +            "list": []
 +          },
 +          "description": "Kubernetes Namespace Specific Logs",
 +          "editable": true,
 +          "
 +</code>
 +
 +===== Testen des Cluster Loggings =====
 +Um sich nun das Gesamtergebnis schnell anschauen zu können richtet man am besten ein Port-Forwarding zum Grafana WebUI auf Port 3000 ein.
 +<code bash>
 +kubectl port-forward service/grafana 3000:80 -n grafana
 +</code>
 +
 +==== Zugriff auf das Grafana-Webinterface ====
 +
 +Nach erfolgreicher Installation und korrekter Konfiguration kann auf das Grafana-Webinterface zugegriffen werden.
 +
 +Nach Eingabe der entsprechenden Zugangsdaten erfolgt die Anmeldung am System. Anschließend steht die vollständige Benutzeroberfläche von Grafana zur Verfügung, über die beispielsweise ein Dashboard für Loki genutzt oder eingerichtet werden kann.
it-wiki/kubernetes/cluster_logging_loki.1756985956.txt.gz · Zuletzt geändert: von marko