## 黑盒监控
## 一、白盒监控和黑盒监控
### 1.1 定义
在监控体系里面,通常我们认为监控分为:白盒监控 和黑盒监控
![](https://img.kancloud.cn/12/66/1266e8312c62a3644c88478dccb880a3_366x206.png)
* 黑盒监控
主要关注的现象,一般都是正在发生的东西,例如出现一个告警,业务接口不正常,那么这种监控就是站在用户的角度能看到的监控,重点在于能对正在发生的故障进行告警。
* 白盒监控
主要关注的是原因,也就是系统内部暴露的一些指标,例如redis的info 中显示redis slavedown,这个就是 redis info 显示的一个内部的指标,重点在于原因,可能是在黑盒监控中看到 redis down,而查看内部信息的时候,显示redis port is refused connection。
### 1.2 比较
![](https://img.kancloud.cn/fb/a3/fba3c643c267ae949058399ab98177b6_485x192.png)
### 1.3 监控场景中的”黑盒监控”
监控场景中的”白盒监控”,相当于需要把对应的Exporter程序安装到被监控的目标主机上从而实现对主机各种资源及其状态的数据采集工作。比如redis_exporter、mysqld_exporter等等,此时开发人员、运维人员对于服务器有较强的控制力,可以部署第三方的exporter.
但是由于某些情况下操作技术或其他原因,不是所有的Exporter都能部署到被监控的主机环境中,最典型的例子是监控全国网络质量的稳定性(此时不可能在他人应用环境中部署相关的Exporter程序),通常的方法是使用ping操作,对选取的节点进行ICMP测试。
针对这样的应用的场景,Prometheus社区提供了黑盒解决方案,blackbox_Exporter无须安装在被监控的目标环境中,用户只需要将其安装在与Prometheus和被监控目标互通的环境中,通过HTTP、HTTPS、DNS、TCP、ICMP等方式对网络进行探测监控,还可以探测SSL证书过期时间。
## 二、prometheus进行黑盒监控
### 2.1 监控需求
举例:待监控的对象
监控对象 | 收益
www.baidu.com网站 | 确保网站的稳定性
www.atstudy.com网站 | 确保网站的稳定性
centos1的icmp | 确保centos1的连通性
centos2的icmp | 确保centos2的连通性
centos1的9090端口/CP | 确保Prometheus服务器稳定性
centos2的9100端口/CP | 确保centos2的Linux服务器稳定性
解释:
* http协议
应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成。可以用来探测某个网站(80端口)是否正常运行。
* icmp协议用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。大部分网络检修技巧和工具都是基于ICMP的(也就是ping)简单点说,ICMP常用于寻找网络故障
* tcp协议
传输控制协议TCP(TransmissionControl Protocol)。简单来说,可以探测某个ip的某个端口是否通,用于探测服务/进程是否正常。
### 2.2 docker安装(略)
### 2.3 docker-compose安装(略)
### 2.3 部署blackbox_exporter
#### 2.3.1 centos2上配置config.yml
blackbox_exporter组件,需要一个config.yml,用于指示当前黑盘监控可以具备哪些监控能
力()
cat >/data/blackbox_exporter/config.yml<<"EOF"
modules:
#保留http_get黑盒探测通道
http_2xx:
prober: http
http:
method: GET
#保留http_post黑盒探测通道
http_post_2xx:
prober: http
http:
method: POST
#保留icmp黑盒探测通道
icmp:
prober: icmp
#保留tcp黑盒探测通道
tcp_connect:
prober: tcp
EOF
#### 2.3.2 centos1上以docker-compose方式运行
centos1机器上,修改docker-compose.yami文件
cd /data/docker-compose
vi docker-compose.yaml
yaml文件增加backbox_exporter组件
![](https://img.kancloud.cn/7b/22/7b22c58e210624af03e6f58fb5a6cd37_635x197.png)
blackbox_exporter:
image: registry.cn-hangzhou.aliyuncs.com/ldw520/blackbox-exporter:latest
container_name: blackbox_exporter
restart: always
networks:
- monitoring
volumes:
- /data/blackbox_exporter:/etc/blackbox_exporter
ports:
- 9115:9115
启动 docker-compose.yaml
docker-compose up -d
查看docker的信息
docker images
docker ps -a
宿主机上访问blackbox_exporter
的metrics
http://192.168.100.141:9115/metrics
<hr>
## 2.4 prometheus服务器添加blackbox_exporter的地址
192.168.100.85的centos上,修改prometheus的配置文件
#进入docker-prometheus目录
cd /data/docker-prometheus
#修改prometheus.yml
vi prometheus/prometheus.yml
添加blackbox_exporter配置如下图:
![](https://img.kancloud.cn/63/59/635991174dda2a6dc6b6a77ad7553b0e_690x515.png)
#http配置
- job_name: "blackbox_http"
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://www.baidu.com
- https://wy.ldw520.top
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
#tcp配置
- job_name: "blackbox_tcp"
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets:
- 192.168.28.87:9090
- 192.168.100.141:9100
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
#icmp配置 ping
- job_name: "blackbox_icmp"
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 192.168.28.87
- 192.168.100.141
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
保存后输入命令更新:
curl -XPOST http://localhost:9090/-/reload
成功监听
![](https://img.kancloud.cn/1c/94/1c9406e011754721523caa488c56e2f0_1620x629.png)
<hr>
## 三、常用的监控指标
| 指标名称 | 含义
| probe_success | 是否探测成功(取值1、0 分别表示成功、失败)
| probe_duration_seconds | 探测的耗时
| probe_dns_lookup_time_seconds | DNS 解折的耗时
| probe_ip_protocol | IP 协议,取值为 4、6
| probe_ip_addr_hash | IP 地址的哈希值,用于判断IP 是否变化
| probe_http_status_code | HTTP 响应的状态码,如果发生重定向,则取决于最后响应的状态码
| probe_http_content_length | HTTP 响应的 body 长度:单位 bytes
| probe_http_version | HTTP 响应的协议版本。比如1.1
| probe_http_ssl | HTTP 聘应是否采用SSL,取值为1、0probe_ssl_earliest_cert_expiry #SSL 正节的过期时间,为 Unix 时间戳
### 3.1grafana中对blackbox_exporter进行监控
copy id to clipboard->grafana的dashboards中lmport dashboard
https://grafana.com/grafana/dashboards/9965-1-blackbox-exporter-dashboard-20220412/
![](https://img.kancloud.cn/5e/c8/5ec865e7180e8757a65b6f27454e1bfb_1383x747.png)
![](https://img.kancloud.cn/af/1d/af1d8b494a682c23e9e84e4a092173f1_1833x883.png)
修复检测总耗时图形
可以体现,检测各个target的耗时情况。探测不通的target往往耗时很久
#options选项,
{{env}}_{{name}}
#修改为:
{{instance}}
ICMP/HTTPS检测类 阶段耗时
#options选项,
{{env}}_{{name}){{phase}}
#修改为:
{{instance}}{{phase}}
网站HTTP状态检查
#options选项,
{{env}}_{{name}}
#修改为:
{{instance}}
![](https://img.kancloud.cn/ee/28/ee28a82bb674f178838d18388f53539a_1241x620.png)
![](https://img.kancloud.cn/8e/f6/8ef624ccf1c10baee3c5b79c75729f3a_1523x858.png)
![](https://img.kancloud.cn/a7/81/a78134d43ceb14e2efbc2b9bcc43d442_1899x942.png)
- Prometheus教程
- 一. dokcer 安装
- 二. 安装docker-compose
- 三. docker-compose安装Prometheus
- 四. 配置grafana的数据源
- 五. Prometheus的Exporter
- 六. Prometheus的基本术语
- 七. 监控Linux
- 八. 监控redis和mongodb
- 九. 监控mysql数据库
- 十. 监控go程序
- 十一. 监控nginx
- 十二. 监控消息队列
- 十三. 监控docker
- 十四. 监控进程
- 十五. 域名监控
- 十六. SNMP监控
- 十七. 黑盒监控
- 十八. 自定义监控
- 十九. go实现自定义监控
- 二十. 服务发现概述
- 二十一. 基于文件的服务发现
- 二十二. 基于Consul的服务发现
- 二十三. relabeling机制