共计 3329 个字符,预计需要花费 9 分钟才能阅读完成。
一、需要
有些时候,咱们想监听服务器的某个端口是否存在,监听 http 的申请是否正确时,这个时候就能够应用 blackbox_exporter
来实现。
留神:
blackbox exporter 能够实现对 http
,https
,tcp(能够实现服务器接口是否在线)
,icmp(实现主机探活)
,dns
的探测。
二、bldeckbox_exporter 的装置
1、下载
# 下载
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.darwin-amd64.tar.gz
# 解压
tar -zxvf blackbox_exporter-0.18.0.darwin-amd64.tar.gz
# 重命名
mv blackbox_exporter-0.18.0.darwin-amd64/ blackbox_exporter
# 进入 blackbox_exporter 目录
cd blackbox_exporter
下载地址 -https://github.com/prometheus/blackbox_exporter/releases
2、编写 blackbox.yml 配置文件
modules:
http_2xx: # 这个名字是轻易写的,然而须要在 prometheus.yml 配置文件中对应起来。prober: http # 进行探测的协定,能够是 http、tcp、dns、icmp
timeout: 10s
http_post_2xx:
prober: http
http:
method: POST
tcp_connect: # tcp 检测,比方检测某个端口是否在线
prober: tcp
icmp: # icmp 检测,比方 ping 某个服务器
prober: icmp
留神:
1、上方模块中 http
或 icmp
等的配置不全,这个能够通过拜访 https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md 查看残缺的配置。
2、如果要应用 icmp
,那么针对不同的操作系统可能要晋升权限。
3、启动 blackbox_exporter
#!/usr/bin
nohup /Users/huan/soft/prometheus/blackbox_exporter/blackbox_exporter \
--config.file="/Users/huan/soft/prometheus/blackbox_exporter/blackbox.yml" \
--web.listen-address=":9098" \
--log.level=debug \
> logs/blackbox.out 2>&1 &
拜访 http://localhost:9098
4、和 prometheus 集成
prometheus.yml
配置文件的编写。
scrape_configs:
- job_name: 'blackbox_http_2xx' # 配置 get 申请检测
scrape_interval: 30s
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets: # 测试如下的申请是否能够拜访的通
- 127.0.0.1:10005
- http://127.0.0.1:10005/hello/zhangsan
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9098 # blackbox-exporter 服务所在的机器和端口
- job_name: 'blackbox_http_post_2xx' # 配置 post 申请检测
scrape_interval: 30s
metrics_path: /probe
params:
module: [http_post_2xx]
static_configs:
- targets: # 测试如下的 post 申请是否能够拜访的通,该 post 申请不带参数
- 127.0.0.1:10005
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9098 # blackbox-exporter 服务所在的机器和端口
- job_name: 'blackbox_http_ping' # 检测是否能够 ping 通某些机器
scrape_interval: 30s
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 127.0.0.1
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9098 # blackbox-exporter 服务所在的机器和端口
- job_name: 'blackbox_tcp_connect' # 检测某些端口是否在线
scrape_interval: 30s
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets:
- 127.0.0.1:10006
- 127.0.0.1:10005
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9098 # blackbox-exporter 服务所在的机器和端口
手动拜访
手动拜访 tcp_connect
这个模板 (在 blackbox.yml 配置文件中执行的),判断 127.0.0.1 机器上的 10005 端口是否是通的。
curl http://127.0.0.1:9098/probe?target=127.0.0.1:10005&module=tcp_connect&debug=true
解释:
1、在 job 等于 blackbox_http_2xx 和 blackbox_http_post_2xx 咱们测试来某个 get 和 post 申请是否能够拜访的通。
2、在 job 等于 blackbox_tcp_connect 中 测试来某个端口是否是通的。
5、在 grafana 中查看。
1、先在 grafana 网站上搜寻一个 blackbox_exporter 的图表,此处我抉择的是 12275
。
2、导入到 grafana 中,并依据本人的理论状况做一些微改。
6、如果须要监控告警
1、probe_success
指标能够判断咱们的 icmp、tcp、http、post 监测是否失常。值为 1 失常,0 不失常。2、probe_http_status_code
指标能够晓得某个 http 申请返回的响应码。
3、probe_ssl_earliest_cert_expiry
指标能够晓得 ssl 证书何时过期。
三、参考链接
1、blackbox_exporter 的下载地址
2、blackbox.yml 的编写例子
3、blackbox.yml 中能够编写的配置属性