Postgres-valvonta Openshiftin sisällä

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ä:
Luettelo eri viejistä

Lähde: will.com

Lisää kommentti