Das Kubernetes-Protokollierungssystem startet Loki-Stack neu
Betriebs- und Wartungsgespräch für Scofield-Neulinge
Einführung in Loki
Grafana Loki ist eine Reihe von Komponenten, die einen voll funktionsfähigen Protokollierungsstapel bilden können.
Im Gegensatz zu anderen Protokollierungssystemen basiert Loki auf der Idee, nur Metadaten zu Protokollen zu indizieren: Tags (genau wie Prometheus-Tags). Anschließend werden die Protokolldaten selbst komprimiert und in Blöcken im Objektspeicher (z. B. S3 oder GCS) oder sogar lokal im Dateisystem gespeichert. Kleine Indizes und stark komprimierte Blöcke vereinfachen den Betrieb und senken die Kosten von Loki erheblich.
Im Vergleich zu EKL ist Loki sehr leicht und nach der Verwendung von Loki verliert ELK plötzlich seinen Duft! Haha ~~~
Loki-Stack-Komponenten
Stellen Sie zwei Bilder zuerst
- Promtail
Promtail ist ein Protokollsammlungstool, mit dem Containerprotokolle an Loki- oder Grafana-Dienste gesendet werden. Dieses Tool umfasst hauptsächlich das Erkennen von Sammlungszielen und das Hinzufügen von Label-Tags zu Protokolldatenströmen und das anschließende Senden an Loki. Darüber hinaus basiert die Diensterkennung von Promtail auf Prometheus Der Service Discovery-Mechanismus ist implementiert. - Loki
Loki ist ein Protokollaggregationssystem, das horizontal skaliert werden kann, hoch verfügbar ist und Mandantenfähigkeit unterstützt. Es verwendet denselben Mechanismus zur Diensterkennung wie Prometheus und fügt dem Protokolldatenstrom Tags hinzu, anstatt einen Volltextindex zu erstellen. Daher haben die von Promtail empfangenen Protokolle und die angewendeten Metriken dieselbe Beschriftung. Es bietet nicht nur eine bessere Kontextumschaltung zwischen Protokollen und Indikatoren, sondern vermeidet auch die Volltextindizierung von Protokollen. - Grafana
Grafana ist eine Open-Source-Plattform zur Überwachung und visuellen Beobachtung. Sie unterstützt eine sehr umfangreiche Datenquelle. Im Loki-Technologie-Stack wird sie speziell zur Anzeige von Zeitreihendaten aus Datenquellen wie Prometheus und Loki verwendet. Es ermöglicht auch Vorgänge wie Abfrage, Visualisierung, Alarm usw., mit denen Sie das Daten-Dashboard erstellen, untersuchen und freigeben können.
Als Nächstes können Sie loslegen und Loki-Stack ausprobieren.
Verwenden Sie das Ruder, um den Loki-Stack bereitzustellen
1. Voraussetzung ist, dass Sie einen k8s-Cluster haben und das Helm-Tool installieren.
2. Fügen Sie die Helm-Quelle hinzu
helm repo add loki https://grafana.github.io/loki/charts
下载到本地,也可以直接安装,因为需要修改存储类及其他一些配置,我习惯下载到本地,方便修改调试
helm fetch loki/loki-stack
tar -zxf loki-stack-0.38.1.tgz
cd loki-stack/
[root@ loki-stack]# ls -al
drwxr-xr-x. 7 root root 85 Jul 2 07:25 charts
-rwxr-xr-x. 1 root root 369 Jul 1 01:46 Chart.yaml
-rwxr-xr-x. 1 root root 342 Jul 1 01:46 .helmignore
-rwxr-xr-x. 1 root root 1662 Jul 1 01:46 README.md
-rwxr-xr-x. 1 root root 533 Jul 1 01:46 requirements.lock
-rwxr-xr-x. 1 root root 595 Jul 1 01:46 requirements.yaml
drwxr-xr-x. 3 root root 80 Jul 2 08:46 templates
-rwxr-xr-x. 1 root root 206 Jul 16 00:53 values.yaml
3. Ändern Sie die Datei values.yaml von loki-stack. Ich habe hier nur loki und promtail installiert und verwende den prometheus-Operator, den der Cluster für grafana und prometheus bereitgestellt hat
[root@ ]# cat values.yaml
loki:
enabled: true
promtail:
enabled: true
4.
Ändern Sie die Werte von loki.yaml, ändern Sie hauptsächlich die Speicherklasse und die Persistenzgröße, und öffnen Sie serviceMonitor, um loki zu überwachen
[root@ loki-stack]# cd charts/loki/
[root@ loki]# ll
total 20
-rw-r--r-- 1 root root 367 Nov 28 00:31 Chart.yaml
-rw-r--r-- 1 root root 1846 Nov 28 00:31 README.md
drwxr-xr-x 2 root root 4096 Dec 1 09:14 templates
-rw-r--r-- 1 root root 6695 Dec 1 09:15 values.yaml
persistence:
enabled: true
storageClass: "rbd"
accessModes:
- ReadWriteOnce
size: 100Gi
annotations: {}
serviceMonitor:
enabled: true
interval: ""
additionalLabels: {}
annotations: {}
# scrapeTimeout: 10s
5.
Ändern Sie die Datei values.yaml von promtail. Wenn Sie weitere Protokollverzeichnisse hinzufügen möchten, können Sie diese hier hinzufügen
# Extra volumes to scrape logs from
volumes:
- name: docker
hostPath:
path: /var/lib/docker/containers
- name: pods
hostPath:
path: /var/log/pods
6. Führen Sie die Bereitstellung durch
cd loki-stack
kubectl create ns loki
helm install loki -n loki -f values.yaml .
[root@ loki-stack]# helm ls -n loki
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
loki loki 1 2020-12-01 09:15:22.971437761 +0800 CST deployed loki-stack-2.1.0 v2.0.0
7. Melden Sie sich bei der vorhandenen grafana-Oberfläche an, fügen Sie die loki-Quelle hinzu und rufen Sie
zuerst die Serviceadresse von loki ab
[root@ loki-stack]# kubectl get svc -n loki
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
loki NodePort 10.101.129.255 <none> 3100:30439/TCP 92m
loki-headless ClusterIP None <none> 3100/TCP 92m
Klicken Sie nach dem Ausfüllen der Informationen auf Speichern und testen, um zu bestätigen, dass grafana eine Verbindung zu loki
8 herstellen kann . Klicken Sie auf Durchsuchen. Sie können das Protokoll mit LogQL abfragen, wie unten gezeigt
Natürlich können Sie auch Vorlagen anderer importieren. Weitere
Dashboards können auf der offiziellen Website https://grafana.com/grafana/dashboards angezeigt werden. PS: Artikel werden mit dev.kubeops.net synchronisiert