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