Sobes.tech
Junior — Middle

Чӣ гуна метрикҳоро аз барнома ба Grafana барои визуализатсия ва мониторинг интиқол додан мумкин аст?

sobes.tech AI

Ҷавоб аз AI

Барои интиқоли метрикҳо аз барнома дар Go ба Grafana одатан системаи назорат Prometheus истифода мешавад, ки хуб бо Grafana ҳамгиро мешавад.

Қадамҳои асосӣ:

  1. Дар барномаи Go, китобхонаи муштари Prometheus (prometheus/client_golang) пайваст кунед.
  2. Метрикҳоро (санҷандаҳо, гистограммҳо, gauges) муайян ва сабт кунед.
  3. Сервери HTTP бо нуқтаи охири /metrics оғоз кунед, ки арзишҳои ҳозираи метрикҳоро дар формати фаҳмидани Prometheus медиҳад.
  4. Дар Prometheus, ҷамъоварии метрикҳоро аз ин нуқтаи охирӣ конфигуратсия кунед.
  5. Grafana бо Prometheus ҳамчун манбаи додаҳо пайваст мешавад ва метрикҳоро визуализатсия мекунад.

Намунаи код дар Go:

import (
    "net/http"
    "github.com/prometheus/client_golang/prometheus"
    "github.com/prometheus/client_golang/prometheus/promhttp"
)

var (
    opsProcessed = prometheus.NewCounter(prometheus.CounterOpts{
        Name: "myapp_processed_ops_total",
        Help: "Миқдори умумии ҳодисаҳои коркардшуда",
    })
)

func init() {
    prometheus.MustRegister(opsProcessed)
}

func main() {
    http.Handle("/metrics", promhttp.Handler())
    go func() {
        for {
            opsProcessed.Inc() // афзоиш додани ҳисобгар
            time.Sleep(time.Second)
        }
    }()
    http.ListenAndServe(":2112", nil)
}

Бо ин роҳ, метрикҳо барои ҷамъоварӣ аз ҷониби Prometheus ва визуализатсия дар Grafana дастрас мешаванд.