简介
url监控是判断服务到底是不是可用的一个关键,有时候所有监控指标都是正常的,但是因为外部防火墙或者网络缘故可能导致我们生产的服务不能访问,所以监控url是必要的
配置启动blackbox
首先下载
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.16.0/blackbox_exporter-0.16.0.linux-amd64.tar.gz
解压
tar -zxvf blackbox_exporter-0.16.0.linux-amd64.tar.gz
mv blackbox_exporter-0.16.0.linux-amd64 blackbox
编辑启动脚本
vim start.sh
加入
nohup ./blackbox_exporter --config.file=./blackbox.yml &
看下blackbox.yml的默认配置
modules:
http_2xx:
prober: http
http_post_2xx:
prober: http
http:
method: POST
tcp_connect:
prober: tcp
pop3s_banner:
prober: tcp
tcp:
query_response:
- expect: "^+OK"
tls: true
tls_config:
insecure_skip_verify: false
ssh_banner:
prober: tcp
tcp:
query_response:
- expect: "^SSH-2.0-"
irc_banner:
prober: tcp
tcp:
query_response:
- send: "NICK prober"
- send: "USER prober prober prober :prober"
- expect: "PING :([^ ]+)"
send: "PONG ${1}"
- expect: "^:[^ ]+ 001"
icmp:
prober: icmp
因为我们这里只是监控url是不是可以访问,所以只需要保留下面就可以、
modules:
http_2xx:
prober: http
当然blackbox还支持对post请求的监控
http_post_2xx:
prober: http
timeout: 5s
http:
method: POST
headers:
Content-Type: application/json
body: '{}'
如果你的访问时开起了nginx basic验证的,也就是当你访问你的站点是需要输入账号和密码的,blackbox也支持对basic验证的请求
http_basic_auth_example:
prober: http
timeout: 5s
http:
method: POST
headers:
Host: "login.example.com"
basic_auth:
username: "username"
password: "mysecret"
接着启动blackbox
./start.sh
配置启动prometheus
之后配置prometheus
- job_name: 'blackbox_url'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://www.baidu.com
- https://www.google.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 10.10.10.21:9115
job_name可以自定义,默认的blackbox的metrics_path是/probe
下面
params:
module: [http_2xx]
表示这个job使用blackbox http_2xx
的module,也就是我们在blackbox配置文件定义的那些东西
之后只要在target里面加入你要监控的url就可以了
配置告警规则
之后是指prometheus的告警规则
我们只要监控probe_success
这个值就可以了
# 链接监控
- name: blackbox_url
rules:
- alert: 网站不能访问
expr: probe_success == 0
for: 1m
labels:
status: 严重告警
kind: blackbox_url
annotations:
summary: "{{$labels.instance}} 不能访问"
description: "{{$labels.instance}} 不能访问"
如果probe_success是0 那就是访问不了了
配置grafana
这里直接选择
https://grafana.com/grafana/dashboards/9965
这个模板就好了
欢迎关注我的博客www.bboy.app
Have Fun