Goed voor iedereen.
Ik heb online geen algemene handleiding gevonden over het loggen en verzamelen van statistieken van services van derden in systemen die zijn geïmplementeerd
Loggen
Veel bedrijven gebruiken een stapel technologieën om logbestanden te verzamelen, bekijken en centraliseren
waarden.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"
Logboeken naar een exemplaar verzenden
U moet deze add-on op alles installeren
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 }}"
...
waar loki_url:
statistieken
Metrische gegevens worden verzameld uit PostgreSQL met behulp van
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"
...
Voor meer duidelijkheid zullen we de namen van externe stateful services schrijven met behulp van eindpunten.
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 }}
Het configureren van Prometheus om postgres_exporter-gegevens te ontvangen, gebeurt door waarden in het subdiagram te bewerken.
waarden.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
Om de ontvangen gegevens te visualiseren, installeert u het juiste Dashboard
Hoe het eruit ziet
Ik hoop dat dit korte artikel je heeft geholpen de belangrijkste ideeën achter deze oplossing te begrijpen en je tijd heeft bespaard bij het opzetten van monitoring en loggen van externe services voor Loki/Prometheus in een Kubernetes-cluster.
Bron: www.habr.com