普罗米修斯使用
介绍
项目地址: https://github.com/prometheus/prometheus
Prometheus, a Cloud Native Computing Foundation project, is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true.
Prometheus是Cloud Native Computing Foundation项目,是一个系统和服务监视系统。它以给定的时间间隔从已配置的目标收集指标,评估规则表达式,显示结果,并在发现某些情况为真时触发警报。
与其他监视系统相比,Prometheus的主要区别特征是:
- 一个多维数据模型(时间序列由指标名称定义和设置键/值尺寸)
- 一个灵活的查询语言来利用这一维度
- 不依赖于分布式存储;单服务器节点是自治的
- 时间序列收集通过HTTP 上的拉模型进行
- 通过中间网关支持推送时间序列
- 通过服务发现或静态配置*发现*目标
- 多种图形和仪表板支持模式
- 支持分层和水平联合
其实很重要的一点,是go生态的支持,它支持k8s,go项目服务等支持
快速开始
? 环境 mac os
wget https://github.com/prometheus/prometheus/releases/download/v2.10.0/prometheus-2.10.0.darwin-amd64.tar.gz
解压,运行,
cd prometheus-2.10.0.darwin-amd64
./prometheus --config.file=./prometheus.yml
web 页面:
可以 get到,并没有发现如何使用,
其实使用起来很简单,在
就可以直接展示数据了,可以显示最近的一个变化情况 ,下面这个图,是一个go gc的次数,可以看到大体的变化情况
客户端如何整合
官方地址:https://github.com/prometheus/client_golang
package main
import (
"flag"
"log"
"net/http"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
var addr = flag.String("listen-address", ":8080", "The address to listen on for HTTP requests.")
func main() {
flag.Parse()
http.Handle("/metrics", promhttp.Handler())
log.Fatal(http.ListenAndServe(*addr, nil))
}
如果你是go mod的话,直接使用
go mod init go-prometheus
// go mod vendor
go build cmd/main.go
./main -listen-address=:13058
curl http://localhost:13058/metrics //可以get到一些信息
然后在配置文件中
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus' // 普罗米修斯web端的
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: 'city' // 我们的服务
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:13058']
这个就是简单的Demo
? 有兴趣的小伙伴可以整合一下grafana ,支持无缝整合。