队列深度报警
<h1>报警描述</h1>
<p>业务[XX业务],虚拟机[XXIP],位于[位置]IBM-Websphere-MQ|队列中心|队列信息|<font color='blue'>队列管理器名</font>.<font color='blue'>队列名</font>队列深度报警,队列深度为<font color='blue'>数字</font></p>
<p><strong>举例:</strong>
业务[MQ123],虚拟机[192.168.0.1],位于[信息科]IBM-Websphere-MQ|队列中心|队列信息|GWO.QM-OUT.S016.BS902.LQ队列深度报警,队列深度为2987</p>
<h1>说明</h1>
<p>IBM Websphere MQ 的队列深度相当于 RabbitMQ 的队列长度。当队列深度非0时,代表该队列产生了淤积。即队列中消息的发布速度高于消息的消费速度。这表明业务数据同步进度已经出现延迟。</p>
<h1>监控对象</h1>
<p>Linux操作系统</p>
<h1>监控方式</h1>
<h2>Linux</h2>
<p>对于Linux操作系统,通过监控代理读取代理信息。包括三个步骤:</p>
<h3>(1)获取消息队列管理器</h3>
<p>命令如下:</p>
<pre><code>dspmq</code></pre>
<p>输出示例:</p>
<pre><code>QMNAME(GWI.QM) STATUS(Running elsewhere)
QMNAME(GWO.QM) STATUS(Running)</code></pre>
<p>其中,括号内的 GWI.QM,GWO.QM 为队列管理器名称。要获取队列管理器中的队列,需要通过 runmqsc 命令 + 队列管理器名称进入 mqsc 运行环境。</p>
<h3>(2)获取队列名</h3>
<p>命令如下:</p>
<pre><code>runmqsc GWO.QM
DISPLAY QUEUE(*)</code></pre>
<p>输出示例:</p>
<pre><code>DISPLAY QUEUE(*)
1 : DISPLAY QUEUE(*)
AMQ8409I: Display Queue details.
QUEUE(AMQ.MQEXPLORER.2086567006) TYPE(QLOCAL)
AMQ8409I: Display Queue details.
QUEUE(AMQ.MQEXPLORER.224595299) TYPE(QLOCAL)
AMQ8409I: Display Queue details.
QUEUE(GWO.QM.DLQ) TYPE(QLOCAL)
AMQ8409I: Display Queue details.
QUEUE(OUT.HBDSS.PART01.LQ) TYPE(QLOCAL)
AMQ8409I: Display Queue details.
QUEUE(OUT.NO.DISTRIBUTION.LQ) TYPE(QLOCAL)
AMQ8409I: Display Queue details.
QUEUE(OUT.PROC.ERROR.LQ) TYPE(QLOCAL)</code></pre>
<p>在上面的输出中,QUEUE(AMQ.MQEXPLORER.2086567006) 括号里面的 AMQ.MQEXPLORER.2086567006 是队列名。要查询队列深度,需要传入队列名。</p>
<h3>(3)获取队列深度</h3>
<p>命令如下(查询队列OUT.S101.BS368.LQ的队列深度)</p>
<pre><code>DISPLAY QSTATUS(OUT.S101.BS368.LQ) CURDEPTH</code></pre>
<p>输出示例:</p>
<pre><code>AMQ8450I: Display queue status details.
QUEUE(OUT.S101.BS368.LQ) TYPE(QUEUE)
CURDEPTH(122)</code></pre>
<p>上面的输出说明,队列OUT.S101.BS368.LQ的队列深度为122.</p>
<h1>规则</h1>
<p>默认规则为:</p>
<pre><code>[0<=队列深度<1000] 正常
[1000<=队列深度] 报警</code></pre>
<p>可通过报警策略进行配置。</p>