一、什么是黑盒监控¶
黑盒监控是从外部视角对系统进行监控,类似于使用用户的角度观察系统。监控系统并不了解系统的内部工作方式,只关注对外部暴露的接口和功能的响应情况。黑盒监控主要通过发送请求并观察响应的方式来评估系统的可用性和性能。一般用于做域名监控。
黑盒监控一般有以下特点:
- 监控系统对被监控系统没有内部信息
- 监控是通过发送请求并检查响应或响应时间来进行的
- 重点在于检测系统的外部行为,如是否响应、是否返回正确的结果等
- 黑盒监控更容易实现,但对于复杂系统可能无法提供详细的内部信息
新版Prometheus Stack已经默认安装了Blackbox Exporter,可以通过以下命令查看:
[root@k8s-master01 ~]# kubectl get po -n monitoring -l app.kubernetes.io/name=blackbox-exporter
NAME READY STATUS RESTARTS AGE
blackbox-exporter-5dfb5455bb-4m6w2 3/3 Running 0 3d3h
同时也会创建一个Service,可以通过该Service访问Blackbox Exporter并传递一些参数:
[root@k8s-master01 ~]# kubectl get svc -n monitoring -l app.kubernetes.io/name=blackbox-exporter
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
blackbox-exporter ClusterIP 10.0.85.171 <none> 9115/TCP,19115/TCP 3d3h
上面服务端口说明:
- 端口9115是Prometheus Exporter服务的默认端口
- 端口19115可能是其他服务或应用程序的自定义端口,用于提供自定义的监控数据
这里我们可以做个测试,检测www.baidu.com网站的状态
[root@k8s-master01 ~]# curl -s "http://10.0.85.171:19115/probe?target=www.baidu.com&module=http_2xx" | tail -1
probe_success 1
上面参数说明:
- probe:接口地址
- target:检测的目标
- module:指定使用什么模块进行探测
二、什么是白盒监控¶
白盒监控是从内部视角对系统进行监控,类似于使用开发者的角度观察系统。监控系统可以深入了解系统的内部工作方式,包括系统的代码、性能指标、资源利用情况等。白盒监控通常通过在系统内部嵌入监控代码、日志和指标,或者使用代理来收集和分析内部信息。
白盒监控一般有以下特点:
- 监控系统能够获得被监控系统的内部信息,如代码执行、资源利用等
- 监控是通过在系统内部嵌入监控代码或使用代理来收集指标和日志等信息来进行的
- 重点在于监控系统的内部运行情况,如代码执行、数据库查询、资源使用等
- 白盒监控提供更为详细和深入的信息,但实现相对较为复杂,需要对系统的内部进行深入了解
三、对比黑盒监控和白盒监控¶
从不同方面对比黑盒监控和白盒监控:
- 视角:黑盒监控从外部用户的视角观察系统,而白盒监控从内部开发者的视角观察系统。
- 信息来源:黑盒监控仅关注外部行为,通过发送请求和观察响应进行监控;白盒监控能够获取系统的内部信息,包括代码执行、资源利用等。
- 实现难度:黑盒监控相对较简单易实现,因为不需要深入了解系统的内部工作方式;白盒监控实现较复杂,需要在系统内部插入监控代码或使用代理来收集信息。
- 信息深度:白盒监控提供更为详细和深入的信息,可以对系统进行更细粒度的监控和优化;黑盒监控提供的信息相对有限,主要用于评估系统的可用性和性能。
在实际应用中,通常会结合使用黑盒监控和白盒监控来全面监控和评估系统的状态和性能。黑盒监控可以用于快速发现系统是否可用和响应是否正常,而白盒监控可以用于更深入地分析系统的运行情况和性能指标。