PostgreSQLi jälgimine Openshiftis

Tere, Habra elanikud!

Täna tahan rääkida, kuidas me tahtsime postgres'e ja veel paar elementi OpenShift'i klastris jälgida ning kuidas me seda tegime.

Sisendiks oli:

  • Openshift
  • Helm
  • Prometheus


Java rakenduse jaoks oli kõik üsna lihtne ja selge, täpsemalt öeldes:

1) Lisamine build.gradle faili

 implementation "io.micrometer:micrometer-registry-prometheus"

2) Prometheuse käivitamine konfigureerimisega

 - job_name: 'job-name'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    kubernetes_sd_configs:
    - role: pod
      namespaces:
        names: 
          - 'name'

3) Kuvamise lisamine Grafanas

Kõik oli üsna lihtne ja igapäevane kuni hetkeni, mil pidime jälgima andmebaase, mis asuvad meie kõrval nimede ruumis (jah, see on halb, keegi nii ei tee, aga elu on erinev).

Kuidas see töötab?

Lisaks postgres'e pod'ile ja tegelikult prometheus'ele on meil vajalik veel üks element — eksportija.

Eksportija laiemas mõttes on agent, mis kogub rakenduse metrikaid või isegi serverile. Postgres'e eksportija on kirjutatud Go-s, töötab põhimõttel, et käivitab SQL skripte andmebaasis ja seejärel toob saadud tulemused Prometheusele. See võimaldab ka laiendada kogutavaid metrikaid, lisades oma.

Meie deployime seda sellisel viisil (näidis deployment.yaml, mitte millegagi siduv):


---
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

Samuti vajasime selle jaoks teenust ja image streami.

Pärast deployimist tahame, et kõik üksteist näeksid.

Lisame Prometheuse konfiguratsiooni sellise osa:

  - job_name: 'postgres_exporter'
    metrics_path: '/metrics'
    scrape_interval: 5s
    dns_sd_configs:
    - names:
      - 'postgres-exporter'
      type: 'A'
      port: 9187

Ja siin kõik töötas, jääb vaid see kõik Grafanasse lisada ja tulemust nautida.

Lisaks võimalusele lisada oma päringuid, võimaldab Prometheus muuta seadistusi, kogudes vajalikud mõõdikud sihipäraselt.

Samasugune lähenemine kehtib järgnevate jaoks:

  • Kafka
  • Elasticsearch
  • Mongo

P.S. Kõik andmed nimede, portide jne kohta on välja mõeldud ja ei kanna mingit informatiivset sisu.

Kasulikud lingid:
Erinevate exporterite loetelu

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster