https://github.com/prometheus/client_golang
https://segmentfault.com/a/1190000013565079
Query 类型的写法。
Name
该变量的名称,不支持特殊字符例如$
Refresh
可选Never,On Dashboard Load和On Time Range Change
如果该变量的值经常动态增加的话则选 On Time Range Change,否则 On Dashboard Load 就足够了,Query 类型千万不要选 Never,否则变量只会在你点进来编辑变量时才会更新
Query
查询语句,例如 stats.timers.fe.test.*
编写时 grafana 不会触发请求,需要在输入框外面点击一下,查询到的值就会显示在下边了
https://segmentfault.com/a/1190000013565079
https://github.com/scotwells/prometheus-by-example/tree/master/job-processor
当使用 Prometheus 生成服务级别的指标时,有两个典型的方法:内嵌地运行在一个服务里并在 HTTP 服务器上暴露一个 /metrics 端点,或者创建一个独立运行的进程,建立一个所谓的导出器。
https://godoc.org/github.com/prometheus/client_golang/prometheus
Counter(计数器)
counter 是一个累计的指标,代表一个单调递增的计数器,它的值只会增加或在重启时重置为零。例如,你可以使用 counter 来代表服务过的请求数,完成的任务数,或者错误的次数。
Gauge(计量器)
gauge 是代表一个数值类型的指标,它的值可以增或减。gauge 通常用于一些度量的值例如温度或是当前内存使用,也可以用于一些可以增减的“计数”,如正在运行的 Goroutine 个数。
Histogram(分布图)
histogram 对观测值(类似请求延迟或回复包大小)进行采样,并用一些可配置的桶来计数。它也会给出一个所有观测值的总和。
Summary(摘要)
跟 histogram 类似,summary 也对观测值(类似请求延迟或回复包大小)进行采样。同时它会给出一个总数以及所有观测值的总和,它在一个滑动的时间窗口上计算可配置的分位数。
// create a new mux server
server := http.NewServeMux()
// register a new handler for the /metrics endpoint
server.Handle(“/metrics”, promhttp.Handler())
// start an http server using the mux server
http.ListenAndServe(“:9001”, server)
var (
totalCounterVec = prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: “worker”,
Subsystem: “jobs”,
Name: “processed_total”,
Help: “Total number of jobs processed by the workers”,
},
// We will want to monitor the worker ID that processed the
// job, and the type of job that was processed
[]string{“worker_id”, “type”},
)
)
func INIt() {
…
// register with the prometheus collector
prometheus.MustRegister(totalCounterVec)
…
}
func startWorker(workerID string, jobs <-chan *Job) {
for {
select {
case job := <-jobs:
…
totalCounterVec.WithLabelValues(workerID, job.Type).Inc()
…
}
}
}
https://studygolang.com/articles/17959
抓取配置的信息。
scrape_configs:
scrape_interval: 1s
static_configs:
为此指标,我们需要使用 rate() 函数来比较处理任务所花费的秒数以及处理完成的任务数。
sum(
rate(worker_jobs_process_time_seconds_sum[5m])
/
rate(worker_jobs_process_time_seconds_count[5m])
)