作者: TiDBerHailang 原文来源:https://tidb.net/blog/b269e96f
1. 介绍
本文介绍了 TiDB 集群监控组件Blackbox Exporter监控运行机制和配置方式。Blackbox Exporter是Prometheus官方提供的 Exporter,它能够通过多种协议对网络服务进行探测,包括HTTP、HTTPS、DNS、TCP以及ICMP。通过这些协议,Blackbox Exporter 可以检测网络延迟、服务可用性和证书有效性等关键指标。Blackbox Exporter作为一个独立的应用程序,与Prometheus服务器一起运行。Blackbox Exporter是用Go编写的,Go是一种以高效著称的编译语言,它提供了一种模块化设计,允许通过添加新的协议和端点支持进行未来的扩展。
复制代码
Blackbox Exporter 应用场景
HTTP 测试:定义 Request Header 信息判断、Http status Http Respones Header Http Body 内容
TCP 测试:业务组件端口状态监听、应用层协议定义与监听
ICMP 测试:主机探活机制
POST 测试:接口联通性
SSL 证书过期时间
2. Blackbox Exporter 架构
Prometheus Blackbox Exporter 的工作原理是对端点执行探测,并根据这些探测的结果返回指标。作为一个独立程序,以服务形式对我提供提供,可以通过 curl 命令调用 Blackbox 的接口实现服务探测,例如:curl http://10.2.103.54:9115/probe?target=10.2.103.129\&module=icmp,通过返回值判断探测目标正常与否。通常 Blackbox 与 Protheus 进行集成,Prometheus 配置目标端点地址,探测模块和探测频率实现外部服务连续监控
3. Blackbox Exporter 部署
3.1 下载安装
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.22.0/blackbox_exporter-0.22.0.linux-amd64.tar.gz
tar zxvf blackbox_exporter-0.22.0.linux-amd64.tar.gz
cp blackbox_exporter-0.22.0.linux-amd64/blackbox_exporter /usr/local/bin
cp blackbox_exporter-0.22.0.linux-amd64/
cp blackbox_exporter-0.22.0.linux-amd64/blackbox.yml /etc/
blackbox_exporter --version
blackbox_exporter, version 0.22.0 (branch: HEAD, revision: 0bbd65d1264722f7afb87a72ec4128b9214e5840)
build user: root@4d81de342d10
build date: 20220802-13:56:00
go version: go1.18.5
platform: linux/amd64
复制代码
3.2 systemctl 管理服务
准备服务配置文件
vim /usr/lib/systemd/system/blackbox_exporter.service
[Unit]
Description=blackbox_exporter
After=network.target
[Service]
User=root
Type=simple
ExecStart=/usr/local/bin/blackbox_exporter/blackbox_exporter --config.file=/etc/blackbox.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
复制代码
启动服务
Http 查看 black_box 服务
http 访问测试(blackbox_exporter 默认监听 9115 端口)
4. Prometheus blackbox_exporter 配置
icmp 探活器使用
tcp 端口状态
http 探活器使用
5. 告警设置
icmp、tcp、http、post 监测是否正常可以观察 probe_success 这一指标
probe_success == 0 ## 联通性异常
probe_success == 1 ## 联通性正常
配置 tidb port 告警
- name: alert.rules
rules:
- alert: TiDB_server_is_down
expr: probe_success{group="tidb"} == 0
for: 1m
labels:
env: tidb-v6
level: emergency
expr: probe_success{group="tidb"} == 0
annotations:
description: 'cluster: tidb-v6, instance: {{ $labels.instance }}'
value: '{{ $value }}'
summary: TiDB server is down
复制代码
prometheus->alert 页面查看 TiDB_server_is_down 的告警信息
评论