Expected\Unxpected state?
				
			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: и сбор данных не пройдет, значения не будет