Prometheus从0到1自定义监控
目标: 自己编写监控指标(记录页面点击次数),然后在granfa中展示
1. 编写exporter#
package main
import (
"fmt"
"net/http"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
var pingCounter = prometheus.NewCounter(
prometheus.CounterOpts{
Name: "ping_request_count",
Help: "No of request handled by Ping handler",
},
)
func ping(w http.ResponseWriter, req *http.Request) {
pingCounter.Inc()
fmt.Fprintf(w, "pong")
}
func main() {
prometheus.MustRegister(pingCounter)
http.HandleFunc("/ping", ping)
http.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":8090", nil)
}
初始化项目,安装prometheus的依赖包,并运行
go mod init prom_example
go mod tidy
go run main.go
我们每访问一次 http://localhost:8090/ping
, 指标ping_request_count就会+1
查看http://localhost:8090/metrics
,可以看到该指标。
2. 添加Promeetheus作业#
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: cmdb_server
static_configs:
- targets: ["localhost:8090"]
3. 在Grafana中添加面板展示#
不断的刷新可以看见ping的次数一直在增加。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
2020-11-03 使用Ansible Vault加密内容