Monitorimi postgres brenda Openshift

Mirëmbrëma, banorë të Habrës!

Sot dëshiroj t'ju tregoj se si na ishte shumë dëshirë që të monitoronim postgres dhe disa entitete të tjera brenda klasterit OpenShift dhe si e bëmë këtë.

Kemi pasur:

  • 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ë konkret, atëherë:

1) Shtimi në build.gradle

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

2) Nisja e prometheus me konfigurimin

 - job_name: 'job-name'
    metrics_path: '/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 prozaike deri sa erdhi momenti i monitorimit të bazave që ndodhen pranë në namespaces (po, kjo është keq, askush nuk e bën këtë, 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.

Exporter në një kuptim të përgjithshëm është një agjent që mbledh metrika nga aplikacioni ose madje serverit. Për postgres exporter është shkruar në Go, punon sipas parimit të ekzekutimit të skripteve sql në bazë dhe më pas rezultatet e marra i merr prometheus. Kjo gjithashtu lejon zgjerimin e metrikeve të mbledhura, duke shtuar të tuat.

Ne e shpërndajmë kështu (shembull deployment.yaml, asgjë e detyrueshme):


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

Po ashtu, na duhej shërbimi dhe imazhi i rrjedhës.

Pas shpërndarjes, na do shumë që të gjithë të shikojnë njëri-tjetrin.

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

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

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

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

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

  • Kafka
  • Elasticsearch
  • Mongo

P.S. Të dhënat mbi emrat, portet dhe gjithçka tjetër janë marrë nga ajri dhe nuk kanë asnjë informacion.

Linke të dobishme:
Lista e eksportuesve të ndryshëm

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster