İyi günler Habr sakinleri!
Bugün size postgres'i ve OpenShift kümesi içindeki diğer birkaç varlığı gerçekten nasıl izlemek istediğimizi ve bunu nasıl yaptığımızı anlatmak istiyorum.
Girişte şunlar vardı:
- Açık vardiya
- Dümen
- Prometheus
Bir Java uygulamasıyla çalışmak için her şey oldukça basit ve şeffaftı, daha doğrusu:
1) build.gradle'a ekleme
implementation "io.micrometer:micrometer-registry-prometheus"
2) Prometheus'u konfigürasyonla çalıştırın
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Grafana'ya ekran ekleme
Ad alanımızda yakınlarda bulunan üsleri izleme anı gelene kadar her şey oldukça basit ve sıradandı (evet, bu kötü, kimse bunu yapmıyor ama farklı şeyler oluyor).
O nasıl çalışır?
Postgres ve prometheus'un bulunduğu bölmeye ek olarak, bir ihracatçıya daha ihtiyacımız var.
Soyut bir kavramda ihracatçı, bir uygulamadan veya hatta bir sunucudan ölçümler toplayan bir aracıdır. Postgres ihracatçısı için Go'da yazılmıştır, veritabanı içinde SQL komut dosyalarını çalıştırma prensibiyle çalışır ve ardından prometheus elde edilen sonuçları alır. Bu aynı zamanda kendi ölçümlerinizi ekleyerek toplanan ölçümleri genişletmenize de olanak tanır.
Bunu şu şekilde konuşlandıralım (örnek dağıtım.yaml, bağlayıcı olmayan):
---
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
Aynı zamanda bir hizmet ve görüntü akışı da gerektiriyordu
Dağıtımdan sonra gerçekten herkesin birbirini görmesini istiyoruz.
Prometheus yapılandırmasına aşağıdaki parçayı ekleyin:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Ve sonra her şey işe yaradı, geriye kalan tek şey tüm bunları grafanaya eklemek ve sonucun tadını çıkarmak.
Kendi sorgularınızı ekleyebilme olanağının yanı sıra, daha hedefli ölçümler toplayarak prometheus'taki ayarları değiştirebilirsiniz.
Bu, aşağıdakiler için benzer şekilde yapıldı:
- Kafka
- Elasticsearch
- Mongo
PS İsimler, portlar ve geri kalanıyla ilgili tüm veriler havadan alınmıştır ve herhangi bir bilgi içermemektedir.
Yararlı linkler:
Kaynak: habr.com