<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Сохранение состояние при использовании LogWatch]]></title><description><![CDATA[<p dir="auto">Коллеги,</p>
<p dir="auto">возникла задача при мониторинге с использованием LogWatch генерировать уведомление только в случае если определенная запись появляется в файле (журнале) 4-е раза. Т.е. надо сделать некий счетчик и если он достигает определенного значения генерировать оповещение/событие и сбрасывать счетчик.</p>
<p dir="auto">Подскажите, пожалуйста, как оптимальнее всего решить данную задачу?</p>
]]></description><link>https://forum.netxms.org/topic/3480/сохранение-состояние-при-использовании-logwatch</link><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 21:42:01 GMT</lastBuildDate><atom:link href="https://forum.netxms.org/topic/3480.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Nov 2014 09:33:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Сохранение состояние при использовании LogWatch on Mon, 17 Nov 2014 13:30:53 GMT]]></title><description><![CDATA[<p dir="auto">Добавьте в EPP такое правило:</p>
<p dir="auto">Event: событие, которое генерирует LogWatch для этой строчки<br />
Filtering script:</p>
<pre><code>if (int($node-&gt;logMatchCount) &gt; 3) {
   $node-&gt;logMatchCount = 0;
   return true;
}
$node-&gt;logMatchCount = int($node-&gt;logMatchCount) + 1;
return false;
</code></pre>
<p dir="auto">Action: отсылка оповещения</p>
<p dir="auto">Я бы еще добавил проверку времени (сбрасывать счетчик, если пршло больше X секунд – 600 в примере):</p>
<pre><code>now = time();
if (now - int($node-&gt;logLastMatch) &gt; 600 || int($node-&gt;logMatchCount) &gt; 3) {
   $node-&gt;logLastMatch = now;
   $node-&gt;logMatchCount = 0;
   return true;
}
$node-&gt;logLastMatch = now;
$node-&gt;logMatchCount = int($node-&gt;logMatchCount);
return false;
</code></pre>
<p dir="auto">Как это работает:<br />
Счетчик сохраняется в custom attribute для сервера, на котором котором произошло событие ($node).<br />
$node-&gt;logMatchCount и $node-&gt;logLastMatch - это упрощенный доступ к custom attribute, альтернатива GetCustomAttribute($node, ...) и SetCustomAttribute($node, ...).<br />
Конструкция int($node-&gt;logMatchCount) - для ситуации, когда артибута еще нет, и результат NULL, принудительный каст в int даст на выходе 0, который можно сравнивать с другим числом (вместо конструкции вида "if ($node-&gt;logMatchCount != NULL &amp;&amp; $node-&gt;logMatchCount &gt; 3)").</p>
]]></description><link>https://forum.netxms.org/post/15335</link><guid isPermaLink="true">https://forum.netxms.org/post/15335</guid><dc:creator><![CDATA[alk]]></dc:creator><pubDate>Mon, 17 Nov 2014 13:30:53 GMT</pubDate></item></channel></rss>