需求
我们知道如果使用Zabbix的话,可以通过 web监测
实现业务接口的的状态码检测以及返回内容的检测,但如果是Prometheus监控的话,要怎么样才能实现监控业务接口的返回内容了?
当我们在使用 blackbox_exporter 的时候,默认不去改配置文件的话,监控接口只能监控接口的返回状态。没办法监控接口的返回内容。如何实现接口的返回内容了?
比如我们通过以下命令进行接口的请求
curl http://10.19.192.86:9115/probe?target=prometheus.io&module=http_2xx
curl http://10.16.10.65:9115/probe?target=prometheus.io&module=http_2xx&debug=true
curl http://10.19.192.86:9115/probe?module=http_2xx&target=baidu.com # 检测百度
请求的结果如下 :
判断get请求的返回内容并告警
vim blackbox.yml
# 以上内容省略
# 响应符合正则就失败
fail_if_body_matches_regexp:
- "0"
# 响应失败如果不符合正则表达式
fail_if_body_not_matches_regexp:
- "am"
### 以下内容是默认配置 省略
注意: 老版本的node_explorer的正则匹配如下,新版本已经改成 fail_if_body_matches_regexp
和 fail_if_body_not_matches_regexp
。 这个要特别注意,不然无法启动成功。
当时也是找了很久,后面通过官方文档才发现这个配置参数有改动。所以在使用的时候要特别注意了。(下面的是老版本的配置)
# 响应符合正则就失败
fail_if_matches_regexp:
[ - <regex>, ... ]
# 响应失败如果不符合正则表达式
fail_if_not_matches_regexp:
[ - <regex>, ... ]
响应符合正则就失败
和 响应失败如果不符合正则表达式
, 如何来理解?(补充内容用来理解的)
(1)如果我们添加如下的配置文件的内容。并且我们监控的 url 如果 https://tengx.xx.com为例,正常来讲,这个url 会 返回 i am tengx
。如果不正常就会返回 " i have problem"
# 省略
# 响应失败如果不符合正则表达式
fail_if_body_not_matches_regexp:
- "am"
上面的意思是讲,当返回内容不符合正则表达式(也就是: body不能匹配到am
) ,则响应失败,则 probe_success
为0。
(2)同样的道理,如果我们的配置文件为如下,url和上面一样。
# 响应符合正则就失败
fail_if_body_matches_regexp:
- "problem"
上面的配置意思是: 如果我们的正则匹配到了problem
就表示 失败了,此时 probe_success
的值为0。
针对 Prometheus 监控的学习,以及监测业务监控的详细讲解,可以点击 左侧 的视频教程系列即可观看。