一、shell脚本讲解
其实很简单,首先定义各个变量,主要有mysql的ip、 username、password以及database、table。之后通过date以指定格式输出得到timestamp格式的时间;利用top和管道命令得到cpu的空闲率,进而得到cpu的使用率。
之后利用mysql远程登录到数据库,将刚刚收集的数据插入到数据库中即可。代码如下:
#!/bin/bash
mysql_ip="192.168.1.200"
mysql_username="root"
mysql_pwd="p@5sw0rd"
mysql_database="web01"
monitor_table="cpu"
time=$(date '+%Y-%m-%d %H:%M:%S')
cpu_idle=$(top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d .)
cpu=$(echo 100 - $cpu_idle|/usr/bin/bc)
echo $cpu
echo $cpu_idle
echo $time
/usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_pwd $mysql_database -e "insert into $monitor_table values ('','$time','$cpu')";
二、mysql中报错无法在该IP登陆解决办法
首先登陆mysql:
mysql -u root -pxxxx
输入:
grant all privileges on your_database.* to root@'192.168.1.200' identified by 'p@5sw0rd'
代码解释:将your_database数据库中的所有表的全部权限授权给root用户,允许root用户在192.168.1.200这个ip以密码‘p@5sw0rd’进行登陆;
三、运行几遍脚本,即可在数据库中看到插入的结果
/bin/bash cpu.sh
mysql> select * from cpu;
+----+---------------------+-----+
| id | time | cpu |
+----+---------------------+-----+
| 1 | 2015-03-16 15:58:32 | 1 |
| 2 | 2015-03-16 15:58:33 | 1 |
| 3 | 2015-03-16 15:58:34 | 1 |
| 4 | 2015-03-16 15:58:35 | 1 |
| 5 | 2015-03-16 15:58:37 | 1 |
| 6 | 2015-03-16 15:58:38 | 1 |
| 7 | 2015-03-16 15:58:39 | 1 |
| 8 | 2015-03-16 15:58:40 | 1 |
| 9 | 2015-03-16 15:58:41 | 1 |
+----+---------------------+-----+
9 rows in set (0.00 sec)
之后可以使用 crontab -e 来加入到定时任务。再之后就可以在web中查询数据库然后展示CPU利用率了。