Καλημέρα, κάτοικοι του Χαμπρ!
Σήμερα θέλω να σας πω πώς πραγματικά θέλαμε να παρακολουθούμε το postgres και μερικές άλλες οντότητες μέσα στο σύμπλεγμα OpenShift και πώς το κάναμε.
Στην είσοδο είχαν:
- Οπίσθια μετατόπιση
- Πηδάλιο
- Προμηθέας
Για να δουλέψετε με μια εφαρμογή java, όλα ήταν αρκετά απλά και διαφανή ή για να είμαστε πιο ακριβείς:
1) Προσθήκη στο build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Εκτελέστε το prometheus με διαμόρφωση
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Προσθήκη οθόνης στο Grafana
Όλα ήταν αρκετά απλά και πεζά μέχρι που ήρθε η στιγμή να παρακολουθήσουμε τις βάσεις που βρίσκονται κοντά στον χώρο ονομάτων μας (ναι, αυτό είναι κακό, κανείς δεν το κάνει αυτό, αλλά συμβαίνουν διαφορετικά πράγματα).
Πώς λειτουργεί;
Εκτός από το pod με το postgres και τον ίδιο τον prometheus, χρειαζόμαστε έναν ακόμη φορέα - εξαγωγέα.
Ένας εξαγωγέας σε μια αφηρημένη έννοια είναι ένας πράκτορας που συλλέγει μετρήσεις από μια εφαρμογή ή ακόμα και έναν διακομιστή. Για τον εξαγωγέα postgres, είναι γραμμένο στο Go, λειτουργεί με βάση την αρχή της εκτέλεσης σεναρίων SQL μέσα στη βάση δεδομένων και στη συνέχεια ο prometheus παίρνει τα αποτελέσματα που λαμβάνονται. Αυτό σας επιτρέπει επίσης να επεκτείνετε τις μετρήσεις που συλλέγετε προσθέτοντας τις δικές σας.
Ας το αναπτύξουμε ως εξής (παράδειγμα deployment.yaml, μη δεσμευτικό):
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres-exporter
labels:
app: {{ .Values.name }}
monitoring: prometheus
spec:
serviceName: {{ .Values.name }}
replicas: 1
revisionHistoryLimit: 5
template:
metadata:
labels:
app: postgres-exporter
monitoring: prometheus
spec:
containers:
- env:
- name: DATA_SOURCE_URI
value: postgresdb:5432/pstgr?sslmode=disable
- name: DATA_SOURCE_USER
value: postgres
- name: DATA_SOURCE_PASS
value: postgres
resources:
limits:
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
livenessProbe:
tcpSocket:
port: metrics
initialDelaySeconds: 30
periodSeconds: 30
readinessProbe:
tcpSocket:
port: metrics
initialDelaySeconds: 10
periodSeconds: 30
image: exporter
name: postgres-exporter
ports:
- containerPort: 9187
name: metrics
Χρειαζόταν επίσης υπηρεσία και ροή εικόνας
Μετά την ανάπτυξη, θέλουμε πραγματικά να βλέπονται όλοι.
Προσθέστε το ακόλουθο κομμάτι στη διαμόρφωση Prometheus:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Και μετά όλα λειτούργησαν, το μόνο που μένει είναι να προσθέσετε όλα αυτά τα πράγματα στη γραφάνα και να απολαύσετε το αποτέλεσμα.
Εκτός από τη δυνατότητα προσθήκης των δικών σας ερωτημάτων, μπορείτε να αλλάξετε τις ρυθμίσεις στο prometheus, συλλέγοντας πιο στοχευμένες μετρήσεις.
Αυτό έγινε με παρόμοιο τρόπο για:
- Κάφκα
- Ελαστική αναζήτηση
- Μόνγκο
Υ.Γ Όλα τα δεδομένα για ονόματα, λιμάνια και τα υπόλοιπα λαμβάνονται από τον αέρα και δεν περιέχουν καμία πληροφορία.
Χρήσιμοι σύνδεσμοι:
Πηγή: www.habr.com