Viel Glück an alle.
Ich habe online keine allgemeine Anleitung zum Protokollieren und Sammeln von Metriken von Drittanbieterdiensten in bereitgestellten Systemen gefunden
Protokollierung
Viele Unternehmen nutzen eine Reihe von Technologien, um Protokolle zu sammeln, anzuzeigen und zu zentralisieren
werte.yaml
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- host: kube-loki.example.domain
paths:
- /
tls: []
....
persistence:
type: pvc
enabled: true
accessModes:
- ReadWriteOnce
size: 100Gi
finalizers:
- kubernetes.io/pvc-protection
existingClaim: "pv-loki"
Um Protokolle an eine Instanz zu senden
Sie müssen dieses Add-on auf allem installieren
postgres.yaml
- name: Run containers
docker_compose:
project_name: main-postgres
definition:
version: '3.7'
services:
p:
image: "{{ postgres_version }}"
container_name: postgresql
restart: always
volumes:
- "{{ postgres_dir }}/data:/var/lib/postgresql/data"
- "{{ postgres_dir }}/postgres_init_scripts:/docker-entrypoint-initdb.d"
environment:
POSTGRES_PASSWORD: {{ postgres_pass }}
POSTGRES_USER: {{ postgres_user }}
ports:
- "{{ postgres_ip }}:{{ postgres_port }}:5432"
logging:
driver: "loki"
options:
loki-url: "{{ loki_url }}"
loki-batch-size: "{{ loki_batch_size }}"
loki-retries: "{{ loki_retries }}"
...
wo loki_url:
Metriken
Metriken werden mithilfe von PostgreSQL erfasst
postgres.yaml
...
pexp:
image: "wrouesnel/postgres_exporter"
container_name: pexporter
restart: unless-stopped
environment:
DATA_SOURCE_NAME: "postgresql://{{ postgres_user }}:{{ postgres_pass }}@p:5432/postgres?sslmode=disable"
ports:
- "{{ postgres_ip }}:{{ postgres_exporter_port }}:9187"
logging:
driver: "json-file"
options:
max-size: "5m"
...
Zur besseren Übersicht schreiben wir die Namen externer zustandsbehafteter Dienste, die Endpunkte verwenden.
postgres-service.yaml
apiVersion: v1
kind: Endpoints
metadata:
name: postgres-exporter
subsets:
- addresses:
- ip: {{ .Values.service.postgres.ip }}
ports:
- port: {{ .Values.service.postgres.port }}
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: postgres-exporter
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
spec:
ports:
- protocol: TCP
port: {{ .Values.service.postgres.port }}
targetPort: {{ .Values.service.postgres.port }}
Die Konfiguration von Prometheus für den Empfang von postgres_exporter-Daten erfolgt durch Bearbeiten der Werte im Unterdiagramm.
werte.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
Um die empfangenen Daten zu visualisieren, installieren Sie das entsprechende Dashboard
Wie es aussieht
Ich hoffe, dieser kurze Artikel hat Ihnen geholfen, die Hauptideen hinter dieser Lösung zu verstehen und Ihnen Zeit beim Einrichten der Überwachung und Protokollierung externer Dienste für Loki/Prometheus in einem Kubernetes-Cluster zu sparen.
Source: habr.com