OneSQL :: 利用OneAgent插件,直接用MySQL客户端查看服务器端空间使用!

除了查看MySQL主机负载数据的需求外,还需要经常查看服务器文件卷的使用情况,比如总共用了多少空间、还有多少可用空间、以及inode的使用情况,通常这也是需要登录到服务器主机上的操作。如果服务器上挂了多块盘,做了很多的文件卷,以运行多个MySQL实例,准确查看数据文件空间的使用应当还是一个技术活。可能每一个MySQL实例会有独立的目录设置:

  1. 根目录是必须关注的地方,简称为“root”目录。
  2. 使用独立的卷来存放安装目录,简称为“home”目录。
  3. 使用独立的卷来存放数据文件,简称为“data”目录。
  4. 使用独立的卷来存放Binlog日志,简称为“binlog”目录。
  5. 使用独立的卷来存放临时文件,简称为“tmpdir”目录。

在多实例布署又是多个文件卷的情况下,如何准确地知道当前MySQL实例的空间的使用情况,可能不是那么容易。但在OneAgent插件的帮助下,则可以很容易实现,只需要用MySQL客户端工具(也可以是PHP程序)连接到MySQL中,执行如下查询,就可以知道数据文件的空间使用情况了。

mysql> show status like 'oneagent_fs_data%';
+------------------------+----------+
| Variable_name          | Value    |
+------------------------+----------+
| oneagent_fs_data_free  | 0.955000 |
| oneagent_fs_data_inode | 91       |
| oneagent_fs_data_pct   | 16       |
| oneagent_fs_data_used  | 4.903000 |
+------------------------+----------+
4 rows in set (0.00 sec)

其中“*_free”指可用的剩余空间有多少(单位:GB),“*_inode”指的是可用的inode的百分比,“*_pct”指未使用空间的百分比,“*_used”指的是被使用的空间有多少(单位:GB),可以一目了然地知道数据文件空间的情况。如果想知道Binlog的空间使用情况(假设使用了独立的文件卷),只需要执行“show status like ‘oneagent_fs_binlog%’”命令(在这个使子中我们没有启用binlog,所以无法取得值)。

mysql> show status like 'oneagent_fs_binlog%';
+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| oneagent_fs_binlog_free  | 0.000000 |
| oneagent_fs_binlog_inode | 0        |
| oneagent_fs_binlog_pct   | 0        |
| oneagent_fs_binlog_used  | 0.000000 |
+--------------------------+----------+
4 rows in set (0.00 sec)

经常去检查一下临时文件卷的空间使用情况,也是非常好的一个习惯。

mysql> show status like 'oneagent_fs_tmpdir%';
+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| oneagent_fs_tmpdir_free  | 0.955000 |
| oneagent_fs_tmpdir_inode | 91       |
| oneagent_fs_tmpdir_pct   | 16       |
| oneagent_fs_tmpdir_used  | 4.903000 |
+--------------------------+----------+
4 rows in set (0.00 sec)

在MySQL上可以用客户端取得这些数据后,监控程序可以完全布署到独立的机器上,而不需要在数据库机器上布署代理程序,也不需要配置SNMP等协议,也许可以让各种云环境下数据库的监控体系变得更加简洁。