рд╢реБрдн рджрд┐рд╡рд╕, рд╣рдмреНрд░реАрдЪреЗ рд░рд╣рд┐рд╡рд╛рд╕реА!
рдЖрдЬ рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧреВ рдЗрдЪреНрдЫрд┐рддреЛ рдХреА рдЖрдореНрд╣рд╛рд▓рд╛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдЖрдгрд┐ рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рдЗрддрд░ рдХрд╛рд╣реА рд╕рдВрд╕реНрдерд╛рдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рд╣реЛрддреЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рддреЗ рдХрд╕реЗ рдХреЗрд▓реЗ.
рдкреНрд░рд╡реЗрд╢рджреНрд╡рд╛рд░рд╛рд╡рд░ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рд╣реЛрддреЗ:
- рдУрдкрдирд╢рд┐рдлреНрдЯ
- рдкреНрд░рдореБрдЦрдкрджреА
- 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