Баарына ийгилик.
Мен үчүнчү тараптын кызматтарынан өлчөөлөрдү каттоо жана чогултуу боюнча жалпыланган колдонмону онлайн режиминде орнотулган системаларга таба алган жокмун.
Каттоо
Көптөгөн компаниялар журналдарды чогултуу, көрүү жана борборлоштуруу үчүн бир катар технологияларды колдонушат
баалуулуктар.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"
Инстанцияга журналдарды жөнөтүү үчүн
Бул кошумчаны бардык нерсеге орнотушуңуз керек
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 }}"
...
кайда loki_url:
Метрикалар
Метрикалар PostgreSQL аркылуу чогултулат
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"
...
Көбүрөөк түшүнүктүү болушу үчүн, биз 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 }}
Postgres_exporter маалыматтарын алуу үчүн Prometheus конфигурациялоо субдиаграммадагы маанилерди түзөтүү аркылуу ишке ашырылат.
баалуулуктар.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
Алынган маалыматтарды визуализациялоо үчүн, тиешелүү панелди орнотуңуз
Кантип окшойт
Бул кыска макала сизге ушул чечимдин артында турган негизги идеяларды түшүнүүгө жардам берди жана Kubernetes кластериндеги Loki/Prometheus үчүн тышкы кызматтарга мониторинг жүргүзүү жана каттоону орнотууда убакытты үнөмдөөгө жардам берди деп үмүттөнөм.
Source: www.habr.com