前言
监控首先需要解决监控目标发现的问题
一、Prometheus监控目标?
可以去参考Prometheus官网
监控目标
以上为对应的链接地址.说明了Prometheus现在发现监控目标获取方式支持哪些.基本命名规则为*__sd_config
1.file_sd_config
- 前期我们采用静态文件(file_sd_config)的方式,主要的交互方式,在我们内部有一个类似cmdb的系统,通过http方式提交对应的配置文件到gitlab文件,然后有人从gitlab下载对应的版本提交到Promethues对应配置的静态配置目录中。这样做的目的主要有两个:1 我们需要知道监控目标的生命周期(历史、为啥监控),
file_sd_config支持json与yaml两种格式,我们采用的json格式
prometheus.yaml文件添加如下内容
scrape_configs:
- job_name: ping_healthcheck_file
scrape_interval: 20s # 抓取时间周期
scrape_timeout: 10s # 超时时间
metrics_path: /probe
params:
module: [icmp] #ping
file_sd_configs: # 使用本地静态配置
- refresh_interval: 15s # 文件刷新间隔
files:
- "extend/ping/ping_*.json" #对应的文件目录
relabel_configs: #重新对应的请求标签
- source_labels: [__address__]
regex: (.*)(:80)?
target_label: __param_target
replacement: ${1}
- source_labels: [__param_target]
regex: (.*)
target_label: ping
replacement: ${1}
- source_labels: []
regex: .*
target_label: __address__
replacement: 127.0.0.1:9115
ping_*.json文件
[
{
"targets":["127.0.0.1"],
"labels":{
"team":"network",
"type":"local",
"name":"本地测试地址"
}
}
]
targets: 需要监控的模板
labels:携带的扩展属性,根据你系统需求来
以上就是基于静态文件做服务发现的
2. Consul
Consul这边主要是用作服务发现 交互方式:通过CMDB提供http方式put数据到Consul 提供的Http 接口上Consul我们也是单机部署,后续有需要再改进
使用版本为Consul_1.9.3
#!/bin/bash
nohup /data/consuldata/consul agent -server -ui -client 0.0.0.0 -bootstrap-expect=1 -data-dir=/data/consuldata/consul_data -node=consul-01 -advertise=127.0.0.1 -datacenter SH-TMP -bind=0.0.0.0 -client=0.0.0.0 -log-file=/data/consuldata/consul_data/consul.log &
启动之后,访问ConssulWeb地址( http://127.0.0.1:8500/ui) 就可以看到Consul提供的web地址。
下面可以通过http方式注册服务
访问地址: http://127.0.0.1:8500/v1/agent/service/register
请求方式 put
body内容
{"id": "icmp_consul-127.0.0.1","name":"icmp_consul",
"tags": [
"icmp:127.0.0.1",
"prometheus-icmp"
],
"Meta": {
"app": "icmp1",
"team": "appgroup",
"project": "bigdata"
}
}
id:唯一标识,删除需要使用该属性
name: 服务名
tags:标签可以参考下面Prometheus中使用
Meta:存放扩展属性标签
查询数据:http://127.0.0.1:8500/v1/catalog/service/icmp_consul[服务名]
请求方式:get
删除数据: http://127.0.0.1:8500/v1/agent/service/deregister/icmp_consul-127.0.0.1
请求方式put
下面是Consul与Prometheus相结合的yaml配置.下面配置的
- job_name: 'ping_consul'
scrape_interval: 20s #抓取时间
scrape_timeout: 12s # 超时时间
metrics_path: /probe
params:
module: [icmp]
consul_sd_configs:
- server: '127.0.0.1:8500' # consul的地址
relabel_configs:
- source_labels: [__meta_consul_tags]
regex: .*,prometheus-icmp,.* # 扫描对应的组的信息
action: keep
- source_labels: [__meta_consul_tags]
regex: .*,icmp:([^,]+),.*
replacement: '${1}'
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- regex: __meta_consul_service_metadata_(.+)
action: labelmap
- target_label: __address__
replacement: 127.0.0.1:9115
以上就是关于Consul与Prometheus的结合.上面我们使用了Prometheus中blackbox_exporter组件我后续会继续分享该组件的应用
总结
以上就是关于监控目标的问题,写的不好,还请多多指点