黑盒监控、日志监控
黑盒监控
对Exporter的使用可以称为“白盒监控”,即需要把对应的Exporter程序安装到被监控的目标主机上,从而实现对主机各种资源及其状态的数据采集工作。但是由于某些情况下操作技术或其他原因,不是所有的Exporter都能部署到被监控的主机环境中,最典型的例子是监控全国网络质量的稳定性,通常的方法是使用ping操作,对选取的节点进行ICMP测试,此时不可能在他人应用环境中部署相关的Exporter程序。针对这样的应用的场景,Prometheus社区提供了黑盒解决方案,Blackbox Exporter无须安装在被监控的目标环境中,用户只需要将其安装在与Prometheus和被监控目标互通的环境中,通过HTTP、HTTPS、DNS、TCP、ICMP等方式对网络进行探测监控,还可以探测SSL证书过期时间。
1.下载blackbox_exporter
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbox_exporter-0.12.0.linux-amd64.tar.gz
2.解压缩软件包到指定的安装目录。
tar -zxf blackbox_exporter-0.12.0.linux-amd64.tar.gz
chown -R root:root blackbox_exporter-0.14.0.linux-amd64 # 注意使用个人创建的用户
ln -sv blackbox_exporter-0.14.0.linux-amd64 blackbox_exporter
cd blackbox_exporter
blackbox_exporter —version
blackbox_exporter --config.file="/etc/prober/prober.yml”
默认端口9115
http://localhost:9115/metric
3.添加blackbox_exporter为系统服务开机启动。
vim /usr/lib/systemd/system/blackbox_exporter.service
[Unit]
Description=blackbox_exporter
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/data/blackbox_exporter/blackbox_exporter
--config.file "/data/blackbox_exporter/blackbox.yml"
--web.listen-address ":9115"
Restart=on-failure
[Install]
WantedBy=multi-user.target”
配置文件
vim blackbox.yml
modules:
http_2xx: # 定义模块名称:http_2xx,自定义符合命名规则即可
prober: http # 定义探测类型:http
http_post_2xx: # 模块为http post功能探测
prober: http
http:
method: POST
tcp_connect: # 模块为tcp功能探测
prober: tcp
……省略部分……
icmp: # 模块为icmp功能探测
prober: icmp
http探测配置
检查HTTP状态,可以使用http探测器。它可以生成HTTP请求使用,如GET或POST方法,配置操作中可以,可以使用正则表达式进行相关匹配。首先,我们在blackbox.yml文件中添加HTTP监测模块,如下所示:
vi blackbox.yml
modules:
http_2xx:
prober: http
timeout: 8s # 定义请求超时时间
http:
valid_status_codes: [] # 接受任何2xx状态码
valid_status_codes: [‘200', '205'] # 接受特定状态码
method: GET
preferred_ip_protocol: "ip4"
ip_protocol_fallback: false
Blackbox exporter与prometheus集成
- job_name: 'blackbox_http'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- www.12306.cn
- www.baidu.com
基于文件的服务发现
file_sd_configs:
- file:
- '/target/prober/http_probe.json'
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9115
基于文件的服务发现
vim /target/prober/http_probe.json
[
{
"targets":[
"www.12306.cn",
"www.baidu.com",
"www.taobao.com",
"www.jd.com",
"www.qq.com"
]
}
]
Prometheus是如何与Blackbox Exporter进行关联集成的?
relabel_configs覆盖目标的__address__标签以指定导出器的主机名,进而简化了Prometheus任务配置内容。在采集样本数据之前通过relabel_configs对采集任务进行动态设置过程如下:
1)第一个重新标记(relabel)通过将__address__标签(即当前目标的地址)写入__param_target标签来创建参数。
2)第二个relabel将获取__param_target的值,并覆写到instance标签中。
3)覆写target实例的__address__标签值为BlockBox Exporter实例的访问地址,示例中向192.168.186.7:9115发送请求获取实例的metrics信息。”
日志监控
使用mtail来监控日志
安装mtail
wget https://github.com/google/mtail/releases/download/mtail_3.0.0-rc51_Linux_arm64.tar.gz
tar -zxf mtail_3.0.0-rc51_Linux_arm64.tar.gz
chmod 0755 mtail
cp mtail /usr/local/bin
mtail --version
使用mtail
mkdir /etc/mtail # 创建程序规则目录,mtail依据规则对日志进行处理
vim /etc/mtail/line_count.mtail
counter line_count
/$/ {
line_count++
}
mtail语法
https://github.com/google/mtail/wiki/Language
运行mtail
mtail --progs /etc/mtail --logs '/var/log/*.log'
分别指定程序规则和要处理的日志。多个日志用","或--logs
默认运行在3903端口
prometheus中部署mtail
scrape_configs:
- job_name: 'mtail'
file_sd_config:- files:
- 'target/mtail/*.json'
refresh_interval: 5m
- 'target/mtail/*.json'
- files:
[{
"targets": [
"web:3903",
"rails:3903"
]
}]
黑盒监控
使用Blackbox exporter实现探针监控。监测网页状态码、应用是否ping通、DNS是否解析等
安装Blackbox exporter
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbox_exporter-0.12.0.linux-amd64.tar.gz
tar -zxf blackbox_exporter-0.12.0.linux-amd64.tar.gz
cp blackbox_exporter /usr/local/bin
blackbox_exporter --version
配置Blackbox exporter
mkdir /etc/prober
vim /etc/prober/prober.yml
modules:
heep_2xx_check:
prober: http
timeout: 5s
http:
vaild_status_codes: []
# vaild_status_codes: [ '200', '304' ]
method: GET
icmp_check:
prober: icmp
timeout: 5s
icmp:
preferred_ip_protocaol: "ipv4"
dns_examplecom_check:
prober: dns
dns:
preferred_ip_protocol: 'ipv4"
query_name: "www.example.com" # 检查该域名是否会被解析
启动Blackbox exporter
blackbox_exporter --config.file="/etc/prober/prober.yml"
默认端口9115
http://localhost:9115/metric
prometheus中部署Blackbox exporter
- job_name: 'http_probe'
metrics_path: /probe
params:
module: [http_2xx_check]
file_sd_configs:- file:
- '/target/prober/http_probe.json'
refresh_interval: 5m
relabel_configs:
- '/target/prober/http_probe.json'
- soucre_labels: [address]
target_label: __param_target - soucre_labels: [__param_target]
target_label: instance - soucre_labels: address
target_label: prober.example.com:9115
- file:
[{
"targets": [
"http://www.example.com",
"https://www.example.com",
""
]
}]