Gününüz xeyir, Habr sakinləri!
Bu gün sizə OpenShift klasterində postgres və bir neçə başqa obyekti necə izləmək istədiyimizi və bunu necə etdiyimizi söyləmək istəyirəm.
Girişdə onlar var idi:
- Açıq sürüşmə
- sükan
- Prometey
Java proqramı ilə işləmək üçün hər şey olduqca sadə və şəffaf idi, daha dəqiq desək:
1) build.gradle-ə əlavə edilir
implementation "io.micrometer:micrometer-registry-prometheus"
2) Prometeyi konfiqurasiya ilə işə salın
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Grafanaya ekran əlavə etmək
Ad məkanımızda yaxınlıqda yerləşən bazaları izləmək üçün vaxt gələnə qədər hər şey olduqca sadə və prozaik idi (bəli, bu pisdir, bunu heç kim etmir, amma fərqli şeylər olur).
Bu necə işləyir?
Postgres və prometey ilə poddan əlavə, bizə daha bir varlıq lazımdır - ixracatçı.
Mücərrəd bir konsepsiyada ixracatçı proqramdan və ya hətta serverdən ölçüləri toplayan agentdir. Postgres ixracatçısı üçün Go-da yazılmışdır, verilənlər bazası daxilində SQL skriptlərini işlətmək prinsipi ilə işləyir və sonra prometheus əldə edilən nəticələri götürür. Bu, həmçinin öz ölçülərinizi əlavə etməklə toplanmış göstəriciləri genişləndirməyə imkan verir.
Gəlin bunu belə yerləşdirək (misal deployment.yaml, məcburi deyil):
---
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
Bu, həmçinin xidmət və görüntü axını tələb edirdi
Yerləşdirmədən sonra biz həqiqətən hamının bir-birini görməsini istəyirik.
Prometheus konfiqurasiyasına aşağıdakı parçanı əlavə edin:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Və sonra hər şey işlədi, qalan şey bütün bunları qrafana əlavə etmək və nəticədən həzz almaqdır.
Öz sorğularınızı əlavə etmək qabiliyyətinə əlavə olaraq, daha çox hədəf göstəricilər toplayaraq prometheus-da parametrləri dəyişə bilərsiniz.
Bu, oxşar şəkildə edildi:
- Kafka
- Elasticsearch
- Mongo
PS Adlar, limanlar və qalanlar haqqında bütün məlumatlar havadan götürülür və heç bir məlumat ehtiva etmir.
Faydalı linklər:
Mənbə: www.habr.com