ืžืึธื ื™ื˜ืึธืจื™ื ื’ ืคึผืึธืกื˜ื’ืจืขืก ืื™ืŸ Openshift

ื ื’ื•ื˜ืŸ ื˜ืื’, ืื™ื™ื ื•ื•ืื•ื™ื ืขืจ ืคื•ืŸ ื”ื‘ืจ!

ื”ื™ื™ึทื ื˜ ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ื–ืึธื’ืŸ ืื™ืจ ื•ื•ื™ ืžื™ืจ ื˜ืึทืงืข ื’ืขื•ื•ืืœื˜ ืฆื• ืžืึธื ื™ื˜ืึธืจ ืคึผืึธืกื˜ื’ืจืขืก ืื•ืŸ ืึท ืคึผืึธืจ ืคื•ืŸ ืื ื“ืขืจืข ืขื ื˜ื™ื˜ื™ื– ืื™ืŸ ื“ื™ OpenShift ืงื ื•ื™ืœ ืื•ืŸ ื•ื•ื™ ืžื™ืจ ื”ืึธื‘ืŸ ื“ืึธืก.

ื‘ืฒื ืืจืฒื ื’ืื ื’ ื”ืื‘ืŸ ื–ืฒ ื’ืขื”ืื˜:

  • ืึธืคึผืฉื™ืคื˜
  • ืจื•ื“ืขืจ
  • ืคึผืจืึธืžืขื˜ื”ืขื•ืก


ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ื–'ืื‘ื ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืึทืœืฅ ืื™ื– ื’ืึทื ืฅ ืคึผืฉื•ื˜ ืื•ืŸ ื˜ืจืึทื ืกืคึผืขืจืึทื ื˜, ืึธื“ืขืจ ืฆื• ื–ื™ื™ืŸ ืžืขืจ ื’ืขื ื•ื™:

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) ืึทื“ื™ื ื’ ืึท ืึทืจื•ื™ืกื•ื•ื™ื™ึทื–ืŸ ืฆื• Grafana

ืึทืœืฅ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืึทื ืฅ ืคึผืฉื•ื˜ ืื•ืŸ ืคึผืจืึธื–ืึทื™ืฉ ื‘ื™ื– ื“ืขืจ ืžืึธืžืขื ื˜ ื’ืขืงื•ืžืขืŸ ืฆื• ืžืึธื ื™ื˜ืึธืจ ื“ื™ ื‘ืึทืกืขืก ื•ื•ืึธืก ื–ืขื ืขืŸ ืœื™ื’ืŸ ื ื™ืจื‘ื™ื™ ืื™ืŸ ืื•ื ื“ื–ืขืจ ื ืึธืžืขืŸ ืคึผืœืึทืฅ (ื™ืึธ, ื“ืึธืก ืื™ื– ืฉืœืขื›ื˜, ืงื™ื™ื ืขืจ ื˜ื•ื˜ ื“ืึธืก, ืึธื‘ืขืจ ืคืึทืจืฉื™ื“ืขื ืข ื–ืื›ืŸ ืคึผืึทืกื™ืจืŸ).

ื•ื•ื™ืื–ื•ื™ ืืจื‘ื™ื™ื˜ ืขืก?

ืื™ืŸ ื“ืขืจืฆื• ืฆื• ื“ื™ ืคึผืึธื“ ืžื™ื˜ ืคึผืึธืกื˜ื’ืจืขืก ืื•ืŸ ืคึผืจืึธืžืขื˜ื”ืขื•ืก ื–ื™ืš, ืžื™ืจ ื“ืึทืจืคึฟืŸ ื ืึธืš ืื™ื™ืŸ ืขื ื˜ื™ื˜ื™ - ืขืงืกืคึผืึธืจื˜ืขืจ.

ืึท ืขืงืกืคึผืึธืจื˜ืขืจ ืื™ืŸ ืึทืŸ ืึทื‘ืกื˜ืจืึทืงื˜ ื‘ืึทื’ืจื™ืฃ ืื™ื– ืึทืŸ ืึทื’ืขื ื˜ ื•ื•ืึธืก ืงืึทืœืขืงืฅ ืžืขื˜ืจื™ืงืก ืคื•ืŸ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึธื“ืขืจ ืืคื™ืœื• ืึท ืกืขืจื•ื•ืขืจ. ืคึฟืึทืจ ืคึผืึธืกื˜ื’ืจืขืก ืขืงืกืคึผืึธืจื˜ืขืจ, ืขืก ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ Go, ืขืก ืึทืจื‘ืขื˜ ืื•ื™ืฃ ื“ืขื ืคึผืจื™ื ืฆื™ืคึผ ืคื•ืŸ ืคืœื™ืกื ื“ื™ืง ืกืงืœ ืกืงืจื™ืคึผืก ื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื•ืŸ ื“ืขืžืึธืœื˜ ืคึผืจืึธืžืขื˜ื”ืขื•ืก ื ืขืžื˜ ื“ื™ ื‘ืืงื•ืžืขืŸ ืจืขื–ื•ืœื˜ืึทื˜ืŸ. ื“ืึธืก ืื•ื™ืš ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื™ืงืกืคึผืึทื ื“ ื“ื™ ื’ืขื–ืืžืœื˜ ืžืขื˜ืจื™ืงืก ื“ื•ืจืš ืึทื“ื™ื ื’ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข.

ื–ืืœ ืก ืฆืขื•ื•ื™ืงืœืขืŸ ืขืก ื•ื•ื™ ื“ืึธืก (ื‘ื™ื™ึทืฉืคึผื™ืœ 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

ืื•ืŸ ื“ืขืžืึธืœื˜ ืึทืœืฅ ื’ืขืืจื‘ืขื˜, ืึทืœืข ื•ื•ืึธืก ื‘ืœื™ื™ื‘ื˜ ืื™ื– ืฆื• ืœื™ื™ื’ืŸ ืึทืœืข ื“ื™ ืฉื˜ืึธืคึผืŸ ืฆื• ื“ื™ ื’ืจืึทืคืึทื ืึท ืื•ืŸ ื”ื ืื” ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜.

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืœื™ื™ื’ืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืคึฟืจืื’ืŸ, ืื™ืจ ืงืขื ืขืŸ ื˜ื•ื™ืฉืŸ ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก ืื™ืŸ ืคึผืจืึธืžืขื˜ื”ืขื•ืก, ืงืึทืœืขืงื˜ื™ื ื’ ืžืขืจ ื˜ืึทืจื’ืขื˜ืขื“ ืžืขื˜ืจื™ืงืก.

ื“ืึธืก ืื™ื– ื’ืขื˜ืืŸ ืื™ืŸ ืึท ืขื ืœืขืš ื•ื•ืขื’ ืคึฟืึทืจ:

  • ืงืึทืคืงืึท
  • ืขืœืึทืกื˜ื™ืงืกืึทืจื˜ืฉ
  • ืžืึธื ื’ืึธ

ืคึผืก ื›ืœ ื“ืึทื˜ืŸ ืื•ื™ืฃ ื ืขืžืขืŸ, ืคึผืึธืจืฅ ืื•ืŸ ื“ื™ ืžื ื•ื—ื” ื–ืขื ืขืŸ ื’ืขื ื•ืžืขืŸ ืคื•ืŸ ื“ื™ ืœื•ืคื˜ ืื•ืŸ ื›ึผื•ืœืœ ืงื™ื™ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข.

ื ื•ืฆื™ืง ืœื™ื ืงืก:
ืจืฉื™ืžื” ืคื•ืŸ ืคืึทืจืฉื™ื“ืŸ ืขืงืกืคึผืึธืจื˜ืขืจืก

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’