参考promethues文档,构建简单的exporter
https://prometheus.io/docs/tutorials/instrumenting_http_server_in_go/
编写简单的http服务端
在本机上用go编写一个服务端 ,访问127.0.0.1:8090/ping,服务器将会响应pong
package main
import (
"fmt"
"net/http"
)
//路由函数
func ping(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "pong")
}
func main() {
//数据路由
http.HandleFunc("/ping", ping)
//监听端口
http.ListenAndServe(":8090", nil)
}
运行后,网页访问,如下输出
增加指标并注册
现在让我们向服务器添加一个指标,该指标将检测向 ping 端点发出的请求数,计数器指标类型适用于此,因为我们知道请求计数不会下降,只会增加。
整体实例代码如下:
package main
import (
"fmt"
"net/http"
"github.com/prometheus/client_golang/prometheus" //prometheues官方库
"github.com/prometheus/client_golang/prometheus/promhttp"
)
//创建prometheus计数器
var pingCounter = prometheus.NewCounter(
prometheus.CounterOpts{
Name: "ping_request_count",
Help: "No of request handled by Ping handler",
},
)
//更新 ping 处理程序以使用 pingCounter.Inc() 增加计数器的计数。
func ping(w http.ResponseWriter, req *http.Request) {
pingCounter.Inc()
fmt.Fprintf(w, "pong")
}
//然后将计数器注册到默认寄存器并公开指标。
func main() {
//MustRegister 函数将 pingCounter 注册到默认 Register。
//为了公开指标,Go Prometheus 客户端库提供了 promhttp 包。舞会。Handler() 提供了一个 http。
//公开在默认寄存器中注册的指标的处理程序。
prometheus.MustRegister(pingCounter)
http.HandleFunc("/ping", ping)
http.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":8090", nil)
}
运行代码,此时访问http://127.0.0.1:8090/metrics,就能看到提供的metric指标
此时,只要在prometheus的server端,在prometheus.yml配置文件中,添加如下配置,就能完成监控
global:
scrape_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ["localhost:9090"]
- job_name: simple_server
static_configs:
- targets: ["localhost:8090"]
运行prometheus,重新加载配置
prometheus --config.file=prometheus.yml
检查prometheus
登录,检查是否已经监控
tagerts已经存在
查询对应指标
至此,基本的最简单的exporter就完成了
标签:exporter,http,语言,8090,ping,pingCounter,指标,prometheus,go From: https://blog.51cto.com/u_11555417/6111415