Postgres uzraudzība iekŔ Openshift

Sveiki, Habra iedzīvotāji!

Å odien vēlos pastāstÄ«t, kā mēs vēlējāmies uzraudzÄ«t Postgres un vēl dažas entitātes iekÅ” OpenShift klastera, un kā mēs to izdarÄ«jām.

Mums bija:

  • OpenShift
  • Helm
  • Prometheus


Strādājot ar Java lietotni, viss bija diezgan vienkārŔi un caurskatāmi, precīzāk sakot:

1) PievienoŔana pie build.gradle

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

2) Prometheus palaiŔana ar konfigurāciju

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

3) Pievienojot attēlojumu Grafana

Viss bija diezgan vienkārŔi un ikdieniŔķi līdz brīdim, kad nācās uzraudzīt datu bāzes, kas atrodas tuvumā mūsu namespaces (jā, tas nav labi, neviens tā nedara, bet dažreiz tā gadās).

Kā tas strādā?

Papildus podam ar Postgres un paÅ”u Prometheus mums nepiecieÅ”ama vēl viena entitāte — eksportētājs.

Eksportētājs ir aÄ£ents, kas vāc metriku no lietotnes vai pat serveris. Postgres eksportētājs ir uzrakstÄ«ts Go valodā, darbojas pēc principa, kurā tiek izpildÄ«ti SQL skripti datu bāzē, un pēc tam iegÅ«tie rezultāti tiek savākti Prometheus. Tas arÄ« ļauj paplaÅ”ināt vācamās metrikas, pievienojot savas.

Mēs to deployējam Ŕādā veidā (piemērs deployment.yaml, nav saistoÅ”s):


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

Tāpat arī ir nepiecieŔams serviss un image stream

Pēc deployment mēs ļoti vēlamies, lai visi viens otram redzētu.

Pievienojam Prometheus konfigurācijai Ŕādu fragmentu:

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

Un Ŕeit viss sāka darboties, palika tikai pievienot visu Ŕo Labā un izbaudīt rezultātu.

Papildus iespējai pievienot savus pieprasÄ«jumus, prometheus var mainÄ«t iestatÄ«jumus, savācot mērÄ·tiecÄ«gākas nepiecieÅ”amās metriki.

Līdzīgā veidā tika izdarīts attiecībā uz:

  • Kafka
  • Elasticsearch
  • Mongo

P.S. Visi dati par nosaukumiem, portiem un pārējo ņemti no gaisa un nerada nekādus faktus.

Noderīgas saites:
Dažādu eksportētāju saraksts

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster