磁盘空间使用率
<h1>报警描述</h1>
<p>业务[XX业务],虚拟机[X.X.X.X]磁盘空间|D:使用率报警,使用率为98.96%</p>
<h1>说明</h1>
<p>如果磁盘空间满,则无法在磁盘上创建新的非0字节文件,也无法向现有文件追加内容。</p>
<h1>监控对象</h1>
<p>Windows操作系统、Linux操作系统、Unix操作系统</p>
<h1>监控方式</h1>
<h2>Windows</h2>
<p>对于Windows操作系统,通过监控代理读取。读取命令为:</p>
<pre><code>sysmonitor.exe -counter disk</code></pre>
<p><strong>注意:该命令执行后,采集的是实时磁盘使用率。</strong>
实现机制:通过调取kernel32.dll的 GetLogicalDriveStringsW、GetDiskFreeSpaceExW函数实现。</p>
<pre><code>GetLogicalDriveStringsW函数
功能:获取主机中所有的逻辑驱动器.
DWORD GetLogicalDriveStringsW(
DWORD nBufferLength,
LPTSTR lpBuffer);
参数:
nBufferLength: 指向的内存空间的大小,以字节为单位。
lpBuffer: 指向存储返回结果字符串的内存空间
返回值:
如果函数成功,返回值为true。
如果函数失败,返回值为false。
调用GetLastError函数可获得更多的错误信息。
说明:
函数调用成功后,会在缓冲区中保存已“\0”分割的盘符,如“C:\”、“D:\”等</code></pre>
<pre><code>GetDiskFreeSpaceExW函数
功能:获取盘符的容量、可用
GetDiskFreeSpaceExW(
_In_opt_ LPCWSTR lpDirectoryName,//磁盘名称
_Out_opt_ PULARGE_INTEGER lpFreeBytesAvailableToCaller,//可用空间
_Out_opt_ PULARGE_INTEGER lpTotalNumberOfBytes,//总空间
_Out_opt_ PULARGE_INTEGER lpTotalNumberOfFreeBytes//剩余空间
);
返回值
如果函数成功,返回值为true。
如果函数失败,返回值为false。
调用GetLastError函数可获得更多的错误信息。</code></pre>
<h2>Linux</h2>
<p>对于Linux操作系统,通过监控代理读取。读取命令为:</p>
<pre><code>./sysmonitor.bin -counter disk</code></pre>
<p><strong>注意:该命令执行后,采集的是实时磁盘使用率。</strong>
实现机制:
获取挂载信息,读取下述文件
/proc/1/mountinfo
/proc/1/mounts </p>
<p>获取磁盘INODE使用率信息,通过系统调用实现:
SYS_FSTATFS64</p>
<h2>UNIX</h2>
<p>对于Unix操作系统:
AIX通过定时任务执行脚本读取。读取命令为:</p>
<pre><code>df -vgI</code></pre>
<h1>规则</h1>
<p>默认规则为:</p>
<pre><code>[0<=使用率<90] 正常
[90<=使用率<95] 提醒
[95<=] 报警</code></pre>
<p>可通过报警策略进行配置。</p>