prometheus使用blackbox监控url

简介

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的默认配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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是不是可以访问,所以只需要保留下面就可以、

1
2
3
modules:
  http_2xx:
    prober: http

当然blackbox还支持对post请求的监控

1
2
3
4
5
6
7
8
http_post_2xx:
    prober: http
    timeout: 5s
    http:
      method: POST
      headers:
        Content-Type: application/json
      body: '{}'

如果你的访问时开起了nginx basic验证的,也就是当你访问你的站点是需要输入账号和密码的,blackbox也支持对basic验证的请求

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
  - 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

下面

1
2
    params:
      module: [http_2xx]

表示这个job使用blackbox http_2xx的module,也就是我们在blackbox配置文件定义的那些东西

之后只要在target里面加入你要监控的url就可以了

配置告警规则

之后是指prometheus的告警规则

我们只要监控probe_success这个值就可以了

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 链接监控
- 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