рд╣реИрдм рдХреЗ рдЕрдЪреНрдЫреЗ рджрд┐рди рдХреЗ рдирд┐рд╡рд╛рд╕реА!
рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЯреНрд╕ рдФрд░ рдПрдХ рджреЛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдХреИрд╕реЗ рдореЙрдирд┐рдЯрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдФрд░ рд╣рдордиреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ред
рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░, рдЙрдирдХреЗ рдкрд╛рд╕ рдерд╛:
- 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) рдЧреНрд░рд╛рдлрд╛рдирд╛ рдореЗрдВ рдПрдХ рдбрд┐рд╕реНрдкреНрд▓реЗ рдЬреЛрдбрд╝рдирд╛
рдЬрдм рддрдХ рд╣рдорд╛рд░реЗ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдЖрд╕-рдкрд╛рд╕ рд╕реНрдерд┐рдд рдард┐рдХрд╛рдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдЖрдпрд╛, рддрдм рддрдХ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рдЕрднрд┐рдпреЛрдЧреНрдп рдерд╛ (рд╣рд╛рдВ, рдпрд╣ рдмреБрд░рд╛ рд╣реИ, рдХреЛрдИ рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ)ред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЯреНрд╕ рдФрд░ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЗ рд╕рд╛рде рдЪреВрд▓реНрд╣рд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдПрдХ рдФрд░ рдЗрдХрд╛рдИ - рдирд┐рд░реНрдпрд╛рддрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдПрдХ рдЕрдореВрд░реНрдд рдирд┐рд░реНрдпрд╛рддрдХ рдПрдХ рдПрдЬреЗрдВрдЯ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрдпрд╛рддрдХ рдХреЛ рдЧреЛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЕрдВрджрд░ sql рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдкрд░рд┐рдгрд╛рдо рд▓реЗрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЬреЛрдбрд╝рдХрд░ рдПрдХрддреНрд░рд┐рдд рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ (рдкрд░рд┐рдирд┐рдпреЛрдЬрдиред рдЙрджрд╛рд╣рд░рдг, рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рдирд╣реАрдВ):
--- 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
- рдореЛрдВрдЧреЛ
рдкреБрдирд╢реНрдЪ рдирд╛рдо, рдмрдВрджрд░рдЧрд╛рд╣ рдФрд░ рдмрд╛рдХреА рдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдЫрдд рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрдпрд╛рддрдХреЛрдВ рдХреА рд╕реВрдЪреА