
Përshëndetje të gjithë.
Nuk kam gjetur në rrjet një udhëzues të përgjithshëm për regjistrimin dhe mbledhjen e metrikeve nga shërbimet e jashtme në sistemet e shpërndara në . Publikoj zgjidhjen time. Ky artikull supozon që të keni një dhe shërbime të tjera të punës. Si një shembull burimi të dhënash nga një shërbim stateful të jashtëm do të përdorim një DBMS në kontejner . Në kompaninë tonë përdoret një menaxher paketash , më poshtë do të ketë shembuj mbi të. Për tërë zgjidhjen ne përgatisim një chart tonë, duke përfshirë nëndërchartet e të gjithë shërbimeve të përdorura.
Regjistrimi
Shumë kompani për mbledhjen dhe shikimin dhe centralizimin e regjistrimeve përdorin një stak teknologjish + + , e njohur ndryshe si ELK. Në rastin tonë nuk ka nevojë të indeksohet përmbajtja dhe unë kam aplikuar një zgjidhje më të lehtë . Ai është i disponueshëm si një paketë Helm, ne e kemi shtuar atë 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ë përdorim .
Duhet të instaloni këtë shtesë në të gjitha hostet nga të cilat dëshironi të merrni log-et. Ka disa mënyra për të treguar demonit si të përdorë shtesën. Unë e bëj zgjedhjen e drejtuesit në yaml , i cili është pjesë e playbook.
postgres.yaml
- name: Ekzekuto konteinerët
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:
Metricat
Merren metricat 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ë pamje më të qartë të emrave të shërbimeve stateful jashtë, 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 vlerat 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 vizualizimin e të dhënave të marra, instaloni Dashboard përkatës në
dhe konfiguroni burimet e të dhënave. Kjo mund të bëhet gjithashtu përmes vlerave në subchart Grafana.
Si duket kjo

Shpresoj që ky artikull i shkurtër ju ndihmoi të kuptoni idetë kryesore të këtij zgjidhjeje dhe do t'ju kursejë kohë në konfigurimin e monitoringut dhe regjistrimit të shërbimeve të jashtme për Loki/Prometheus në klasterin Kubernetes.
Burimi: habr.com
