
Përshëndetje të gjithëve.
Nuk gjeta në internet një udhëzues të përgjithshëm për regjistrimin dhe mbledhjen e metrikave nga shërbime të jashtme në sistemet e zhvilluara në . Po publikoj zgjidhjen time. Ky artikull parashikon që ju tashmë keni një dhe shërbime të tjera. Si shembull të burimit të të dhënave nga një shërbim external stateful do të përdoret DBMS në kontejner . Në kompani përdoret menaxheri i paketave , më poshtë në tekst do të jenë shembuj në të. Për zgjidhjen e gjithanshme ne përgatisim chart-in tonë, duke përfshirë chart-e të brendshme të të gjithë shërbimeve të përdorura.
Regjistrimi
Shumë kompani përdorin një grup teknologjish + + , e njohur si ELK. Në rastin tonë nuk ka nevojë të indeksojmë përmbajtjen dhe kam aplikuar një më të lehtë. Ai është në dispozicion si një paketë Helm, ne e kemi shtuar si subchart duke ndryshuar vlerat për ingress dhe pv sipas sistemit tonë.
values.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"
Për të dërguar log-et në instancën përdorim .
Duhet të instalohet kjo shtesë në të gjitha hostet, nga të cilat dëshironi të merrni log-e. Ekzistojnë disa mënyra për të treguar demonit se si të përdorë shtesën. Unë e bëj përzgjedhjen e driver-it në yaml , i cili është pjesë e playbook.
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 }}"
...
ku loki_url:
Metrikat
Metrikat mblidhen nga PostgreSQL me ndihmën e për . Vazhdimi i skedarit të mësipërm playbook.
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"
...
Për një qartësi më të madhe të emrave të shërbimeve stateful jashtme, do t'i shkruajmë përmes Endpoints.
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 }}
Konfigurimi i Prometheus për të marrë të dhënat nga postgres_exporter bëhet duke redaktuar values në subchart.
values.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
Për të vizualizuar të dhënat e marra, instaloni Dashboard-in përkatës në
dhe konfiguroni burimet e të dhënave. Kjo gjithashtu mund të bëhet përmes values në subchart-in Grafana.
Si duket kjo

Shpresoj se ky artikull i shkurtër ju ndihmoi të kuptoni idetë kryesore të këtij zgjidhjeje dhe do të kursejë kohë gjatë konfigurimit të monitorimit dhe logimit të shërbimeve jashtme për Loki/Prometheus në klasterin Kubernetes.
Burimi: habr.com
