Postgres uzraudzība Openshift iekšpusē

Labdien, Habras iedzīvotāji!

Šodien es vēlos jums pastāstīt, kā mēs patiešām vēlējāmies pārraudzīt Postgres un dažas citas entītijas OpenShift klasterī un kā mēs to paveicām.

Pie ieejas viņiem bija:

  • Openshift
  • Stūre
  • Prometejs


Lai strādātu ar java lietojumprogrammu, viss bija diezgan vienkāršs un caurspīdīgs, vai precīzāk:

1) Pievienošana failam build.gradle

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

2) Palaidiet Prometheus ar konfigurāciju

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

3) Grafana displeja pievienošana

Viss bija diezgan vienkārši un prozaiski, līdz pienāca brīdis uzraudzīt bāzes, kas atrodas netālu no mūsu vārdu telpā (jā, tas ir slikti, neviens to nedara, bet notiek dažādas lietas).

Kā tas darbojas?

Papildus podam ar postgresu un pašu Prometeju mums ir vajadzīga vēl viena vienība - eksportētājs.

Eksportētājs abstraktā jēdzienā ir aģents, kas apkopo metriku no lietojumprogrammas vai pat servera. Postgres eksportētājam tas ir rakstīts Go, tas darbojas pēc principa palaist SQL skriptus datu bāzē un tad prometheus paņem iegūtos rezultātus. Tas arī ļauj paplašināt apkopoto metriku, pievienojot savu.

Izvietosim to šādi (piemērs deployment.yaml, nesaistošs):


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

Tam bija vajadzīgs arī pakalpojums un attēlu plūsma

Pēc izvietošanas mēs patiešām vēlamies, lai visi redzētu viens otru.

Pievienojiet šo daļu Prometheus konfigurācijai:

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

Un tad viss izdevās, atliek tikai pievienot visu šo lietu grafānai un baudīt rezultātu.

Papildus iespējai pievienot savus vaicājumus varat mainīt Prometheus iestatījumus, apkopojot mērķtiecīgākus rādītājus.

Tas tika darīts līdzīgā veidā:

  • Kafka
  • Elastikas meklēšana
  • Mongo

PS Visi dati par nosaukumiem, ostām un pārējo ir ņemti no gaisa un nesatur nekādu informāciju.

Noderīgas saites:
Dažādu eksportētāju saraksts

Avots: www.habr.com

Pievieno komentāru