Postgresen jarraipena Openshift barruan

Egun on, Habr-eko bizilagunak!

Gaur kontatu nahi dizut nola benetan nahi genuen monitorizatu postgres eta beste pare bat entitate OpenShift kluster barruan eta nola egin genuen.

Sarreran:

  • Openshift
  • Helm
  • Prometeo


Java aplikazio batekin lan egiteko, dena nahiko sinplea eta gardena zen, edo zehatzago izateko:

1) Eraikitzeari gehitzea.gradle

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

2) Exekutatu prometheus konfigurazioarekin

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

3) Grafanari pantaila bat gehitzea

Dena nahiko sinplea eta prosaikoa izan zen gure izen-eremuan gertu dauden oinarrien jarraipena egiteko momentua iritsi zen arte (bai, hori txarra da, inork ez du hau egiten, baina gauza desberdinak gertatzen dira).

Nola dabil?

Postgres eta prometheus bera duen podaz gain, entitate bat gehiago behar dugu - esportatzailea.

Kontzeptu abstraktu batean esportatzailea aplikazio batetik edo zerbitzari batetik neurketak biltzen dituen agente bat da. Postgres esportatzailearentzat, Go-n idatzita dago, datu-basearen barruan SQL script-ak exekutatzeko printzipioan funtzionatzen du eta, ondoren, prometheus-ek lortutako emaitzak hartzen ditu. Horri esker, bildutako neurketak zabal ditzakezu zurea gehituz.

Inplementa dezagun honela (adibidea deployment.yaml, loteslea ez dena):


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

Zerbitzua eta irudi-fluxua ere eskatzen zuen

Inplementatu ondoren, benetan nahi dugu denek elkar ikustea.

Gehitu hurrengo pieza Prometheus konfigurazioan:

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

Eta gero dena funtzionatu zuen, geratzen dena da grafanari gauza guzti hauek gehitzea eta emaitzaz gozatzea.

Zure kontsultak gehitzeko aukeraz gain, ezarpenak alda ditzakezu prometheus-en, neurri zehatzagoak bilduz.

Hau antzeko modu batean egin zen:

  • Kafka
  • Elasticsearch
  • Mongo

PS Izenei, portuei eta gainerakoei buruzko datu guztiak airetik hartzen dira eta ez dute informaziorik.

Esteka erabilgarriak:
Hainbat esportatzaileen zerrenda

Iturria: www.habr.com

Gehitu iruzkin berria