
Tere kÔigile.
Ma ei leidnud internetist ĂŒldist juhendit logimise ja metrikate kogumise kohta kolmandate osapoolte teenustelt sĂŒsteemidesse, mis on rajatud . Avaldan oma lahenduse. KĂ€esolev artikkel eeldab, et teil on juba toimiv ja teised teenused. Andmeallikana kasutame stateful-teenuse jaoks andmebaasi konteineris . EttevĂ”ttes kasutatakse pakettide haldurit , allpool tuuakse vĂ€lja nĂ€ited sellel. Kogu lahenduse jaoks valmistame ette oma charti, mis hĂ”lmab kĂ”igi kasutatavate teenuste sisemisi chart'e.
Logimine
Paljud ettevĂ”tted kasutavad logide kogumiseks, vaatamiseks ja tsentraliseerimiseks tehnoloogiate virna + + , lĂŒhidalt ELK. Meie puhul ei ole sisu indekseerimine vajalik ja ma rakendasin kergemat . See on saadaval Helm pakendina, lisasime selle subchart'ina, muutes ingressi ja pv vÀÀrtusi meie sĂŒsteemi jaoks.
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"
Logide saatmiseks instantsile kasutame .
On vaja installida see lisand kÔigile hostidele, kust soovite logisid saada. On mitu viisi, kuidas demonile nÀidata, kuidas lisandit kasutada. Valin draiveri yaml'is , mis on osa playbook'ist.
postgres.yaml
- name: KĂ€ita konteinerid
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 }}"
...
kus loki_url:
MÔÔtmised
Kogutakse metrikaid PostgreSQL-st jaoks . JĂ€rgnevast ĂŒlaltoodud failist playbook'ist.
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"
...
Sisemise selguse huvides defineerime vÀlist stateful-teenust nime kaudu 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 }}
Prometheuse seadist postgres_exporter soovitud andmete saamiseks muudetakse vÀÀrtuseid subchart'is.
values.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
Saadud andmete visualiseerimiseks installige vastav Dashboard
ja seadistage andmeallikad. Seda saab teha ka vÀÀrtuste kaudu subchart Grafana's.
Kuidas see vÀlja nÀeb

Loodan, et see lĂŒhike artikkel aitas teil mĂ”ista selle lahenduse pĂ”hikontseptsioone ja sÀÀsta aega vĂ€listes teenustes Loki/Prometheuse jĂ€lgimise ja logimise seadistamisel Kubernetes'i klastris.
Allikas: habr.com
