ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ postgres Π²Π½ΡƒΡ‚Ρ€ΠΈ Openshift

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток ΠΆΠΈΡ‚Π΅Π»ΠΈ Π₯Π°Π±Ρ€Π°!

БСгодня Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ postgres ΠΈ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Ρƒ сущностСй Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра OpenShift ΠΈ ΠΊΠ°ΠΊ ΠΌΡ‹ это сдСлали.

На Π²Ρ…ΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π»ΠΈ:

  • 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

ВсС довольно просто ΠΈ ΠΏΡ€ΠΎΠ·Π°ΠΈΡ‡Π½ΠΎ Π±Ρ‹Π»ΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ наступил ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π±Π°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Ρƒ нас рядом Π² нСймспСйсС ( Π΄Π°, это ΠΏΠ»ΠΎΡ…ΠΎ, Π½ΠΈΠΊΡ‚ΠΎ Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, Π½ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΠ΅).

Как ΠΆΠ΅ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

ΠšΡ€ΠΎΠΌΠ΅ ΠΏΠΎΠ΄Π° с postgres ΠΈ собствСнно prometheus Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ β€” exporter.

ЭкспортСр Π² ΠΎΡ‚Π²Π»Π΅Ρ‡Π΅Π½Π½ΠΎΠΌ понятии это Π°Π³Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ собираСт ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Ρƒ прилоТСния ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ сСрвСра. Для 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 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ настройку, собирая Π±ΠΎΠ»Π΅Π΅ Ρ‚Π°Ρ€Π³Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.

Аналогичным способом Π±Ρ‹Π»ΠΎ сдСлано для:

  • Kafka
  • Elasticsearch
  • Mongo

P.S. ВсС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ, ΠΏΠΎΡ€Ρ‚Π°ΠΌ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌΡƒ взяты с ΠΏΠΎΡ‚ΠΎΠ»ΠΊΠ° ΠΈ Π½Π΅ нСсут Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки:
Бписок Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… экспортСров

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com