Monitorimi i postgres brenda Openshift

Përshëndetje të gjitha anëtarëve të Habra!

Sot dëshiroj të flas me ju se si e dëshironim të monitoronim postgres dhe disa entitete të tjera brenda klasterit OpenShift dhe si ia dolëm.

Më erdhi si input:

  • Openshift
  • Helm
  • Prometheus


Për të punuar me aplikacionin java, gjithçka ishte mjaft e thjeshtë dhe e qartë, dhe nëse të jemi më të saktë:

1) Shtimi në build.gradle

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

2) Ngritja e prometheus me konfigurimin

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

3) Shtimi i shfaqjes në Grafana

Gjithçka ishte mjaft e thjeshtë dhe e zakonshme deri në momentin që duhej të monitoronim bazat, që ndodheshin afër nesh në namespace (po, kjo është e keqe, askush nuk bën kështu, por ndodhin gjëra të ndryshme).

Si funksionon kjo?

Përveç pod-it me postgres dhe vetë prometheus, na nevojitet edhe një entitet tjetër — exporter.

Exporteri në kuptim të përgjithshëm është një agjent, i cili mbledh metrikat nga aplikacioni ose madje сервера. Për postgres exporter është shkruar në Go, punon sipas parimit të ekzekutimit të skemave SQL në bazë dhe më pas rezultatet e marra i merr prometheus. Kjo gjithashtu lejon zgjerimin e metrikave të mbledhura, duke shtuar të tuat.

E deploy-ojmë në këtë mënyrë (shembuj të deployment.yaml, pa detyrime):


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

Na nevojitet gjithashtu një shërbim dhe image stream për të.

Pas deploy-it, dëshirojmë shumë që të gjithë të shohin njëri-tjetrin.

Shtojmë këtë pjesë në konfigurimin e prometheus:

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

Dhe këtu gjithçka funksionoi, mbetet të shtojmë të gjitha këto në Grafana dhe të shijojmë rezultatin.

Përveç mundësisë për të shtuar kërkesat tuaja, në prometheus mund të ndryshoni parametrat, duke mbledhur metrika më të targetuara që janë të nevojshme.

Në mënyrë të ngjashme është bërë për:

  • Kafka
  • Elasticsearch
  • Mongo

P.S. Të gjitha të dhënat në lidhje me emrat, portat dhe të tjera janë marrë nga fantazia dhe nuk kanë asnjë informacion të vlefshëm.

Linqe të dobishme:
Lista e eksporterëve të ndryshëm

Burimi: habr.com

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster