<?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[Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0]]]></title><description><![CDATA[<p dir="auto">Нужно вывести график загрузки порта Ethernet. Cчетчик переданных октетов (тип Counter32) на порту раз в 10 минут переходит через ноль (переполняется).</p>
<p dir="auto">В настройках переменной стоит:</p>
<ul>
<li>"Average delta per second"</li>
<li>в трансформации выражение перевода в Mbps "return (($1 *  8 ) / 1024) / 1024;"</li>
</ul>
<p dir="auto">Как организовать отображение корректное ? периодически, когда новое текущее значение меньше чем предыдущее,  Delta в $1 возвращает 0, график ниже. Проблема не в переполнении счетчика, а как корректно скриптом учитывать переход через 0, в примерах нигде не нашел. Хотя задача скорее всего очень типовая и массовая.<br />
<a href="https://ibb.co/2Z60s5h" rel="nofollow ugc"><img src="https://i.ibb.co/tLhwx3K/1.png" alt="" class="img-markdown  img-fluid" /></a></p>
]]></description><link>https://forum.netxms.org/topic/7772/отображение-нагрузки-порта-eth-по-счетчику-октетов-ошибка-перехода-через-0</link><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 22:38:45 GMT</lastBuildDate><atom:link href="https://forum.netxms.org/topic/7772.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Sep 2023 05:48:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Thu, 28 Sep 2023 13:49:53 GMT]]></title><description><![CDATA[<p dir="auto">Я попробовал сделать скрипт, который автоматом берет скорость интерфейса и считает лимит отсечки в 120% от скорости. Строчки trace(0, ...  пишут отладочные сообщения в лог сервера, для нормальной работы их нужно убрать.</p>
<p dir="auto">Скрипт годится только для тех DCI, которые создавались механизмом instance discovery - у них тогда заполнен атрибут instance. Скрипт ищет интерфейс под нодой, имя которого совпадает с instance, это будет работать для агентских метрик, для snmp instance будет индексом интерфейса и в 6-й строчке вместо i-&gt;name нужно использовать i-&gt;ifIndex</p>
<p dir="auto">В целом получилось сложно, лучше наверное дождаться когда разработчики добавят эту обработку в код.</p>
<pre><code>trace(0, $dci-&gt;name . ", $1: " . $1);
lastValue = GetDCIValue($node, $dci-&gt;id);
trace(0, "lastValue: " . lastValue);
speed = 0;
for (i: $node-&gt;interfaces) {
  if (i-&gt;name == $dci-&gt;instance) speed = i-&gt;speed;
}
trace(0, "speed: " . speed);
if (lastValue == null or speed == 0) return $1 * 8; // could not do much
upperLimit = int64(speed / 8L * 1.2); // in bytes
trace(0, "upperLimit: " . upperLimit);
if ($1 &gt; upperLimit) return lastValue;
trace(0, "returning $1*8: " . $1 * 8);
return $1 * 8;
</code></pre>
<p dir="auto">Если интерфейс продолжает существовать и счетчики трафика на нем не меняются, то скрипт должен корректно отдавать значение 0.</p>
]]></description><link>https://forum.netxms.org/post/32848</link><guid isPermaLink="true">https://forum.netxms.org/post/32848</guid><dc:creator><![CDATA[Filipp Sudanov]]></dc:creator><pubDate>Thu, 28 Sep 2023 13:49:53 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Thu, 28 Sep 2023 12:05:18 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/filipp-sudanov" aria-label="Profile: filipp-sudanov">@<bdi>filipp-sudanov</bdi></a> said in <a href="/post/32841">Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0]</a>:</p>
<blockquote>
<p dir="auto">Так что лучшее, что сейчас может делать такой скрипт - возвращать еще раз последнее собранное значение - если нужно, сделаю пример.</p>
</blockquote>
<p dir="auto">Сделайте пожалуйста. Еще вопрос - с таким скриптом, когда интерфейс будет отключен и на нем будет реально 0 b/s, это будет корректно отражаться ?</p>
]]></description><link>https://forum.netxms.org/post/32847</link><guid isPermaLink="true">https://forum.netxms.org/post/32847</guid><dc:creator><![CDATA[eugene1]]></dc:creator><pubDate>Thu, 28 Sep 2023 12:05:18 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Tue, 26 Sep 2023 15:14:40 GMT]]></title><description><![CDATA[<p dir="auto">Проблема такого скрипта - не получится пропустить сбор значения - теоретически это можно сделать командой abort, но при этом не сохранится raw значение и вычисление дельты пойдет от последнего собранного raw значения.<br />
Так что лучшее, что сейчас может делать такой скрипт - возвращать еще раз последнее собранное значение - если нужно, сделаю пример.</p>
<p dir="auto">Отображение с Mbps работает в last values. В history его не сделали еще, в 5.0 наверное будет.</p>
]]></description><link>https://forum.netxms.org/post/32841</link><guid isPermaLink="true">https://forum.netxms.org/post/32841</guid><dc:creator><![CDATA[Filipp Sudanov]]></dc:creator><pubDate>Tue, 26 Sep 2023 15:14:40 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Mon, 25 Sep 2023 13:27:46 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/filipp-sudanov" aria-label="Profile: filipp-sudanov">@<bdi>filipp-sudanov</bdi></a> said in <a href="/post/32823">Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0]</a>:</p>
<blockquote>
<p dir="auto">Но вообще вручную делить для получения мегабит уже не нужно - можно в свойствах DCI поставить Units "b/s" и Use multipliers "Default" или "Yes". Значение будет хранится в битах в сек и переводится при отображении. Если нужно чтоб всегда отображалось в Mbps, на закладке other options поставить Multiplier degree "Fixed to M".</p>
</blockquote>
<p dir="auto">и почему этот удобный функционал не срабатывает ?</p>
]]></description><link>https://forum.netxms.org/post/32837</link><guid isPermaLink="true">https://forum.netxms.org/post/32837</guid><dc:creator><![CDATA[eugene1]]></dc:creator><pubDate>Mon, 25 Sep 2023 13:27:46 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Mon, 25 Sep 2023 13:34:12 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/filipp-sudanov" aria-label="Profile: filipp-sudanov">@<bdi>filipp-sudanov</bdi></a> said in <a href="/post/32835">Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0]</a>:</p>
<blockquote>
<p dir="auto">На сейчас можно вместо counter32 выбрать unsigned integer, но тогда нужно скриптом защищаться от ситуации б) - проверять что значение не слишком большое.</p>
</blockquote>
<p dir="auto">есть ли пример такого скрипта ?  полагаю верхний лимит отсечки в скрипте  очевидно будет:  интерфейс GE0 это  1GB = 1024Mb = 1 048 576 Kb = 1 073 741 824 b/s ?</p>
]]></description><link>https://forum.netxms.org/post/32836</link><guid isPermaLink="true">https://forum.netxms.org/post/32836</guid><dc:creator><![CDATA[eugene1]]></dc:creator><pubDate>Mon, 25 Sep 2023 13:34:12 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Mon, 25 Sep 2023 13:01:21 GMT]]></title><description><![CDATA[<p dir="auto">Уточнил у разработчиков - да, это сейчас оно действительно так работает. Дело в том, что переполнение счетчика может означать две вещи:<br />
а) действительно на интерфейсе прошло столько байт, что считчик дошел до максимума и перешел через 0<br />
б) счетчики на устройстве сбросились на 0 (рестарт устройства и т.д.)</p>
<p dir="auto">В более старых версиях обработка шла исходя из первого случая - всегда выполнялось вычисление с unsigned числами. Проблема в том, что для ситуаций б) это давало высокий пик на графике, т.к. получалось очень большое число. Поэтому алгоритм поменяли, что если собираемое число уменьшилось, то преобразованное значение становится 0.</p>
<p dir="auto">Это переделаем, вот тикет <a href="https://track.radensolutions.com/issue/NX-2461" rel="nofollow ugc">https://track.radensolutions.com/issue/NX-2461</a></p>
<p dir="auto">На сейчас можно вместо counter32 выбрать unsigned integer, но тогда нужно скриптом защищаться от ситуации б) - проверять что значение не слишком большое.</p>
]]></description><link>https://forum.netxms.org/post/32835</link><guid isPermaLink="true">https://forum.netxms.org/post/32835</guid><dc:creator><![CDATA[Filipp Sudanov]]></dc:creator><pubDate>Mon, 25 Sep 2023 13:01:21 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Mon, 25 Sep 2023 08:41:25 GMT]]></title><description><![CDATA[<p dir="auto">установил тип переменной в Counter-64, в скрипте трансформации оставил  "return (($1 *  8 ) / 1024) / 1024;" , результат тот же, 0 есть.</p>
<p dir="auto"><a href="https://ibb.co/W04QYMW" rel="nofollow ugc"><img src="https://i.ibb.co/r3Rg1zG/f2.png" alt="" class="img-markdown  img-fluid" /></a></p>
]]></description><link>https://forum.netxms.org/post/32830</link><guid isPermaLink="true">https://forum.netxms.org/post/32830</guid><dc:creator><![CDATA[eugene1]]></dc:creator><pubDate>Mon, 25 Sep 2023 08:41:25 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Mon, 25 Sep 2023 07:14:21 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/filipp-sudanov" aria-label="Profile: filipp-sudanov">@<bdi>filipp-sudanov</bdi></a> said in <a href="/post/32823">Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0]</a>:</p>
<blockquote>
<p dir="auto">Возможно проблема в трансформационном скрипте - возможно за минуту набегает столько, что при умножении на 8 получается число большее, чем 32-битный integer. Для проверки можно сделать такой трансформационный скрипт (8L заставит выполнять 64-битную арифметику):</p>
<p dir="auto">return (($1 *  8UL ) / 1024) / 1024;"</p>
</blockquote>
<p dir="auto"> <br />
не работает, все равно 0 отображает<br />
<a href="https://ibb.co/0tkt8LY" rel="nofollow ugc"><img src="https://i.ibb.co/3zwzGbS/f1.png" alt="" class="img-markdown  img-fluid" /></a></p>
]]></description><link>https://forum.netxms.org/post/32829</link><guid isPermaLink="true">https://forum.netxms.org/post/32829</guid><dc:creator><![CDATA[eugene1]]></dc:creator><pubDate>Mon, 25 Sep 2023 07:14:21 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Mon, 25 Sep 2023 06:29:14 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/filipp-sudanov" aria-label="Profile: filipp-sudanov">@<bdi>filipp-sudanov</bdi></a> said in <a href="/post/32823">Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0]</a>:</p>
<blockquote>
<p dir="auto">Но вообще вручную делить для получения мегабит уже не нужно - можно в свойствах DCI поставить Units "b/s" и Use multipliers "Default" или "Yes". Значение будет хранится в битах в сек и переводится при отображении. Если нужно чтоб всегда отображалось в Mbps, на закладке other options поставить Multiplier degree "Fixed to M".</p>
</blockquote>
<p dir="auto"> Скрипт из трансформации убран. "Fixed to M" - не срабатывает ? вот результат</p>
<p dir="auto"><a href="https://ibb.co/kSwRcWB" rel="nofollow ugc"><img src="https://i.ibb.co/5RSNcf4/n1.png" alt="" class="img-markdown  img-fluid" /></a></p>
<p dir="auto"><a href="https://ibb.co/pWTbpZB" rel="nofollow ugc"><img src="https://i.ibb.co/KNgbH7p/n3.png" alt="" class="img-markdown  img-fluid" /></a></p>
<p dir="auto">при этом через 0 все равно проходит результат<br />
<a href="https://ibb.co/d0cgczn" rel="nofollow ugc"><img src="https://i.ibb.co/vxBYBK2/n5.png" alt="" class="img-markdown  img-fluid" /></a></p>
<p dir="auto"><a href="https://ibb.co/ZSfJmFx" rel="nofollow ugc"><img src="https://i.ibb.co/YXNWZ1h/n4.png" alt="" class="img-markdown  img-fluid" /></a></p>
]]></description><link>https://forum.netxms.org/post/32828</link><guid isPermaLink="true">https://forum.netxms.org/post/32828</guid><dc:creator><![CDATA[eugene1]]></dc:creator><pubDate>Mon, 25 Sep 2023 06:29:14 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Mon, 25 Sep 2023 06:12:39 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/filipp-sudanov" aria-label="Profile: filipp-sudanov">@<bdi>filipp-sudanov</bdi></a> said in <a href="/post/32823">Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0]</a>:</p>
<blockquote>
<p dir="auto">Data type "Counter 32-bit" должен обрабатывать переход на 0 автоматически. Можно посмотреть в history по этому DCI - там будет колонка raw value. Покажите скриншот history в месте где raw value проходит через 0.</p>
</blockquote>
<p dir="auto"><a href="https://ibb.co/8zddfGL" rel="nofollow ugc"><img src="https://i.ibb.co/q0WWch3/22.png" alt="" class="img-markdown  img-fluid" /></a></p>
]]></description><link>https://forum.netxms.org/post/32827</link><guid isPermaLink="true">https://forum.netxms.org/post/32827</guid><dc:creator><![CDATA[eugene1]]></dc:creator><pubDate>Mon, 25 Sep 2023 06:12:39 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Fri, 22 Sep 2023 17:27:28 GMT]]></title><description><![CDATA[<p dir="auto">Data type "Counter 32-bit" должен обрабатывать переход на 0 автоматически. Можно посмотреть в history по этому DCI - там будет колонка raw value. Покажите скриншот history в месте где raw value проходит через 0.</p>
<p dir="auto">Возможно проблема в трансформационном скрипте - возможно за минуту набегает столько, что при умножении на 8 получается число большее, чем 32-битный integer. Для проверки можно сделать такой трансформационный скрипт (8L заставит выполнять 64-битную арифметику):</p>
<p dir="auto">return (($1 *  8UL ) / 1024) / 1024;"</p>
<p dir="auto">Но вообще вручную делить для получения мегабит уже не нужно - можно в свойствах DCI поставить Units "b/s" и Use multipliers "Default" или "Yes". Значение будет хранится в битах в сек и переводится при отображении. Если нужно чтоб всегда отображалось в Mbps, на закладке other options поставить Multiplier degree "Fixed to M".</p>
]]></description><link>https://forum.netxms.org/post/32823</link><guid isPermaLink="true">https://forum.netxms.org/post/32823</guid><dc:creator><![CDATA[Filipp Sudanov]]></dc:creator><pubDate>Fri, 22 Sep 2023 17:27:28 GMT</pubDate></item><item><title><![CDATA[Reply to Отображение нагрузки порта Eth по счетчику октетов [ошибка перехода через 0] on Thu, 21 Sep 2023 08:10:12 GMT]]></title><description><![CDATA[<p dir="auto">версия 4.3.7</p>
]]></description><link>https://forum.netxms.org/post/32815</link><guid isPermaLink="true">https://forum.netxms.org/post/32815</guid><dc:creator><![CDATA[eugene1]]></dc:creator><pubDate>Thu, 21 Sep 2023 08:10:12 GMT</pubDate></item></channel></rss>