π Π‘Π²ΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊΠ° Π² Prometheus
Π₯ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈΠ»Π΅ΡΠ°Π΅Ρ Π² Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅? ΠΠ»ΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Π΄Π°Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡ? ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ Π·Π° 5 ΡΠ°Π³ΠΎΠ² β ΡΠ΅ΡΠ΅Π· ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ.
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ: ΡΡΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π° Go.
1. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Prometheus:
go get github.com/prometheus/client_golang/prometheus
2. Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΡΡΡΡΡΠΈΠΊ:
var requestCounter = prometheus.NewCounter(
prometheus.CounterOpts{
Name: "myapp_http_requests_total",
Help: "Total number of HTTP requests",
})
3. Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠΈΠΊΡ:
func init() {
prometheus.MustRegister(requestCounter)
}
requestCounter
Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.4. ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ endpoint Π΄Π»Ρ Prometheus:
http.Handle("/metrics", promhttp.Handler())
log.Fatal(http.ListenAndServe(":8080", nil))
5. ΠΠΈΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Prometheus
scrape_configs:
- job_name: 'myapp'
metrics_path: /metrics
static_configs:
- targets: ['localhost:8080']
π ΠΡΡ β ΡΠ΅ΠΏΠ΅ΡΡ
http://localhost:8080/metrics
ΠΎΡΠ΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Π΄Π°ΡΠ±ΠΎΡΠ΄ Π² Prometheus.