## 黑盒監控
## 一、白盒監控和黑盒監控
### 1.1 定義
在監控體系里面,通常我們認為監控分為:白盒監控 和黑盒監控

* 黑盒監控
主要關注的現象,一般都是正在發生的東西,例如出現一個告警,業務接口不正常,那么這種監控就是站在用戶的角度能看到的監控,重點在于能對正在發生的故障進行告警。
* 白盒監控
主要關注的是原因,也就是系統內部暴露的一些指標,例如redis的info 中顯示redis slavedown,這個就是 redis info 顯示的一個內部的指標,重點在于原因,可能是在黑盒監控中看到 redis down,而查看內部信息的時候,顯示redis port is refused connection。
### 1.2 比較

### 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組件

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配置如下圖:

#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
成功監聽

<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/


修復檢測總耗時圖形
可以體現,檢測各個target的耗時情況。探測不通的target往往耗時很久
#options選項,
{{env}}_{{name}}
#修改為:
{{instance}}
ICMP/HTTPS檢測類 階段耗時
#options選項,
{{env}}_{{name}){{phase}}
#修改為:
{{instance}}{{phase}}
網站HTTP狀態檢查
#options選項,
{{env}}_{{name}}
#修改為:
{{instance}}



- Prometheus教程
- 一. dokcer 安裝
- 二. 安裝docker-compose
- 三. docker-compose安裝Prometheus
- 四. 配置grafana的數據源
- 五. Prometheus的Exporter
- 六. Prometheus的基本術語
- 七. 監控Linux
- 八. 監控redis和mongodb
- 九. 監控mysql數據庫
- 十. 監控go程序
- 十一. 監控nginx
- 十二. 監控消息隊列
- 十三. 監控docker
- 十四. 監控進程
- 十五. 域名監控
- 十六. SNMP監控
- 十七. 黑盒監控
- 十八. 自定義監控
- 十九. go實現自定義監控
- 二十. 服務發現概述
- 二十一. 基于文件的服務發現
- 二十二. 基于Consul的服務發現
- 二十三. relabeling機制