
Баарына ийгилик.
Мен үчүнчү тараптын кызматтарынан өлчөөлөрдү каттоо жана чогултуу боюнча жалпыланган колдонмону онлайн режиминде орнотулган системаларга таба алган жокмун. . Мен чечимимди жарыялап жатам. Бул макалада сизде мурунтан эле иш бар деп болжолдойт жана башка кызматтар. Тышкы мамлекеттик кызмат үчүн маалымат булагынын мисалы катары, DBMS колдонулат контейнерде . Компания пакет менеджерин колдонот , төмөндө текстте ал боюнча мисалдар болот. Бүтүндөй чечим үчүн биз колдонулган бардык кызматтардын уяланган диаграммаларын камтыган өзүбүздүн диаграммабызды даярдап жатабыз.
Каттоо
Көптөгөн компаниялар журналдарды чогултуу, көрүү жана борборлоштуруу үчүн бир катар технологияларды колдонушат + + , ELK деп кыскартылган. Биздин учурда, мазмунду индекстөөнүн кереги жок жана мен жеңилирээк колдондум . Бул Helm пакети катары жеткиликтүү, биз аны системага ылайыкташтыруу үчүн кирүү жана pv маанилерин өзгөртүү менен поддиаграмма катары коштук.
баалуулуктар.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"
Инстанцияга журналдарды жөнөтүү үчүн колдонуу .
Бул кошумчаны бардык нерсеге орнотушуңуз керек журналдарды алууну каалаган хосттор. Демонго толтургучту кантип колдонууну айтуунун бир нече жолу бар. Мен yaml менен драйверди тандайм бөлүгү болуп саналат оюн китеби.
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
...
Алынган маалыматтарды визуализациялоо үчүн, тиешелүү панелди орнотуңуз
жана маалымат булактарын конфигурациялаңыз. Муну Grafana субчартындагы баалуулуктар аркылуу да жасоого болот.
Кантип окшойт

Бул кыска макала сизге ушул чечимдин артында турган негизги идеяларды түшүнүүгө жардам берди жана Kubernetes кластериндеги Loki/Prometheus үчүн тышкы кызматтарга мониторинг жүргүзүү жана каттоону орнотууда убакытты үнөмдөөгө жардам берди деп үмүттөнөм.
Source: www.habr.com
