1.metrics类型是什么
统计数据指标的四种形式
1.Counter:只增不减的计数。 如:请求数
2.Gauge:能增能减的数值。 如:cpu使用率
3.Histogram:统计分布。 如:请求耗时区间
4.Summary:平均值 和 百分位。 如:平均响应时间
2.如何计算这些指标
1.counter:
requestCount := prometheus.NewCounterVec(
prometheus.CounterOpts{Name: "myapp_requests_total", Help: "Total requests"},
[]string{"path"},
)
prometheus.MustRegister(requestCount)
// 每次请求
requestCount.WithLabelValues("/home").Inc()
2.Gauge
cpuUsage := prometheus.NewGauge(prometheus.GaugeOpts{
Name: "myapp_cpu_usage", Help: "Current CPU usage",
})
prometheus.MustRegister(cpuUsage)
// 获取 CPU 使用率
percent, _ := cpu.Percent(0, false)
cpuUsage.Set(percent[0] / 100) // 更新当前值
3.Histogram
requestDuration := prometheus.NewHistogram(prometheus.HistogramOpts{
Name: "myapp_request_duration_seconds",
Help: "Request duration in seconds",
Buckets: prometheus.LinearBuckets(0.1, 0.1, 10), // 0.1s ~ 1s
})
prometheus.MustRegister(requestDuration)
// 每次请求记录耗时
responseTime.Observe(0.45)
4.Summary
responseTime := prometheus.NewSummary(prometheus.SummaryOpts{
Name: "myapp_response_time_seconds",
Help: "Response time in seconds",
Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001}, // P50,P90,P99
})
prometheus.MustRegister(responseTime)
// 每次请求记录耗时
requestDuration.Observe(0.23)
3.如何收集数据库(如mysql)的这些指标
1.下载相应数据库对应的 Exporter
2.Exporter连接到数据库
3.Exporter被访问/metrics时执行SQL查询,收集连接数,QPS 慢查询等
4.Exporter将结果暴露成 /metrics接口
5.Prometheus 拉取这些数据