เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก postgres เบžเบฒเบเปƒเบ™ Openshift

เบกเบทเป‰เบ—เบตเปˆเบ”เบต, เบŠเบฒเบงเป€เบกเบทเบญเบ‡ Habr!

เบกเบทเป‰เบ™เบตเป‰เบ‚เป‰เบญเบเบขเบฒเบเบšเบญเบเป€เบˆเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒ postgres เปเบฅเบฐเบชเบญเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบญเบทเปˆเบ™เป†เบžเบฒเบเปƒเบ™เบเบธเปˆเบก OpenShift เปเบฅเบฐเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบกเบฑเบ™เปเบ™เบงเปƒเบ”.

เบขเบนเปˆเบ—เบฒเบ‡เป€เบ‚เบปเป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบกเบต:

  • เป€เบ›เบตเบ”เปƒเบˆ
  • Helm
  • Prometheus


เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ java, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเป‚เบ›เปˆเบ‡เปƒเบช, เบซเบผเบทเป€เบžเบทเปˆเบญเปƒเบซเป‰เบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒ:

1) เบเบฒเบ™เป€เบžเบตเปˆเบกเปƒเบชเปˆ build.gradle

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

2) เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ prometheus เบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ

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

3) เบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบเบฑเบš Grafana

เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐ prosaic เบˆเบปเบ™เบเปˆเบงเบฒเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป„เบ”เป‰เบกเบฒเป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒเบ–เบฒเบ™เบ—เบตเปˆเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบเป‰เป†เปƒเบ™ namespace เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ (เปเบกเปˆเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบ”เบต, เบšเปเปˆเบกเบตเปƒเบœเป€เบฎเบฑเบ”, เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™).

เบกเบฑเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เปเบ™เบงโ€‹เปƒเบ”?

เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบเบเบฑเบเบ—เบตเปˆเบกเบต postgres เปเบฅเบฐ prometheus เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบ™เบถเปˆเบ‡เบซเบปเบงเบซเบ™เปˆเบงเบ - เบœเบนเป‰เบชเบปเปˆเบ‡เบญเบญเบ.

เบœเบนเป‰เบชเบปเปˆเบ‡เบญเบญเบเปƒเบ™เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™เปเบกเปˆเบ™เบ•เบปเบงเปเบ—เบ™เบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒ metrics เบˆเบฒเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบซเบผเบทเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบชเบปเปˆเบ‡เบญเบญเบ postgres, เบกเบฑเบ™เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ Go, เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบซเบผเบฑเบเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ SQL scripts เบžเบฒเบเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ prometheus เป€เบญเบปเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบš. เบ™เบตเป‰เบเบฑเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบ metrics เป€เบเบฑเบšเบเปเบฒเป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡.

เปƒเบซเป‰เปƒเบŠเป‰เบกเบฑเบ™เปเบšเบšเบ™เบตเป‰ (เบ•เบปเบงเบขเปˆเบฒเบ‡ deployment.yaml, เบšเปเปˆเบกเบตเบเบฒเบ™เบœเบนเบเบกเบฑเบ”):


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

เบกเบฑเบ™เบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐเบฎเบนเบšเบžเบฒเบš

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเปเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เปƒเบซเป‰โ€‹เบ—เบธเบโ€‹เบ„เบปเบ™โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบเบฑเบ™โ€‹.

เป€เบžเบตเปˆเบกเบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปƒเบชเปˆ Prometheus config:

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

เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบชเบดเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เปƒเบชเปˆ grafana เปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเบชเบธเบเบเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš.

เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™ prometheus, เป€เบเบฑเบšเบเปเบฒเบเบฒเบ™เบงเบฑเบ”เปเบ—เบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบซเบผเบฒเบเบ‚เบถเป‰เบ™.

เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบชเปเบฒเบฅเบฑเบš:

  • Kafka
  • Elasticsearch
  • เบกเบปเบ‡เป‚เบ

PS เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบเปˆเบฝเบงเบเบฑเบšเบŠเบทเปˆ, เบžเบญเบ”เปเบฅเบฐเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบญเบปเบฒเบกเบฒเบˆเบฒเบเบญเบฒเบเบฒเบ”เปเบฅเบฐเบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เปƒเบ”เป†.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”:
เบฅเบฒเบเบŠเบทเปˆเบœเบนเป‰เบชเบปเปˆเบ‡เบญเบญเบเบ•เปˆเบฒเบ‡เป†

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™