Prometheus、Grafana自定义监控Doris数据库
Doris生产环境中需要监控数据库的空间使用情况,暂时没有找到现成的exporter,自己写一个吧。
以下是用shell写的示例,已经能够满足监控告警的需求。
当然,如果能用python写,或许可以实现更多的功能。
编辑自定义指标输出脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26cat doris_db_size.sh
#!/bin/bash
#配置MySQL/Doris连接信息
MYSQL_USER="doris_monitor""
MYSQL_PASS="your_password"
MYSQL_HOST="127.0.0.1"
MYSQL_PORT="9030"
# 结果文件路径(符合 node_exporter textfile 规则)
METRICS_FILE="/etc/prometheus/conf/node-exporter/doris_db_size.prom"
#执行SQL查询数据库大小
RESULT=$(mysql -u $MYSQL_USER -p$MYSQL_PASS -h $MYSQL_HOST -P $MYSQL_PORT -N -e "
SELECT table_schema, SUM(data_length + C0ALESCE(index_length, 0)) / 1024 / 1024 / 1024
FROM information_schema.tables GRouP BY table_schema;
")
# 生成 Prometheus 监控格式
echo "# HELP doris_database_size_gb Database size in GB" > $METRICS_FILE
echo "# TYPE doris_database_size_gb gauge" >> $METRICS_FILE
while read -r DB SIZE; do
# 去除可能的空行
if [[ !-z "$DB" && !-z "$SIZE" ]]; then
echo "doris_database_size_gb{database=\"$DB\"} $SIZE" >> $METRICS_FILE
fi
done <<< "$RESULT"
# 设置正确的权限
chown prometheus:prometheus $METRICS_FILE
chmod 644 $METRICS_FILE配置定时执行脚本,输出实时指标数据
1
2crontab-l
*/1 * * * * sh /etc/prometheus/conf/node-exporter/doris_db_size.sh查看输出的指标数据
1
2
3
4
5
6
7
8cat doris_db_size.prom
# HELP doris_database_size_gb Database size in GB
# TYPE doris_database_size_gb gauge
doris_database_size_gb{database="cls_*****_db"} 1841.7360581755638
doris_database_size_gb{database="information_schema"} 0
doris_database_size_gb{database="__internal_schema"} 1.2457972718402743
doris_database_size_gb{database="i***_db"} 1210.8293761350214
doris_database_size_gb{database="mysql"} 0在Prometheus Web中查看自定义指标doris_database_size_gb
在Grafana中已经可以查看数据库空间变化趋势
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Chan Revival Sky!
评论