一个简单的例子来展示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
#!/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} <.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
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)展示界面的设置为百分比,增加颜色样式,最后效果图如下
大家也可以根据自己喜好设置展示界面