
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
