grafana

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:



  • job_name: ‘demo’

    scrape the service every second


    scrape_interval: 1s


    setup the static configs


    static_configs:



    • targets: [‘docker.for.mac.localhost:9009’]





为此指标,我们需要使用 rate() 函数来比较处理任务所花费的秒数以及处理完成的任务数。



sum(
rate(worker_jobs_process_time_seconds_sum[5m])
/
rate(worker_jobs_process_time_seconds_count[5m])
)



Category golang