Saib xyuas postgres hauv Openshift

Nyob zoo, cov neeg nyob hauv Habr!

Hnub no kuv xav qhia koj tias peb xav saib xyuas postgres thiab ob peb lwm qhov chaw hauv OpenShift pawg thiab peb tau ua li cas.

Ntawm qhov nkag lawv muaj:

  • Openshift
  • Helm
  • Prometheus


Txhawm rau ua haujlwm nrog java daim ntawv thov, txhua yam yooj yim heev thiab pob tshab, lossis kom meej meej:

1) Ntxiv rau build.gradle

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

2) Khiav prometheus nrog kev teeb tsa

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

3) Ntxiv cov zaub rau Grafana

Txhua yam yog yooj yim heev thiab prosaic kom txog rau thaum lub sijhawm los saib xyuas cov hauv paus uas nyob ze ntawm peb lub npe (yog, qhov no tsis zoo, tsis muaj leej twg ua qhov no, tab sis muaj ntau yam tshwm sim).

Nws ua haujlwm li cas?

Ntxiv rau cov pods nrog postgres thiab prometheus nws tus kheej, peb xav tau ib qho chaw ntxiv - exporter.

Tus xa tawm hauv lub tswv yim paub daws teeb yog tus neeg sawv cev uas sau cov metrics los ntawm daim ntawv thov lossis txawm tias lub server. Rau postgres exporter, nws yog sau nyob rau hauv Go, nws ua hauj lwm nyob rau hauv lub hauv paus ntsiab lus ntawm khiav SQL scripts nyob rau hauv lub database thiab ces prometheus yuav siv sij hawm qhov tau txais. Qhov no kuj tso cai rau koj nthuav cov metrics sau los ntawm kev ntxiv koj tus kheej.

Cia peb xa nws zoo li qhov no (piv txwv li deployment.yaml, tsis yog khi):


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

Nws kuj xav tau ib qho kev pabcuam thiab cov duab ntws

Tom qab kev xa tawm, peb xav kom sawv daws pom ib leeg.

Ntxiv cov khoom hauv qab no rau Prometheus config:

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

Thiab tom qab ntawd txhua yam ua haujlwm, txhua yam uas tseem tshuav yog ntxiv tag nrho cov khoom no rau grafana thiab txaus siab rau qhov tshwm sim.

Ntxiv rau qhov muaj peev xwm ntxiv koj tus kheej cov lus nug, koj tuaj yeem hloov kho qhov chaw hauv prometheus, sau ntau cov phiaj xwm ntsuas.

Qhov no tau ua nyob rau hauv ib txoj kev zoo sib xws rau:

  • Kafka
  • Elasticsearch
  • Mongo

PS Tag nrho cov ntaub ntawv ntawm cov npe, chaw nres nkoj thiab cov seem yog muab los ntawm huab cua thiab tsis muaj cov ntaub ntawv.

Cov kev sib txuas tseem ceeb:
Cov npe ntawm ntau yam exporters

Tau qhov twg los: www.hab.com

Ntxiv ib saib