报警知识库


CPU使用率

<h1>报警描述</h1> <p>业务[XX业务],虚拟机[X.X.X.X],位于[位置]CPU使用率报警,使用率为95%。</p> <h1>说明</h1> <p>如果CPU使用率达到100%,则所有与CPU有关的计算操作都会产生阻塞现象,系统卡顿。 当CPU使用率较高时,应当进一步分析操作系统的进程信息,定位哪些进程占用了CPU资源。对于非关键进程,可采取终止相关进程的操作以释放资源;对于关键进程,一方面要对进程的运行效能进行优化(修改配置参数、优化程序代码),另一方面也可以向该服务器追加CPU计算资源。</p> <h1>监控对象</h1> <p>Windows操作系统、Linux操作系统、Unix操作系统</p> <h1>监控方式</h1> <h2>Windows</h2> <p>对于Windows操作系统,通过监控代理读取。读取命令为:</p> <pre><code>sysmonitor.exe -counter cpu</code></pre> <p><strong>注意:该命令执行后,采集的是最近5秒钟CPU平均使用率。</strong> 实现机制:通过调取kernel32.dll的GetSystemTimes函数实现。</p> <pre><code>GetSystemTimes函数 BOOL WINAPI GetSystemTimes( __out_opt LPFILETIME lpIdleTime, // 空闲时间 __out_opt LPFILETIME lpKernelTime, // 内核进程占用时间 __out_opt LPFILETIME lpUserTime // 用户进程占用时间 ); GetSystemTimes获得系统(自开机以来)处于Kernel状态下面的CPU时间,以及系统处于User状态下的时间,以及Idle的时间. 返回值 如果函数成功,返回值为true。 如果函数失败,返回值为false。 调用GetLastError函数可获得更多的错误信息。</code></pre> <h2>Linux</h2> <p>对于Linux操作系统,通过监控代理读取。读取命令为:</p> <pre><code>./sysmonitor.bin -counter cpu</code></pre> <p><strong>注意:该命令执行后,采集的是最近5秒钟CPU平均使用率。</strong> 实现机制:通过读取/proc/stat文件内容实现。</p> <p>proc/stat输出示例如下:</p> <pre><code>cpu 284406 5124 265469 127366482 1535 137210 17435 0 0 0 cpu0 95163 762 58533 31818184 273 28239 2822 0 0 0 cpu1 56060 1575 63527 31872003 354 33676 2686 0 0 0 cpu2 80310 1909 78641 31816154 328 41024 8639 0 0 0 cpu3 52872 877 64766 31860140 579 34270 3286 0 0 0 intr 549507255 0 9 0 0 414 0 0 0 0 0 0 31 15 0 0 0 0 0 0 0 0 0 0 0 0 16 0 241447 230309 284184 238755 0 104037 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 1059578036 btime 1637232875 processes 278082 procs_running 1 procs_blocked 0 softirq 71843425 0 17031560 3 1055041 103904 0 2167 27299326 3 26351421</code></pre> <h2>UNIX</h2> <p>对于Unix操作系统: AIX通过定时任务执行脚本读取。读取命令为:</p> <pre><code>sar -u 1 5</code></pre> <p>sar命令是sysstat工具包中的一个命令行工具,用于打印CPU、内存等资源信息。该工具支持Linux、Unix操作系统。由于大多数已知AIX上均安装了sysstat包,因此这里采用sar命令读取CPU使用率。</p> <p>&quot;sar -u 1 5&quot;这条命令的含义就是,每隔1秒钟打印一次CPU资源信息,打印5次。其输出示例如下:</p> <pre><code>Linux 4.18.0-240.22.1.el8_3.x86_64 (zgyw) 11/22/2021 _x86_64_ (4 CPU) 02:13:47 PM CPU %user %nice %system %iowait %steal %idle 02:13:48 PM all 0.25 0.00 0.50 0.00 0.00 99.25 02:13:49 PM all 0.00 0.00 0.00 0.00 0.00 100.00 02:13:50 PM all 0.00 0.00 0.50 0.00 0.00 99.50 02:13:51 PM all 0.00 0.00 0.00 0.00 0.00 100.00 02:13:52 PM all 0.00 0.00 0.75 0.00 0.00 99.25 Average: all 0.05 0.00 0.35 0.00 0.00 99.60</code></pre> <h1>规则</h1> <p>默认规则为:</p> <pre><code>[0&lt;=使用率&lt;90] 正常 [90&lt;=使用率&lt;95] 提醒 [95&lt;=] 报警</code></pre> <p>可通过报警策略进行配置。</p>

页面列表

ITEM_HTML