
Good luck sa lahat.
Wala akong nakitang pangkalahatang gabay sa Internet sa pag-log at pagkolekta ng mga sukatan mula sa mga serbisyo ng third-party sa mga system na naka-deploy sa . Nagpo-post ako ng aking solusyon. Ipinapalagay ng artikulong ito na mayroon ka nang trabaho at iba pang serbisyo. Bilang isang halimbawa ng isang data source para sa isang panlabas na stateful na serbisyo, isang DBMS ang gagamitin sa isang lalagyan . Gumagamit ang kumpanya ng package manager , sa ibaba sa teksto ay magkakaroon ng mga halimbawa nito. Para sa buong solusyon, naghahanda kami ng sarili naming chart, na kinabibilangan ng mga nested chart ng lahat ng serbisyong ginamit.
Pagtotroso
Maraming mga kumpanya ang gumagamit ng isang stack ng mga teknolohiya upang mangolekta, tingnan at isentro ang mga log + + , dinaglat bilang ELK. Sa aming kaso, hindi na kailangang i-index ang nilalaman at gumamit ako ng mas magaan . Ito ay magagamit bilang isang pakete ng Helm, idinagdag namin ito bilang isang subchart sa pamamagitan ng pagbabago ng mga halaga para sa pagpasok at pv upang umangkop sa aming system.
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"
Upang magpadala ng mga log sa isang instance gamitin .
Dapat mong i-install ang add-on na ito sa lahat mga host kung saan mo gustong makatanggap ng mga log. Mayroong ilang mga paraan upang sabihin sa daemon kung paano gamitin ang padding. Pinipili ko ang driver sa yaml , na bahagi playbook.
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 }}"
...
saan loki_url:
Mga sukatan
Ang mga sukatan ay kinokolekta mula sa PostgreSQL gamit para sa . Pagpapatuloy ng file sa itaas playbook.
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"
...
Para sa higit na kalinawan, isusulat namin ang mga pangalan ng panlabas na stateful na serbisyo gamit ang 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 }}
Ang pag-configure ng Prometheus upang makatanggap ng data ng postgres_exporter ay ginagawa sa pamamagitan ng pag-edit ng mga halaga sa subchart.
values.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
Upang mailarawan ang natanggap na data, i-install ang naaangkop na Dashboard sa
at i-configure ang mga mapagkukunan ng data. Magagawa rin ito sa pamamagitan ng mga halaga sa subchart ng Grafana.
Ano ang hitsura nito

Umaasa akong nakatulong sa iyo ang maikling artikulong ito na maunawaan ang mga pangunahing ideya sa likod ng solusyong ito at nakatipid ka ng oras kapag nagse-set up ng pagsubaybay at pag-log ng mga panlabas na serbisyo para sa Loki/Prometheus sa isang Kubernetes cluster.
Pinagmulan: www.habr.com
