рд╢реБрдн рджрд┐рди, рд╣рдмреНрд░реБрдХрд╛ рдмрд╛рд╕рд┐рдиреНрджрд╛рд╣рд░реВ!
рдЖрдЬ рдо рддрдкрд╛рдИрд▓рд╛рдИ рдмрддрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рд╣рд╛рдореА рдХрд╕рд░реА рд╡рд╛рд╕реНрддрд╡рдореИ postgres рд░ OpenShift рдХреНрд▓рд╕реНрдЯрд░ рднрд┐рддреНрд░рдХрд╛ рдЕрдиреНрдп рд╕рдВрд╕реНрдерд╛рд╣рд░реВрдХреЛ рдПрдХ рдЬреЛрдбреАрд▓рд╛рдИ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ рд░ рд╣рд╛рдореАрд▓реЗ рдпреЛ рдХрд╕рд░реА рдЧрд░реНрдпреМрдВред
рдкреНрд░рд╡реЗрд╢рджреНрд╡рд╛рд░рдорд╛ рддрд┐рдиреАрд╣рд░реВ рдерд┐рдП:
- рдУрдкрдирд╢рд┐рдлреНрдЯ
- рд╣реЗрд▓рдореЗрдЯ
- Prometheus
рдЬрд╛рднрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди, рд╕рдмреИ рдХреБрд░рд╛ рдПрдХрджрдо рд╕рд░рд▓ рд░ рдкрд╛рд░рджрд░реНрд╢реА рдерд┐рдпреЛ, рд╡рд╛ рдердк рд╕рдЯреАрдХ рд╣реБрди:
1) build.gradle рдорд╛ рдердкреНрджреИ
implementation "io.micrometer:micrometer-registry-prometheus"
реи) рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд╕рд╛рде рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Grafana рдорд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдердкреНрджреИ
рд╣рд╛рдореНрд░реЛ рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рдирдЬрд┐рдХреИ рдЕрд╡рд╕реНрдерд┐рдд рдЖрдзрд╛рд░рд╣рд░реВ рдЕрдиреБрдЧрдорди рдЧрд░реНрдиреЗ рдХреНрд╖рдг рдирдЖрдПрд╕рдореНрдо рд╕рдмреИ рдХреБрд░рд╛ рдПрдХрджрдо рд╕рд░рд▓ рд░ рдкреНрд░реЛрд╕рд╛рдЗрдХ рдерд┐рдпреЛ (рд╣реЛ, рдпреЛ рдЦрд░рд╛рдм рдЫ, рдХрд╕реИрд▓реЗ рдпреЛ рдЧрд░реНрджреИрди, рддрд░ рдлрд░рдХ рдЪреАрдЬрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН)ред
рдпрд╕реНрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ?
рдкреЛрд╖реНрдЯрдЧреНрд░реЗрд╕ рд░ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рдХреЛ рд╕рд╛рде рдкреЛрдбрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рд╛рдореАрд▓рд╛рдИ рдЕрд░реНрдХреЛ рдПрдХрд╛рдЗ рдЪрд╛рд╣рд┐рдиреНрдЫ - рдирд┐рд░реНрдпрд╛рддрдХрд░реНрддрд╛ред
рдПрдХ рдЕрдореВрд░реНрдд рдЕрд╡рдзрд╛рд░рдгрд╛ рдорд╛ рдПрдХ рдирд┐рд░реНрдпрд╛рддрдХ рдПрдХ рдПрдЬреЗрдиреНрдЯ рд╣реЛ рдЬрд╕рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛ рд╕рд░реНрднрд░рдмрд╛рдЯ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫред рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдирд┐рд░реНрдпрд╛рддрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдпреЛ Go рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рдпрд╕рд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕ рднрд┐рддреНрд░ SQL рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреЗ рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рд▓рд┐рдиреНрдЫред рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ рдЖрдлреНрдиреИ рдердкреЗрд░ рд╕рдВрдХрд▓рд┐рдд рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
рдпрд╕рд▓рд╛рдИ рдпрд╕рд░реА рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реМрдВ (рдЙрджрд╛рд╣рд░рдг deployment.yaml, non-binding):
---
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
рдпрд╕рд▓рд╛рдИ рд╕реЗрд╡рд╛ рд░ рдЫрд╡рд┐ рдкреНрд░рд╡рд╛рд╣ рдкрдирд┐ рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛ
рддреИрдирд╛рддреА рдкрдЫрд┐, рд╣рд╛рдореА рд╡рд╛рд╕реНрддрд╡рдореИ рд╕рдмреИрд▓реЗ рдПрдХрдЕрд░реНрдХрд╛рд▓рд╛рдИ рд╣реЗрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред
Prometheus рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдирд┐рдореНрди рдЯреБрдХреНрд░рд╛ рдердкреНрдиреБрд╣реЛрд╕реН:
- 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