Goeie dei ynwenners fan Habr!
Hjoed wol ik jo fertelle hoe't wy postgres en in pear oare entiteiten yn 'e OpenShift-kluster wirklik wolle kontrolearje en hoe't wy it diene.
By de yngong hienen se:
- Openshift
- Roer
- Prometheus
Om te wurkjen mei in Java-applikaasje wie alles frij ienfâldich en transparant, of om krekter te wêzen:
1) Tafoegje oan build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Run prometheus mei konfiguraasje
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) In werjefte tafoegje oan Grafana
Alles wie frij ienfâldich en prozaïsk oant it momint kaam om de bases te kontrolearjen dy't tichtby yn ús nammeromte lizze (ja, dit is min, gjinien docht dit, mar der bart ferskate dingen).
Hoe wurket it?
Neist de pod mei postgres en prometheus sels, hawwe wy noch ien entiteit nedich - eksporteur.
In eksporteur yn in abstrakt konsept is in agint dy't metriken sammelet fan in applikaasje of sels in server. Foar postgres-eksporteur is it skreaun yn Go, it wurket op it prinsipe fan it útfieren fan SQL-skripts yn 'e databank en dan nimt prometheus de resultaten krigen. Hjirmei kinne jo ek de sammele metriken útwreidzje troch jo eigen ta te foegjen.
Litte wy it sa ynsette (foarbyld deployment.yaml, net-binend):
---
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
It frege ek in tsjinst en imagestream
Nei ynset wolle wy echt dat elkenien inoar sjocht.
Foegje it folgjende stik ta oan de Prometheus-konfiguraasje:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
En doe wurke alles, alles wat oerbliuwt is al dit spul oan 'e grafana ta te foegjen en genietsje fan it resultaat.
Neist de mooglikheid om jo eigen fragen ta te foegjen, kinne jo de ynstellings yn prometheus feroarje, mear rjochte metriken sammelje.
Dit waard dien op in fergelykbere manier foar:
- Kafka
- Elastyskesearch
- Mongo
PS Alle gegevens oer nammen, havens en de rest wurdt út 'e loft helle en befettet gjin ynformaasje.
Nuttige links:
Boarne: www.habr.com