Καλή τύχη σε όλους.
Δεν βρήκα γενικό οδηγό στο διαδίκτυο σχετικά με την καταγραφή και τη συλλογή μετρήσεων από υπηρεσίες τρίτων σε συστήματα που αναπτύσσονται σε
Ξύλευση
Πολλές εταιρείες χρησιμοποιούν μια στοίβα τεχνολογιών για τη συλλογή, προβολή και συγκέντρωση αρχείων καταγραφής
αξίες.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 }}
Η ρύθμιση παραμέτρων του Prometheus για λήψη δεδομένων postgres_exporter γίνεται με την επεξεργασία τιμών στο υποδιάγραμμα.
αξίες.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
Για να οπτικοποιήσετε τα ληφθέντα δεδομένα, εγκαταστήστε τον κατάλληλο πίνακα ελέγχου
Τι μοιάζει
Ελπίζω αυτό το σύντομο άρθρο να σας βοήθησε να κατανοήσετε τις κύριες ιδέες πίσω από αυτήν τη λύση και να σας εξοικονομήσει χρόνο κατά τη ρύθμιση της παρακολούθησης και της καταγραφής εξωτερικών υπηρεσιών για το Loki/Prometheus σε ένα σύμπλεγμα Kubernetes.
Πηγή: www.habr.com