
Tere kõigile.
Ma ei leidnud Internetist üldist juhendit logimise ja mõõtmete kogumise kohta kolmandate osapoolte teenustelt süsteemidesse, mis on paigaldatud . Avaldan oma lahenduse. Käesolev artikkel eeldab, et teil on juba töötav ja teised teenused. Andmeallikana kasutatakse väliseid stateful-teenuseid, milleks on andmebaas konteineris . Ettevõttes kasutatakse pakihaldurit , allpool on antud näited sellel. Kogu lahenduse jaoks koostame oma charti, mis sisaldab sissekasvatatud chart'e kõigile kasutatavatele teenustele.
Logimine
Paljud ettevõtted kasutavad logide kogumiseks, vaatamiseks ja nende tsentraliseerimiseks tehnoloogiate virna + + , lühendatud ELK. Meie puhul pole sisu indekseerimine vajalik ja ma kasutasin kergemat . See on saadaval Helm'i paketina, me lisasime selle subchart'ina ja muutsime ingressi ja pv väärtusi meie süsteemi kohandamiseks.
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 kohale kasutame .
On vajalik see lisand installida kõikidele serverid, millest soovite logisid saada. Demonile on mitu võimalust, kuidas lisandit kasutada. Valin draiveri YAML-is. , mis on osa playbook'ist.
postgres.yaml
- name: Käivita 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õõdikud
PostgreSQL-ist kogutakse metrikaid kuna . Ülaltoodud faili jätk 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"
...
Välimike stateful-teenuste nimede paremaks visualiseerimiseks määrame need 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'i andmete kogumiseks toimub subchart'i väärtuste redigeerimise kaudu.
values.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
Kogutud andmete visualiseerimiseks installige vastav Dashboard
ja seadistage andmeallikad. Seda saab samuti teha läbi subchart Grafana väärtuste.
Kuidas see välja näeb

Loodan, et see lühike artikkel aitas teil mõista selle lahenduse põhikontseptsioone ja säästab aega välimiste teenuste jälgimise ja logimise seadistamisel Loki/Prometheuse jaoks Kubernetes'i klastris.
Allikas: habr.com
