ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 黑盒监控 ## 一、白盒监控和黑盒监控 ### 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 #### &nbsp;&nbsp;&nbsp;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 #### &nbsp;&nbsp;&nbsp;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 &nbsp;&nbsp;&nbsp;启动 docker-compose.yaml docker-compose up -d &nbsp;&nbsp;&nbsp;查看docker的信息 docker images docker ps -a &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;宿主机上访问blackbox_exporter 的metrics http://192.168.100.141:9115/metrics <hr> ## &nbsp;&nbsp;&nbsp;2.4 prometheus服务器添加blackbox_exporter的地址 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;192.168.100.85的centos上,修改prometheus的配置文件 #进入docker-prometheus目录 cd /data/docker-prometheus #修改prometheus.yml vi prometheus/prometheus.yml &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;添加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 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;保存后输入命令更新: curl -XPOST http://localhost:9090/-/reload &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;成功监听 ![](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进行监控 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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)