Hyvää päivää, Habrin asukkaat!
Tänään haluan kertoa, kuinka halusimme seurata postgresia ja paria muuta OpenShift-klusterin sisällä olevaa entiteettiä ja miten teimme sen.
Sisäänkäynnillä heillä oli:
- Openshift
- Ruori
- Prometheus
Java-sovelluksen kanssa työskentelyyn kaikki oli melko yksinkertaista ja läpinäkyvää, tai tarkemmin sanottuna:
1) Lisääminen tiedostoon build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Suorita prometheus konfiguraatiolla
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Näytön lisääminen Grafanaan
Kaikki oli melko yksinkertaista ja proosaa, kunnes tuli hetki tarkkailla tukikohtia, jotka sijaitsevat lähellä nimiavaruudessamme (kyllä, tämä on huono, kukaan ei tee tätä, mutta erilaisia asioita tapahtuu).
Kuinka se toimii?
Postgresin ja itse prometheuksen lisäksi tarvitsemme vielä yhden kokonaisuuden - viejän.
Abstraktissa käsitteessä viejä on agentti, joka kerää mittareita sovelluksesta tai jopa palvelimelta. Postgres viejälle se on kirjoitettu Go-kielellä, se toimii periaatteella ajaa SQL-skriptit tietokannan sisällä ja sitten prometheus ottaa saadut tulokset. Näin voit myös laajentaa kerättyjä mittareita lisäämällä omasi.
Otetaan se käyttöön näin (esimerkki deployment.yaml, ei-sitova):
---
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
Se vaati myös palvelun ja kuvavirran
Käyttöönoton jälkeen haluamme todella kaikkien näkevän toisensa.
Lisää seuraava osa Prometheus-konfiguraatioon:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Ja sitten kaikki toimi, ei ole muuta kuin lisätä kaikki tämä tavara grafaanaan ja nauttia tuloksesta.
Sen lisäksi, että voit lisätä omia kyselyjäsi, voit muuttaa prometheuksen asetuksia ja kerätä kohdistetumpia mittareita.
Tämä tehtiin samalla tavalla:
- Kafka
- Elasticsearch
- Mongo
PS Kaikki tiedot nimistä, porteista ja muusta on otettu ilmasta eivätkä sisällä mitään tietoa.
Hyödyllisiä linkkejä:
Lähde: will.com