Postgres jälgimine Openshifti sees

Tere päevast, Habri elanikud!

Täna tahan teile rääkida, kuidas me tegelikult tahtsime jälgida Postgresi ja mõnda muud OpenShifti klastri olemit ning kuidas me seda tegime.

Sissepääsu juures oli neil:

  • Avab vahetuse
  • Rooliratas
  • Prometheus


Java-rakendusega töötamiseks oli kõik üsna lihtne ja läbipaistev või täpsemalt:

1) Lisamine faili build.gradle

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

2) Käivitage konfiguratsiooniga prometheus

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

3) Grafanale kuva lisamine

Kõik oli üsna lihtne ja proosaline, kuni saabus hetk meie nimeruumis lähedal asuvate baaside jälgimiseks (jah, see on halb, keegi ei tee seda, kuid juhtub erinevaid asju).

Kuidas see töötab?

Lisaks postgresi ja prometheuse kaunale on meil vaja veel ühte üksust - eksportijat.

Eksportija abstraktses kontseptsioonis on agent, mis kogub mõõdikuid rakendusest või isegi serverist. Postgres eksportija jaoks on see kirjutatud Go keeles, see töötab põhimõttel, et käivitatakse andmebaasis SQL skriptid ja seejärel võtab prometheus saadud tulemused. See võimaldab teil ka kogutud mõõdikuid laiendada, lisades oma mõõdikuid.

Juurutame selle järgmiselt (näide deployment.yaml, mittesiduv):


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

See nõudis ka teenust ja pildivoogu

Pärast kasutuselevõttu tahame tõesti, et kõik üksteist näeksid.

Lisage Prometheuse konfiguratsiooni järgmine osa:

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

Ja siis kõik toimis, jääb üle vaid kogu see kraam grafanale lisada ja tulemust nautida.

Lisaks oma päringute lisamise võimalusele saate prometheuse seadeid muuta, kogudes sihipärasemaid mõõdikuid.

Seda tehti sarnasel viisil:

  • Kafka
  • Elasticsearch
  • Mongo

PS Kõik andmed nimede, sadamate ja muu kohta on võetud õhust ega sisalda mingit infot.

Kasulikud lingid:
Erinevate eksportijate nimekiri

Allikas: www.habr.com

Lisa kommentaar