Postgresi jÀlgimine Openshiftis

Tere, Habra elanikud!

TÀna tahan rÀÀkida teile, kuidas me soovisime monitoorida Postgres'i ja veel paar objekti OpenShift'i klastris ning kuidas me seda tegime.

Sisendiks oli meil:

  • OpenShift
  • Helm
  • Prometheus


Java rakenduse kasutamine oli ĂŒsna lihtne ja lĂ€bipaistev, tĂ€psemalt öeldes:

1) Lisamine failile build.gradle

 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 arusaadav, kuni saabus hetk, mil pidime monitoorima andmebaase, mis asuvad meie lĂ€hedal nimiruumis (jah, see on halb, keegi ei tee nii, aga miski ei ole tĂ€iuslik).

Kuidas see toimib?

Lisaks Postgres'i pod'ile ja Prometheusele on meil vajalik veel ĂŒks objekt — eksporter.

Eksporter on abstraktses mÔttes agent, mis kogub metrikat rakenduselt vÔi isegi serverilt. Postgres'i ekspoorter on kirjutatud Go-s, see töötab pÔhimÔttel, et kÀivitab SQL skripte andmebaasis ja kogub seejÀrel saadaolevad tulemused Prometheusele. See vÔimaldab ka kogutavaid meetrikaid laiendada, lisades oma.

Deployime selle jÀrgmise viisi jÀrgi (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 on vaja teenust ja imidĆŸivoogu

PĂ€rast deploymist tahame, et kĂ”ik ĂŒksteist nĂ€eksid.

Lisame Prometheuse konfiguraatorisse jÀrgmise lÔigu:

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

Ja siin hakkas kÔik tööle, jÀi vaid kÔik see Grafanasse lisada ja nautida tulemust.

Lisaks oma pÀringute lisamise vÔimalusele saab Prometheuses muuta seadistusi, et koguda vajalikud mÔÔdikud veelgi sihipÀrasemalt.

Analoge meetodit kasutati jÀrgnevate jaoks:

  • Kafka
  • Elasticsearch
  • Mongo

P.S. KÔik andmed nimede, portide ja muu osas on vÀlja mÔeldud ja ei kanna mingit teavet.

Kasulikud lingid:
Erinevate eksportijate nimekiri

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster