Diwrnod da, drigolion Habr!
Heddiw, rwyf am ddweud wrthych sut yr oeddem wir eisiau monitro postgres a chwpl o endidau eraill y tu mewn i glwstwr OpenShift a sut y gwnaethom hynny.
Wrth y fynedfa roedd ganddyn nhw:
- Openshift
- Helm
- Prometheus
I weithio gyda chymhwysiad java, roedd popeth yn eithaf syml a thryloyw, neu i fod yn fwy manwl gywir:
1) Ychwanegu at build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Rhedeg prometheus gyda chyfluniad
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Ychwanegu arddangosfa i Grafana
Roedd popeth yn eithaf syml a rhyddiaith nes i'r foment ddod i fonitro'r seiliau sydd wedi'u lleoli gerllaw yn ein gofod enwau (ie, mae hyn yn ddrwg, does neb yn gwneud hyn, ond mae pethau gwahanol yn digwydd).
Sut mae'n gweithio?
Yn ogystal Γ’'r pod gyda postgres a prometheus ei hun, mae angen un endid arall - allforiwr.
Mae allforiwr mewn cysyniad haniaethol yn asiant sy'n casglu metrigau o raglen neu hyd yn oed gweinydd. Ar gyfer allforiwr postgres, mae wedi'i ysgrifennu yn Go, mae'n gweithio ar yr egwyddor o redeg sgriptiau SQL y tu mewn i'r gronfa ddata ac yna mae prometheus yn cymryd y canlyniadau a gafwyd. Mae hyn hefyd yn caniatΓ‘u ichi ehangu'r metrigau a gasglwyd trwy ychwanegu eich un chi.
Gadewch i ni ei ddefnyddio fel hyn (enghraifft deployment.yaml, heb fod yn rhwymol):
---
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
Roedd hefyd angen ffrwd gwasanaeth a delwedd
Ar Γ΄l lleoli, rydyn ni wir eisiau i bawb weld ei gilydd.
Ychwanegwch y darn canlynol at y ffurfwedd Prometheus:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Ac yna fe weithiodd popeth, y cyfan sydd ar Γ΄l yw ychwanegu'r holl bethau hyn at y grafana a mwynhau'r canlyniad.
Yn ogystal Γ’'r gallu i ychwanegu eich ymholiadau eich hun, gallwch newid y gosodiadau yn prometheus, gan gasglu mwy o fetrigau wedi'u targedu.
Gwnaethpwyd hyn mewn ffordd debyg ar gyfer:
- Kafka
- Elastig
- Mongo
PS Cymerir yr holl ddata ar enwau, porthladdoedd a'r gweddill o'r awyr ac nid yw'n cynnwys unrhyw wybodaeth.
Dolenni defnyddiol:
Ffynhonnell: hab.com