example-metric是一个具有业务metric的系统程序,模拟了真实业务场景,目的是用于对接prometheus监控来业务指标。
在真实业务场景中除了会对主机资源、容器资源进行监控,还会对业务指标进行监控。比如网站每天访问量是多少、后端服务每天的 API 请求的成功率怎么样、每天执行的任务调度数量如何、成功失败比例如何等。对于这些业务指标项,peometheus 也给出了监控方案,只需要业务代码按照 prometheus 的 metrics 格式进行编写,prometheus 会对其定时抓取。 业务监控方案以 go 语言程序为例,使用prometheus抓取业务指标,自定义业务metric,模拟业务场景。
- 部署prometheus
- 部署cadvisor
- 部署grafana
- 对任务数量进行监控。公式如下
1. 探测任务总数 = 即时任务 + 周期性任务
2. 运行中任务 = 运行中的即时任务 + 运行中的周期性任务
3. 已完成的任务 = 完成的即使任务
- 对探测类型数量监控。统计不同类型任务的数量。
IP资产探测
域名资产探测
网络质量测试
区块链联通性测试
区块链连通性探测
资产漏洞威胁发现
网站资产探测
- 即时任务默认值100个(完成)周期任务默认值2个完成。
- 运行中的即时任务为20以内随机数据,运行中的周期任务为10以内的随机数。运行中任务 = 运行中的即时任务 + 运行中的周期性任务
- 即时任务 = 即时任务(默认值)+ 即时任务(进行中)
- 周期任务 = 周期任务(默认值)+ 周期任务(进行中)
- 探测任务总数 = 即时任务 + 周期性任务
- 每日完成即时任务(30以内随机数)
- 每日完成周期任务(10以内随机数)
prometheus 定期读取指定服务metrics进行数据采集。因此,example-metrics要提供/metrics页面供prometheus采集。
$ git clone https://github.com/likai1130/example-metrics.git $ go mod tidy $ go run main.go运行后执行,访问 http://localhost:28256/metrics
将其部署后进行prometheus配置即可抓取数据
go build -t example-metrics:v0.1 .version: '3.8' # Docker Compose 文件版本
services:
example-metrics:
image: 'example-metrics:v0.1'
container_name: example-metrics
ports:
- "28256:28256"
networks:
- bridge-network
environment:
# 300s 采集一次 FIX ME
"COLLECT_INTERVAL_SEC": 300
networks:
bridge-network:
driver: bridge
在业务服务器运行
$ docker-compose up -d......
# 采集配置
scrape_configs:
......
# 监控指定服务器的业务指标 FIX ME
- job_name: "bus_tasks"
static_configs:
- targets:
- "x.x.x.x:28256"
- "x.x.x.x:28256"
- "x.x.x.x:28256"
# 告警配置
alerting:
alertmanagers:
- static_configs:
- targets:
- x.x.x.x:9093 # 默认为 -alertmanager:9093,修改为alertmanager服务器IP地址+9093
# rules为告警规则配置文件所在的目录,需要自行创建
rule_files:
- "/usr/local/prometheus/rules/*.yml"
# 采集配置
scrape_configs:
# 1. 监控Prometheus自身
- job_name: "prometheus"
static_configs:
- targets: ["x.x.x.x:9090"] # Prometheus自身地址
# 2. 监控所有服务器的node-exporter(节点指标:CPU、内存、磁盘等)
- job_name: "node_exporter"
static_configs:
- targets:
- "x.x.x.x:9100" # 本机node-exporter
- "x.x.x.x:9100" # 第二台服务器node-exporter
- "x.x.x.x:9100" # 第三台服务器node-exporter
# 3. 监控所有服务器的容器指标(通过cadvisor)
- job_name: "docker_containers"
static_configs:
- targets:
- "x.x.x.x:8080" # 本机cadvisor
- "x.x.x.x:8080" # 第二台服务器cadvisor
- "x.x.x.x:8080" # 第三台服务器cadvisor
# 4. 监控指定服务器的业务指标
- job_name: "bus_tasks"
static_configs:
- targets:
- "x.x.x.x:28256" # 220服务器上有
- "x.x.x.x:28256"
- "x.x.x.x:28256"
# 5. 添加监控Alertmanager主机
- job_name: "alertmanager"
static_configs:
- targets:
- "x.x.x.x:9093" # 告警服务器
$ docker restart prometheus访问你的prometheus http://x.x.x.x:9090可看到服务已被监控。
业务grafana的json模板,已经调试好,可以直接用






