Expected\Unxpected state?
We really need your input in this questionnaire
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts MenuQuote from: 2c2i on September 02, 2016, 02:12:12 PM
а нельзя просто снимать 64битный счетчик?
Quote from: kozlov_ao on September 01, 2016, 11:16:13 AM
Все логично.. abort прерывает операцию, а null - обнуляет показатель.
Ради спортивного интереса - попробуй return false;

nodeid = "0x" . right(d2x($node->id), 8, "0");
key = "IF_UNEXP_UP_".nodeid."_".$event->parameters[1];
trace(0, "Checking key ".key);
if (FindAlarmByKey(key) == null) {
trace(0, "key " .key." Not found. disable event rule");
return false;
}
trace(0, "key " .key." Found. process event rule");
return true;
//IF_UNEXP_UP_0x00000981_9374Quote from: 2c2i on August 30, 2016, 07:17:44 PM
А какие еще есть алармы про эту ноду в это время?
2015869 30.08.2016 19:59:06 MX80 0 SYS_IF_UP Normal Interface 'fxp0 (mgmt_port)' changed state to UP (IP Addr: UNSPEC/0, IfIndex: 1) 0
2015733 30.08.2016 19:58:01 MX80 0 SYS_IF_UNKNOWN Warning Interface "fxp0 (mgmt_port)" changed state to UNKNOWN (IP Addr: UNSPEC/0, IfIndex: 1) 0
1977412 26.08.2016 22:13:49 MX80 0 SYS_IF_UP Normal Interface 'ge-1/3/7.0' changed state to UP (IP Addr: UNSPEC/0, IfIndex: 591) 0
1977410 26.08.2016 22:12:44 MX80 0 SYS_IF_UNKNOWN Warning Interface "ge-1/3/7.0" changed state to UNKNOWN (IP Addr: UNSPEC/0, IfIndex: 591) 0Quote from: 2c2i on August 30, 2016, 07:16:45 PM
>Мне нужно SYS_IF_EXPECTED_DOWN создавать Alarm (Normal) только если до этого был SYS_IF_UNEXPECTED_UP, а если был SYS_NODE_DOWN или SYS_IF_UNKNOWN то НЕ создавать.
То есть если пришел SYS_IF_UNEXPECTED_UP - вы создаете аларм, а потом если пришел SYS_IF_EXPECTED_DOWN(то есть нормализация) - вы хотите не удалять аларм, а создать еще один? Если так, то вы в принципе можете применить мои фильтры, немного их поменяв.
Это системные или вы сами создавали ивенты?
Quote from: 2c2i on June 24, 2016, 02:22:50 PM
получилось добиться вышеописанного таким скриптом фильтрации:sub main() {
key="IF_UNEXP_UP_".$event->parameters[1]."_".d2x($event->id);
trace(1, "Checking key ".key);
if (FindAlarmByKey(key) == null) {
trace(1, "key" .key." Not found. disable event rule");
return false;
}
return true;
}
QuoteЭту проблему можно было бы решить галкой типа "suppress event if key not found" - то есть если ключ IF_UNEXP_UP_%i_%1 при обработке SYS_IF_EXPECTED_DOWN не найден, то подавлять ивент. С помощью такой фичи можно было бы подавлять ивенты о нормализации чего либо, если до этого не было ивента о аларме.
key="IF_UNEXP_UP_".$event->parameters[1];
trace(1, "Checking key ".key);
if (FindAlarmByKey(key) == null) {
trace(1, "key" .key." Not found. disable event rule");
return false;
}
trace(1, "key" .key." Found. process event rule");
return true;2006877 29.08.2016 21:09:25 MX80 0 SYS_IF_UP Normal Interface 'ge-1/0/5' changed state to UP (IP Addr: UNSPEC/0, IfIndex: 546) 0
2006875 29.08.2016 21:08:19 MX80 0 SYS_IF_UNKNOWN Warning Interface "ge-1/0/5" changed state to UNKNOWN (IP Addr: UNSPEC/0, IfIndex: 546)
1998274 28.08.2016 23:46:26 Prospect N.1 (112.13) 0 SYS_IF_UP Normal Interface '1/28' changed state to UP (IP Addr: UNSPEC/0, IfIndex: 28) 0
1998266 28.08.2016 23:45:21 Prospect N.1 (112.13) 0 SYS_IF_UNKNOWN Warning Interface "1/28" changed state to UNKNOWN (IP Addr: UNSPEC/0, IfIndex: 28) 0
QuoteSNMPRequestTimeout > Unfortunately this parameter does not affect SNMP agent status detection. It only affects interface status checks.- было 2000, я поставил 3000, разницы особо нет.
QuotePollCountForStatusChange- выставлять лично для каждого интерфейса не удобно.
Quote from: 2c2i on August 22, 2016, 11:33:15 AM
Для правила EPP "Terminate interface unexpectedly up alarms when interface goes down":sub main() {
key="IF_UNEXP_UP_".$event->parameters[1];
trace(1, "Checking key ".key);
if (FindAlarmByKey(key) == null) {
trace(1, "key" .key." Not found. disable event rule");
return false;
}
trace(1, "key" .key." Found. process event rule");
return true;
}
Для Terminate interface down alarms when interface is up:sub main() {
key="IF_DOWN_".$event->parameters[1];
trace(1, "Checking key ".key);
if (FindAlarmByKey(key) == null) {
trace(1, "key ".key." Not found. disable event rule");
return false;
}
trace(1, "key ".key." Found. process event rule");
return true;
}
1905394 19.08.2016 12:27:29 node1 BASE 0 SYS_NODE_NORMAL Normal Node status changed to NORMAL 0
1905379 19.08.2016 12:24:04 node1 BASE 0 SYS_SNMP_OK Normal Connectivity with SNMP agent restored 0
1905380 19.08.2016 12:24:04 node1 BASE 0 SYS_IF_UP Normal Interface 'lo' changed state to UP (IP Addr: UNSPEC/0, IfIndex: 1) 0
1905381 19.08.2016 12:24:04 node1 BASE 0 SYS_IF_UP Normal Interface 'eth0' changed state to UP (IP Addr: UNSPEC/0, IfIndex: 2) 0
1905382 19.08.2016 12:24:04 node1 BASE 0 SYS_IF_DISABLED Minor Interface 'eth1' change state to disabled (IP Addr: UNSPEC/0, IfIndex: 3) 0
1905383 19.08.2016 12:24:04 node1 BASE 0 SYS_IF_UP Normal Interface 'wifi0' changed state to UP (IP Addr: UNSPEC/0, IfIndex: 4) 0
1905384 19.08.2016 12:24:04 node1 BASE 0 SYS_IF_UP Normal Interface 'ath0' changed state to UP (IP Addr: UNSPEC/0, IfIndex: 5) 0
1905385 19.08.2016 12:24:04 node1 BASE 0 SYS_IF_UP Normal Interface 'br0' changed state to UP (IP Addr: UNSPEC/0, IfIndex: 6) 0
1905386 19.08.2016 12:24:04 node1 BASE 0 SYS_NODE_UP Normal Node up 0
1905387 19.08.2016 12:24:04 node1 BASE 0 SYS_NODE_NORMAL Normal Node status changed to NORMAL 0
1905388 19.08.2016 12:24:04 node1 BASE 0 SYS_NODE_MINOR Minor Node status changed to MINOR 0
1905368 19.08.2016 12:23:00 node1 BASE 0 SYS_SNMP_UNREACHABLE Major SNMP agent is not responding 10.10.10.18 1905375
1905369 19.08.2016 12:23:00 node1 BASE 0 SYS_IF_UNKNOWN Warning Interface "lo" changed state to UNKNOWN (IP Addr: UNSPEC/0, IfIndex: 1) 0
1905370 19.08.2016 12:23:00 node1 BASE 0 SYS_IF_UNKNOWN Warning Interface "eth0" changed state to UNKNOWN (IP Addr: UNSPEC/0, IfIndex: 2) 0
1905371 19.08.2016 12:23:00 node1 BASE 0 SYS_IF_UNKNOWN Warning Interface "eth1" changed state to UNKNOWN (IP Addr: UNSPEC/0, IfIndex: 3) 0
1905372 19.08.2016 12:23:00 node1 BASE 0 SYS_IF_UNKNOWN Warning Interface "wifi0" changed state to UNKNOWN (IP Addr: UNSPEC/0, IfIndex: 4) 0
1905373 19.08.2016 12:23:00 node1 BASE 0 SYS_IF_UNKNOWN Warning Interface "ath0" changed state to UNKNOWN (IP Addr: UNSPEC/0, IfIndex: 5) 0
1905374 19.08.2016 12:23:00 node1 BASE 0 SYS_IF_UNKNOWN Warning Interface "br0" changed state to UNKNOWN (IP Addr: UNSPEC/0, IfIndex: 6) 0
1905375 19.08.2016 12:23:00 node1 BASE 0 SYS_NODE_DOWN Critical Node down 0
1905376 19.08.2016 12:23:00 node1 BASE 0 SYS_NODE_UNKNOWN Normal Node status changed to UNKNOWN 0
1905377 19.08.2016 12:23:00 node1 BASE 0 SYS_NODE_CRITICAL Critical Node status changed to CRITICAL 0
Quote from: Harun on August 15, 2016, 09:48:10 PM
Я использую такой transformation script, спасает также от всплесков при перезагрузке устройств и обнулении счетчиков:
value = $1 * 8;
p = rindex ($dci->name,".") + 1;
id = substr($dci->name, p);
i = GetInterfaceObject($node, id);
if (i != null && i->speed>0 && i->speed < value ) return null;
return value;
или для интерфейсов 10Gvalue = int64($1) * 8L;
p = rindex ($dci->name,".") + 1;
id = substr($dci->name, p);
i = GetInterfaceObject($node, id);
if (i != null && i->speed>0 && i->speed < value ) return null;
return value;
Но очень нехватает шаблонов для создания DCI, есть стандартные шаблоны для интерфейсов bytes, bits, packets, error, нужен функционал добавления в шаблоны своих transformation script, иначе при создании dci приходится вручную лезть в data collection conf и добавлять код. Это очень сильно раздражает при необходимости быстро создать счетчик.
Вот подобная тема:
https://www.netxms.org/forum/e-eoe-o-koaot-netxms/dci-maximum-value/
Quote[15.08.2016 11:20:42] Victor Kirhenshtein: return null только для скриптов сбора данных уимеет смысл, не для трансформаций
[15.08.2016 11:20:49] Victor Kirhenshtein: надо использовать abort
[15.08.2016 11:21:28] Victor Kirhenshtein: при реальной трансформации все будет как надо
[15.08.2016 11:21:42] Victor Kirhenshtein: скрипт прервется, событие ошибки скрипта не будет создаваться
[15.08.2016 11:22:01] Victor Kirhenshtein: и сбор данных не пройдет, значения не будет