ื ื™ื˜ื•ืจ postgres ื‘ืชื•ืš Openshift

ื™ื•ื ื˜ื•ื‘, ืชื•ืฉื‘ื™ ื—ื‘ืจ!

ื”ื™ื•ื ืื ื™ ืจื•ืฆื” ืœืกืคืจ ืœื›ื ืื™ืš ื‘ืืžืช ืจืฆื™ื ื• ืœืคืงื— ืขืœ postgres ื•ืขื•ื“ ื›ืžื” ื™ืฉื•ื™ื•ืช ื‘ืชื•ืš ืืฉื›ื•ืœ OpenShift ื•ืื™ืš ืขืฉื™ื ื• ืืช ื–ื”.

ื‘ื›ื ื™ืกื” ื”ื™ื• ืœื”ื:

  • ื”ืจืžืช ืคืชื™ื—ื”
  • ื”ื’ื”
  • ืคืจื•ืžืชืื•ืก


ื›ื“ื™ ืœืขื‘ื•ื“ ืขื ื™ื™ืฉื•ื Java, ื”ื›ืœ ื”ื™ื” ื“ื™ ืคืฉื•ื˜ ื•ืฉืงื•ืฃ, ืื• ืœื™ืชืจ ื“ื™ื•ืง:

1) ื”ื•ืกืคื” ืœ-build.gradle

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

2) ื”ืคืขืœ ืคืจื•ืžืชืื•ืก ืขื ืชืฆื•ืจื”

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

3) ื”ื•ืกืคืช ืชืฆื•ื’ื” ืœื’ืจืคืื ื”

ื”ื›ืœ ื”ื™ื” ื“ื™ ืคืฉื•ื˜ ื•ืคืจื•ื–ืื™ ืขื“ ืฉื”ื’ื™ืข ื”ืจื’ืข ืœื ื˜ืจ ืืช ื”ื‘ืกื™ืกื™ื ืฉื ืžืฆืื™ื ื‘ืงืจื‘ืช ืžืงื•ื ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช ืฉืœื ื• (ื›ืŸ, ื–ื” ืจืข, ืืฃ ืื—ื“ ืœื ืขื•ืฉื” ืืช ื–ื”, ืื‘ืœ ื“ื‘ืจื™ื ืฉื•ื ื™ื ืงื•ืจื™ื).

ืื™ืš ื–ื” ืขื•ื‘ื“?

ื‘ื ื•ืกืฃ ืœืชืจืžื™ืœ ืขื postgres ื•-prometheus ืขืฆืžื•, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืขื•ื“ ื™ืฉื•ืช ืื—ืช - ื™ืฆื•ืื ื™ืช.

ื™ืฆื•ืืŸ ื‘ืงื•ื ืกืคื˜ ืžื•ืคืฉื˜ ื”ื•ื ืกื•ื›ืŸ ืฉืื•ืกืฃ ืžื“ื“ื™ื ืžืืคืœื™ืงืฆื™ื” ืื• ืืคื™ืœื• ืžืฉืจืช. ืขื‘ื•ืจ postgres exporter, ื–ื” ื›ืชื•ื‘ ื‘-Go, ื–ื” ืขื•ื‘ื“ ืขืœ ื”ืขื™ืงืจื•ืŸ ืฉืœ ื”ืคืขืœืช ืกืงืจื™ืคื˜ื™ื ืฉืœ SQL ื‘ืชื•ืš ืžืกื“ ื”ื ืชื•ื ื™ื ื•ืื– prometheus ืœื•ืงื— ืืช ื”ืชื•ืฆืื•ืช ืฉื”ืชืงื‘ืœื•. ื–ื” ื’ื ืžืืคืฉืจ ืœืš ืœื”ืจื—ื™ื‘ ืืช ื”ืžื“ื“ื™ื ืฉื ืืกืคื• ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ื”ืžื“ื“ื™ื ืฉืœืš.

ื‘ื•ื ื ืคืจื•ืก ืืช ื–ื” ื›ืš (ื“ื•ื’ืžื” 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

ื–ื” ื’ื ื“ืจืฉ ืฉื™ืจื•ืช ื•ืชื“ืžื™ืช

ืœืื—ืจ ื”ืคืจื™ืกื”, ืื ื—ื ื• ื‘ืืžืช ืจื•ืฆื™ื ืฉื›ื•ืœื ื™ืจืื• ืื—ื“ ืืช ื”ืฉื ื™.

ื”ื•ืกืฃ ืืช ื”ื™ืฆื™ืจื” ื”ื‘ืื” ืœืชืฆื•ืจืช ืคืจื•ืžืชืื•ืก:

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

ื•ืื– ื”ื›ืœ ืขื‘ื“, ื›ืœ ืžื” ืฉื ืฉืืจ ื–ื” ืœื”ื•ืกื™ืฃ ืืช ื›ืœ ื”ื“ื‘ืจื™ื ื”ืืœื” ืœื’ืจืืคื ื” ื•ืœื™ื”ื ื•ืช ืžื”ืชื•ืฆืื”.

ื‘ื ื•ืกืฃ ืœื™ื›ื•ืœืช ืœื”ื•ืกื™ืฃ ืฉืื™ืœืชื•ืช ืžืฉืœืš, ืืชื” ื™ื›ื•ืœ ืœืฉื ื•ืช ืืช ื”ื”ื’ื“ืจื•ืช ื‘-prometheus, ืœืืกื•ืฃ ืžื“ื“ื™ื ืžืžื•ืงื“ื™ื ื™ื•ืชืจ.

ื–ื” ื ืขืฉื” ื‘ืฆื•ืจื” ื“ื•ืžื” ืขื‘ื•ืจ:

  • ืงืคืงื
  • Elasticsearch
  • Mongo

ื .ื‘ ื›ืœ ื”ื ืชื•ื ื™ื ืขืœ ืฉืžื•ืช, ื™ืฆื™ืื•ืช ื•ื›ืœ ื”ืฉืืจ ื ืœืงื—ื™ื ืžื”ืื•ื•ื™ืจ ื•ืื™ื ื ืžื›ื™ืœื™ื ืžื™ื“ืข.

ืงื™ืฉื•ืจื™ื ืฉื™ืžื•ืฉื™ื™ื:
ืจืฉื™ืžืช ื™ืฆื•ืื ื™ื ืฉื•ื ื™ื

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”