
Fat të gjithëve.
Nuk kam gjetur një udhëzues të përgjithësuar në internet për regjistrimin dhe mbledhjen e matjeve nga shërbimet e palëve të treta në sistemet e vendosura në . Unë po postoj zgjidhjen time. Ky artikull supozon se ju tashmë keni një punë dhe shërbime të tjera. Si shembull i një burimi të dhënash për një shërbim të jashtëm shtetëror, do të përdoret një DBMS në një enë . Kompania përdor një menaxher paketash , më poshtë në tekst do të ketë shembuj mbi të. Për të gjithë zgjidhjen, ne po përgatisim grafikun tonë, i cili përfshin grafikët e ndërthurur të të gjitha shërbimeve të përdorura.
Prerjet
ShumĂ« kompani pĂ«rdorin njĂ« grumbull teknologjish pĂ«r tĂ« mbledhur, parĂ« dhe centralizuar regjistrat + + , shkurtuar si ELK. NĂ« rastin tonĂ«, nuk ka nevojĂ« tĂ« indeksojmĂ« pĂ«rmbajtjen dhe kam pĂ«rdorur njĂ« peshĂ« mĂ« tĂ« lehtĂ« . ĂshtĂ« i disponueshĂ«m si njĂ« paketĂ« Helm, ne e shtuam atĂ« si njĂ« nĂ«ngrafikĂ« duke ndryshuar vlerat pĂ«r hyrje dhe pv pĂ«r t'iu pĂ«rshtatur sistemit tonĂ«.
vlerat.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 regjistrat në një shembull përdorim .
Duhet ta instaloni këtë shtesë në çdo gjë hostet nga të cilët dëshironi të merrni regjistrat. Ka disa mënyra për t'i treguar demonit se si të përdorë mbushjen. Unë zgjedh shoferin në yaml , e cila është pjesë libër lojërash.
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:
Metrikë
Metrikat mblidhen nga PostgreSQL duke përdorur për . Vazhdimi i dosjes së mësipërme libër lojërash.
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 qartësi më të madhe, ne do të shkruajmë emrat e shërbimeve të jashtme shtetërore duke përdorur 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ëna postgres_exporter bëhet duke redaktuar vlerat në nëngrafikë.
vlerat.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 panelin e duhur të kontrollit
dhe konfiguroni burimet e të dhënave. Kjo mund të bëhet edhe përmes vlerave në nëngrafinë Grafana.
Si duket

Shpresoj se ky artikull i shkurtër ju ka ndihmuar të kuptoni idetë kryesore pas kësaj zgjidhjeje dhe t'ju kursejë kohë kur vendosni monitorimin dhe regjistrimin e shërbimeve të jashtme për Loki/Prometheus në një grup Kubernetes.
Burimi: www.habr.com
