Prometheus 从 Eureka 导入监控服务配置

前言

随着注册中新的服务变多,需要定时同步服务监控信息到 Prometheus 中

linux 服务器上安装 jq 用来解析json文件

  1. 官方文档:https://github.com/fernandonogueira/PromEureka
  2. 官方文档:https://stedolan.github.io/jq/manual
1
yum install jq -y

2.使用jq解析Eureka的配置文件,兼容Prometheus配置

从注册中心拉去所有注册到的服务,去除网关

1
curl -s -H 'Accept:application/json' http://66.66.66.7:8761/eureka/apps | jq '[.applications.application[] | select(.name != "GATEWAY") | { labels:{job:.name},targets:[ .instance[] | .ipAddr + ":" + (.port["$"] | tostring) ] }]'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 解析出json内容如下:
[
{
"labels": {
"job": "PERMISSION"
},
"targets": [
"66.66.66.6:10001"
]
},
{
"labels": {
"job": "API"
},
"targets": [
"66.66.66.5:10002"
]
}
]

将内容输出到 JSON 文件中

1
curl -s -H 'Accept:application/json' http://66.66.66.7:8761/eureka/apps | jq '[.applications.application[] | select(.name != "GATEWAY") | { labels:{job:.name},targets:[ .instance[] | .ipAddr + ":" + (.port["$"] | tostring) ] }]' > /frank/prometheus-2.6.0.linux-amd64/targets.json

在Prometheus中配置解析好的 JSON 文件

targets.json 放在 prometheus.yml 同级目录下( 默认5m中自动加载一起)

1
2
3
4
5
6
7
8
scrape_configs:
- job_name: 'service_file_sd'
metrics_path: '/prometheus'
file_sd_configs:
- files:
- 'targets.json'
refresh_interval: 5m

扩展阅读

Grafana Dashboards

----本文结束 感谢您的阅读----