рдУрдкрдирд╢рд┐рдлреНрдЯрдордзреНрдпреЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕рдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдгреЗ

рд╢реБрдн рджрд┐рд╡рд╕, рд╣рдмреНрд░реАрдЪреЗ рд░рд╣рд┐рд╡рд╛рд╕реА!

рдЖрдЬ рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧреВ рдЗрдЪреНрдЫрд┐рддреЛ рдХреА рдЖрдореНрд╣рд╛рд▓рд╛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдЖрдгрд┐ рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рдЗрддрд░ рдХрд╛рд╣реА рд╕рдВрд╕реНрдерд╛рдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рд╣реЛрддреЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рддреЗ рдХрд╕реЗ рдХреЗрд▓реЗ.

рдкреНрд░рд╡реЗрд╢рджреНрд╡рд╛рд░рд╛рд╡рд░ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рд╣реЛрддреЗ:

  • рдУрдкрдирд╢рд┐рдлреНрдЯ
  • рдкреНрд░рдореБрдЦрдкрджреА
  • Prometheus


рдЬрд╛рд╡рд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╕рд░реНрд╡рдХрд╛рд╣реА рдЕрдЧрджреА рд╕реЛрдкреЗ рдЖрдгрд┐ рдкрд╛рд░рджрд░реНрд╢рдХ рд╣реЛрддреЗ, рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рддрдВрддреЛрддрдВрдд:

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) рдЧреНрд░рд╛рдлрд╛рдирд╛рдордзреНрдпреЗ рдбрд┐рд╕реНрдкреНрд▓реЗ рдЬреЛрдбрдгреЗ

рдЖрдордЪреНрдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдЬрд╡рд│рдкрд╛рд╕ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рддрд│рд╛рдВрд╡рд░ рд▓рдХреНрд╖ рдареЗрд╡рдгреНрдпрд╛рдЪрд╛ рдХреНрд╖рдг рдпреЗрдИрдкрд░реНрдпрдВрдд рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЕрдЧрджреА рд╕реЛрдкреЗ рдЖрдгрд┐ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реЛрддреЗ (рд╣реЛрдп, рд╣реЗ рд╡рд╛рдИрдЯ рдЖрд╣реЗ, рдХреЛрдгреАрд╣реА рдЕрд╕реЗ рдХрд░рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЧреЛрд╖реНрдЯреА рдШрдбрддрд╛рдд).

рд╣реЗ рдХрд╕ рдХрд╛рдо рдХрд░рдд?

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдЖрдгрд┐ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рд╕рд╣ рдкреЙрдб рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдгрдЦреА рдПрдХрд╛ рдШрдЯрдХрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ - рдирд┐рд░реНрдпрд╛рддрдХ.

рдЕрдореВрд░реНрдд рд╕рдВрдХрд▓реНрдкрдиреЗрддреАрд▓ рдирд┐рд░реНрдпрд╛рддрдХ рдПрдХ рдПрдЬрдВрдЯ рдЖрд╣реЗ рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд┐рдВрд╡рд╛ рдЕрдЧрджреА рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реВрди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЧреЛрд│рд╛ рдХрд░рддреЛ. рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдПрдХреНрд╕рдкреЛрд░реНрдЯрд░рд╕рд╛рдареА, рд╣реЗ рдЧреЛ рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗ, рддреЗ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ SQL рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рддрддреНрддреНрд╡рд╛рд╡рд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЖрдгрд┐ рдирдВрддрд░ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдШреЗрддреЗ. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рдЬреЛрдбреВрди рдЧреЛрд│рд╛ рдХреЗрд▓реЗрд▓реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╡рд┐рд╕реНрддреГрдд рдХрд░рдгреНрдпрд╛рдЪреА рджреЗрдЦреАрд▓ рдЕрдиреБрдорддреА рджреЗрддреЗ.

рдЪрд▓рд╛ рддреЗ рдпрд╛рдкреНрд░рдорд╛рдгреЗ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░реВ (рдЙрджрд╛рд╣рд░рдг 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

рдЖрдгрд┐ рдордЧ рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд╛рд░реНрдп рдХреЗрд▓реЗ, рдлрдХреНрдд рд╣реЗ рд╕рд░реНрд╡ рд╕рд╛рдордЧреНрд░реА рдЧреНрд░рд╛рдлрдирд╛рдордзреНрдпреЗ рдЬреЛрдбрдгреЗ рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдорд╛рдЪрд╛ рдЖрдирдВрдж рдШреЗрдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ.

рддреБрдордЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдХреНрд╡реЗрд░реА рдЬреЛрдбрдгреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖рдорддреЗрд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рддреБрдореНрд╣реА рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рдордзреАрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдмрджрд▓реВ рд╢рдХрддрд╛, рдЕрдзрд┐рдХ рд▓рдХреНрд╖реНрдпрд┐рдд рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЧреЛрд│рд╛ рдХрд░реВ рд╢рдХрддрд╛.

рд╣реЗ рдЕрд╢рд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ:

  • рдХрд╛рдлрдХрд╛
  • Elasticsearch
  • рдореЛрдВрдЧреЛ

P.S. рдирд╛рд╡реЗ, рдкреЛрд░реНрдЯ рдЖрдгрд┐ рдЙрд░реНрд╡рд░рд┐рдд рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рд╣рд╡реЗрддреВрди рдШреЗрддрд▓реЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдд рдХреЛрдгрддреАрд╣реА рдорд╛рд╣рд┐рддреА рдирд╛рд╣реА.

рдЙрдкрдпреБрдХреНрдд рджреБрд╡реЗ:
рд╡рд┐рд╡рд┐рдз рдирд┐рд░реНрдпрд╛рддрджрд╛рд░рд╛рдВрдЪреА рдпрд╛рджреА

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛