磁盘空间使用率

报警描述

业务[XX业务],虚拟机[X.X.X.X]磁盘空间|D:使用率报警,使用率为98.96%

说明

如果磁盘空间满,则无法在磁盘上创建新的非0字节文件,也无法向现有文件追加内容。

监控对象

Windows操作系统、Linux操作系统、Unix操作系统

监控方式

Windows

对于Windows操作系统,通过监控代理读取。读取命令为:

sysmonitor.exe -counter disk

注意:该命令执行后,采集的是实时磁盘使用率。
实现机制:通过调取kernel32.dll的 GetLogicalDriveStringsW、GetDiskFreeSpaceExW函数实现。

GetLogicalDriveStringsW函数
功能:获取主机中所有的逻辑驱动器.
DWORD GetLogicalDriveStringsW(
DWORD nBufferLength,
LPTSTR lpBuffer);
参数:
nBufferLength: 指向的内存空间的大小,以字节为单位。
lpBuffer: 指向存储返回结果字符串的内存空间
返回值:
如果函数成功,返回值为true。
如果函数失败,返回值为false。
调用GetLastError函数可获得更多的错误信息。
说明:
函数调用成功后,会在缓冲区中保存已“\0”分割的盘符,如“C:\”、“D:\”等
GetDiskFreeSpaceExW函数
功能:获取盘符的容量、可用
GetDiskFreeSpaceExW(
    _In_opt_ LPCWSTR lpDirectoryName,//磁盘名称
    _Out_opt_ PULARGE_INTEGER lpFreeBytesAvailableToCaller,//可用空间
    _Out_opt_ PULARGE_INTEGER lpTotalNumberOfBytes,//总空间
    _Out_opt_ PULARGE_INTEGER lpTotalNumberOfFreeBytes//剩余空间
);
返回值
如果函数成功,返回值为true。
如果函数失败,返回值为false。
调用GetLastError函数可获得更多的错误信息。

Linux

对于Linux操作系统,通过监控代理读取。读取命令为:

./sysmonitor.bin -counter disk

注意:该命令执行后,采集的是实时磁盘使用率。
实现机制:
获取挂载信息,读取下述文件
/proc/1/mountinfo
/proc/1/mounts

获取磁盘INODE使用率信息,通过系统调用实现:
SYS_FSTATFS64

UNIX

对于Unix操作系统:
AIX通过定时任务执行脚本读取。读取命令为:

df -vgI

规则

默认规则为:

[0<=使用率<90] 正常
[90<=使用率<95] 提醒
[95<=] 报警

可通过报警策略进行配置。