定时任务+mysql+Grafana实现磁盘利用率历史数据监控

背景

一个简单的例子来展示Grafana的多元化能力
Grafana几乎能展示所有我们想展示的数据

主体框架及注意点

1、服务器中增加定时任务,每天一次将磁盘利用率写到mysql数据库

2、mysql数据库记录前七天的磁盘利用率,每天一次将数据刷新,记录下最新一次数据刷新时间

3、Grafana接入mysql数据源进行界面展示

具体步骤

1、设计mysql表,表由10个字段构成,记录过去7天服务器的磁盘利用率

CREATE TABLE `disk_used` (
`id` int NOT NULL AUTO_INCREMENT,
`ip_address` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '0.0.0.0' COMMENT '服务器ip地址',
`7_days_ago` int DEFAULT '0' COMMENT '7天前磁盘占用率',
`6_days_ago` int DEFAULT '0' COMMENT '6天前磁盘占用率',
`5_days_ago` int DEFAULT '0' COMMENT '5天前磁盘占用率',
`4_days_ago` int DEFAULT '0' COMMENT '4天前磁盘占用率',
`3_days_ago` int DEFAULT '0' COMMENT '3天前磁盘占用率',
`2_days_ago` int DEFAULT '0' COMMENT '2天前磁盘占用率',
`last_day` int DEFAULT '0' COMMENT '昨天的磁盘占用率',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=945 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

2、在服务器编写定时任务脚本,获取服务器磁盘利用率并写入mysql数据库,并将前几天的数据刷新
#!/bin/bash
#by xxx on 2022xxxx

disk_used=`df -hl | grep ' /$' | awk '{print $5}' | sed 's/%//g'`
dbhost=<数据库地址>
username=<用户名>
passwd=<密码>
ip_address=<服务器ip地址>

mysql -h${dbhost} -u${username} -p${passwd} <<EOF
UPDATE test.disk_used SET 7_days_ago=6_days_ago where ip_address='${ip_address}';
UPDATE test.disk_used SET 6_days_ago=5_days_ago where ip_address='${ip_address}';
UPDATE test.disk_used SET 5_days_ago=4_days_ago where ip_address='${ip_address}';
UPDATE test.disk_used SET 4_days_ago=3_days_ago where ip_address='${ip_address}';
UPDATE test.disk_used SET 3_days_ago=2_days_ago where ip_address='${ip_address}';
UPDATE test.disk_used SET 2_days_ago=last_day where ip_address='${ip_address}';
UPDATE test.disk_used SET last_day='${disk_used}' where ip_address='${ip_address}'
EOF

3、将脚本通过crontab每天一次定时执行
4、在表disk_used中加入记录,写入服务器ip地址,五台服务器就五条记录

在这里插入图片描述


5、在Grafana接入mysql数据源,测试下是否连的上
在这里插入图片描述
在这里插入图片描述


6、创建新的dashboard
在这里插入图片描述


7、根据所要展示的内容,界面选择table形式
1)查询的query的sql如下

SELECT id,ip_address,7_days_ago,6_days_ago,5_days_ago,4_days_ago,3_days_ago,2_days_ago,last_day,date_sub(update_time, interval +8 hour) AS "update_time" FROM disk_used

2)展示界面的设置为百分比,增加颜色样式,最后效果图如下
大家也可以根据自己喜好设置展示界面
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值