Menu

Show posts

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 Menu

Messages - 2c2i

#31
C целью упрощения дебага было бы полезно иметь возможность сериализовать  ивент например в json. В таком виде его можно будет целиком залогировать функцией trace.
#32
Не хватает возможности для $event получить доступ к source_id. Это было бы очень удобно для event filtering script в EPP.

#33
получилось добиться вышеописанного таким скриптом фильтрации:

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;
}
#34
Скажите, нет ли в планах реализации вышеописанного поведения?
Быть может вы подскажете как его эмулировать с помощью  custom attributes, как вы упоминали ранее. Тк эта проблема нам мешает завершить переход на netxms полностью.
#35
Если создать DCI у которого Description='Process {instance}' то в процессе Instance Discovery процедуры создадутся DCI вида 'Process P1' ,'Process P2' и тд. Однако если Description='{instance}' (то есть кроме плейсхолдера больше ничего нету) то создадутся  '{instance}' ,'{instance}'  и тд. То есть если Description содержит только  {instance}, то этот плейхолдер не подменяется в процессе Instance Discovery
#36
>Т.е. в правиле несколько действий - terminate alarm плюс рассылка, и подавлять надо именно остальные действия.

Да, если при terminate alarm оказалось что нет аларма с таким ключем - нужна галочка решит выполненять ли server actions или просто закончить работу правила.
#37
>Отмена срабатывание этого-же правила, или не идти дальше по правилам?
Отмена срабатывания этого правила.

>А то правило terminate alarm так и так ничего не сделает если алармов с заданным ключом нет.
Правило terminate alarm сейчас выполняет Action независимо от наличия/отсутствия ключа аларма (в результате у нас генерируются тысячи бессмысленных писем "[Normal] Interface blabla with expected state DOWN changed state to DOWN" ) . Вот галка про которую я говорю, могла бы отменять выполнение всех экшнов данного правила если ключа аларма не найдено.
#38
Галка в Event Processing policy rule. В меню Action->Alarm. Если выбран режим Terminate alarm или Resolve alarm - указывать не только ключ, но и галочку для отмены срабатывания правила, если алармов с указанным ключем не было на момент срабатывания. Таким образом если аларма не было, можно будет подавить Terminate alarm или Resolve alarm
#39
Quote
Не генерировать UP/EXPECTED DOWN события если интерфейс выходит из состояния UNKNOWN. Единственная возможная проблема которую я вижу - если интерфейс был например UP, пропала связь с SNMP агентом, интерфейс стал UNKNOWN. Потом связь восстановилась, но интерфейс уже DOWN к этому моменту. Тогда не будет события, которое на самом деле информативно.

Если EXPECTED state был UP, то после выхода из UNKNOWN нужно сгенерить  UNEXPECTED DOWN(а это другой тип евента). Таким образом если  не слать EXPECTED DOWN/UP события если интерфейс выходит из состояния UNKNOWN все будет работать как требуется - потому что смена состояния будет приводить в генерации UNEXPECTED  UP/DOWN. Потери полезного события не будет.

QuoteЭту проблему можно было бы решить галкой типа "suppress event if key not found" - то есть если ключ IF_UNEXP_UP_%i_%1 при обработке SYS_IF_EXPECTED_DOWN не найден, то подавлять ивент. С помощью такой фичи можно было бы подавлять ивенты о нормализации чего либо, если до этого не было ивента о аларме.
А почему не возможен этот вариант? Мне кажется это было бы более гибко.
#40
У меня такая же проблема, из-за кучи таких лишних ивентов очень неудобно видеть нужные. Свои изыскания я описал тут:

https://www.netxms.org/forum/oe-oo/koe-eto/

Если кратко: в некоторых ситуациях не генерируется ивент SYS_NODE_DOWN(когда нет ответа на SNMP?) интерфейсы становятся UNKNOWN, а потом когда связь восстанавливается - они переходят в expected state и генерируется Normal ивент.

Вероятно нужно починить генерацию SYS_NODE_DOWN если snmp отвалился и не генерить при восстановлении SYS_IF_EXPECTED_DOWN/UP

Проблема вообще очень раздражает.

Существует и другая похожая проблема:
1) Связь реально пропадает, SYS_NODE_DOWN генерируется
2) для интефейсов ноды генерируется SYS_IF_UNKNOWN
3) Связь восстанавливается, для каждого интерфейса(речь о тех у которых expected state=down) генерируется SYS_IF_EXPECTED_DOWN.

Фактически выходит что в event processing policy нельзя отличить SYS_IF_EXPECTED_DOWN как восстановление SYS_IF_UNEXPECTED_UP от  SYS_IF_EXPECTED_DOWN который пришел просто после восстановления связи с коммутатором. Это приводит к флуду в почте поле восстановления связи с коммутатором.

Эту проблему можно было бы решить галкой типа "suppress event if key not found" - то есть если ключ IF_UNEXP_UP_%i_%1 при обработке SYS_IF_EXPECTED_DOWN не найден, то подавлять ивент. С помощью такой фичи можно было бы подавлять ивенты о нормализации чего либо, если до этого не было ивента о аларме.




#41
Общие вопросы / Re: netxms 2.0-RC2-2 segfault
February 03, 2016, 05:03:40 PM
Упало по SIGABORT:


(gdb) bt full
#0  0x00007f131fad5107 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
        resultvar = 0
        pid = 18657
        selftid = 14171
#1  0x00007f131fad64e8 in __GI_abort () at abort.c:89
        save_stage = 2
        act = {__sigaction_handler = {sa_handler = 0x7f129db39cb0, sa_sigaction = 0x7f129db39cb0}, sa_mask = {__val = {139717931932848, 139717931932848, 139717931932848, 139717931932868,
              139717931933032, 139717931932848, 139717931933032, 0, 0, 0, 0, 0, 0, 139720112802416, 139720112802192, 139720112801952}}, sa_flags = 531695712,
          sa_restorer = 0x7f131fb10880 <do_always_noconv>}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007f131fb13204 in __libc_message (do_abort=do_abort@entry=1, fmt=fmt@entry=0x7f131fc05fe0 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:175
        ap = {{gp_offset = 40, fp_offset = 0, overflow_arg_area = 0x7f128f56fdf0, reg_save_area = 0x7f128f56fd80}}
        fd = 2
        on_2 = <optimized out>
        list = <optimized out>
        nlist = <optimized out>
        cp = <optimized out>
        written = <optimized out>
#3  0x00007f131fb189de in malloc_printerr (action=1, str=0x7f131fc063a8 "malloc(): smallbin double linked list corrupted", ptr=<optimized out>) at malloc.c:4996
        buf = "00007f129dcdbaa0"
        cp = <optimized out>
#4  0x00007f131fb1ad7b in _int_malloc (av=0x7f129c000020, bytes=56) at malloc.c:3359
        p = 0x0
        fb = <optimized out>
        pp = <optimized out>
        nb = 64
        idx = <optimized out>
        bin = <optimized out>
        victim = <optimized out>
        size = <optimized out>
        victim_index = <optimized out>
        remainder = <optimized out>
        remainder_size = <optimized out>
        block = <optimized out>
        bit = <optimized out>
        map = <optimized out>
        fwd = <optimized out>
        bck = <optimized out>
        errstr = <optimized out>
        __func__ = "_int_malloc"
#5  0x00007f131fb1c070 in __GI___libc_malloc (bytes=56) at malloc.c:2891
        ar_ptr = 0x7f129c000020
        victim = 0x6
        __func__ = "__libc_malloc"
#6  0x00007f13203bf2e8 in operator new (sz=sz@entry=56) at ../../../../src/libstdc++-v3/libsupc++/new_op.cc:49
        p = <optimized out>
#7  0x00007f1322d0b4dc in SNMP_PDU::SNMP_PDU (this=0x7f129dd60ad0) at pdu.cpp:69
No locals.
#8  0x00007f1322d0f75e in SNMP_UDPTransport::readMessage (this=0x7f129c4cb380, ppData=0x7f128f56fff8, dwTimeout=2000, pSender=<optimized out>, piAddrSize=0x0, contextFinder=0x0)
    at transport.cpp:493
        bytes = <optimized out>
        pduLength = 57
#9  0x00007f1322d0ed3f in SNMP_Transport::doRequest (this=this@entry=0x7f129c4cb380, request=request@entry=0x7f129c492160, response=response@entry=0x7f128f56fff8, timeout=2000,
    numRetries=2, numRetries@entry=3) at transport.cpp:125
---Type <return> to continue, or q <return> to quit---
        timeSyncRetries = 3
        rc = 0
        bytes = <optimized out>
#10 0x00007f1322d0f958 in SnmpGetEx (pTransport=0x7f129c4cb380, szOidStr=<optimized out>, oidBinary=0x0, dwOidLen=<optimized out>, pValue=0x7f128f57029c, bufferSize=4, dwFlags=0,
    dataLen=0x0) at util.cpp:140
        pRqPDU = 0x7f129c492160
        dwResult = 0
        pRespPDU = 0x0
        pdwVarName = {1, 3, 6, 1, 2, 1, 2, 2, 1, 7, 1024, 0, 2404843400, 32530, 0, 0, 535044768, 32531, 2625787216, 32530, 2617245768, 32530, 531752261, 32531, 4222451712,
          0 <repeats 17 times>, 2617245728, 32530, 96, 0, 570826864, 32531, 2404843936, 32530, 2404845936, 32530, 2622272384, 32530, 531742832, 32531, 0, 0, 586364584, 32531, 96, 0,
          531870622, 32531, 2404843312, 32530, 1024, 0, 2625787216, 32530, 2625787216, 32530, 25, 0, 256, 0, 2404843936, 32530, 2404845936, 32530, 2622272384, 32530, 570780968, 32531, 0,
          0, 1024, 0, 2404844704, 32530, 2404844188, 32530, 2404845940, 32530, 570781135, 32531, 32, 48, 2404844160, 32530, 2404843968, 32530, 3995704064, 2748014655, 0, 0, 2404844064,
          32530, 2404844400, 32530, 1024, 0, 1024, 0, 0, 0, 2404844416, 32530, 2404844416, 32530, 2404846268, 32530, 2637931120, 32530, 2404845024, 32530, 1, 0}
        nameLength = 11
#11 0x00007f1322f266fc in NetworkDeviceDriver::getInterfaceState (this=0x48e1, snmp=0x7f129c4cb380, attributes=0x6, driverData=0xffffffffffffffff, ifIndex=1024,
    ifTableSuffixLen=1679847017, ifTableSuffix=0x206, adminState=0x7f128f570970, operState=0x7f128f570974) at ndd.cpp:559
        state = 0
        oid = L".1.3.6.1.2.1.2.2.1.7.1024\000\x9c000020缒\020\000\x22062070缓\x8f5705e0缒Ā\000\x9c8cd4e0缒\x1fb1c070缓\000\000\x22d113e0缓\020\000\x1fb3b39e缓\x9d04b850缒\027\000\x8f570abc缒\x9d3ba270缒\002\000é\000\x8f5705e0缒\000\000\000\000\x1fb1e225缓\x9e136927缒\027\000\n\000\x8f570a60缒\n\000\x22056dcf缓 0\000\000\000\000\x1fb1e225缓ߐ\004\000\000\000\000\x1fb1e225缓\004\000\x9ce55030缒\000缒?\000\000\001\000\000ߐ\000\x8f570748缒\000缒\x9d3bca50缒\000缒\x9d3bca50缒\x9c95c8d0缒\000\000\000\001\x8f570770缒\001\000\x9c23fe50缒\000\001\000\000\x9c90f550缒\x9d4cb0d0缒\x9c23fe50缒\x9cb41770缒\x9c90f550缒\x9d4cb0d0缒\000\000\x9cb41770缒\x9c90f550缒\x8f570770缒\001\000\x22d0fa29缓\000\000\x8f570a60缒Ѐ\000\000\000\000\000\x9cb41770缒\000\000\x2203bf85缓\x2354b660缓\x2204a918缓\001\003\006\001\002\001\001\002\000YEX\x232ae3c0缓\x8f5708a0缒\000\000\x9c000020缒"...
        suffix = L"\x1fb10a70缓\x1fb10990缓\x1fb108a0缓\x1fb10860缓\x1fb10880缓\x1fb10b70缓\x1fb10890缓\001\000\x1fe428a0缓\000\000\000\000\001\000\001\000\x8f570288缒\000\000\000\000\001\000\x1fe42820缓\000\000\000\000\001\000\001\000\x8f570288缒\000\000\x1fe422a0缓\x9c000020缒\x1fe41ee0缓\x8f570428缒\xfbad8000缒", '\000' <repeats 26 times>, "\x9c90f550\f\x22d104f7缓\x9cff0000缒\000\000\xffffffff\xffffffff\x8f570298缒\x8f570230缒\000\000\x9cb41770缒\x1fb1c070缓\001缒\x9c537b20缒\x9c90f550缒\x1fe41ee0缓\000\000\x9c90f550缒\x9e136939缒\x22d0d2eb缓3\000\034\000\x8f5704e0缒\x8f5704c4缒"
#12 0x00007f13231f46d0 in Node::getInterfaceStatusFromSNMP (this=<optimized out>, pTransport=<optimized out>, index=<optimized out>, ifTableSuffixLen=<optimized out>, ifTableSuffix=0x0,
    adminState=<optimized out>, operState=0x7f128f570974) at node.cpp:4818
No locals.
#13 0x00007f13231d4750 in Interface::statusPoll (this=0x64acd80, session=0x375b, rqId=0, eventQueue=0xffffffffffffffff, cluster=0x0, snmpTransport=0x7f129c4cb380, nodeIcmpProxy=0)
    at interface.cpp:498
        adminState = IF_ADMIN_STATE_UNKNOWN
        operState = IF_OPER_STATE_UNKNOWN
        requiredPolls = -1672694912
        pNode = 0x330b680
        newStatus = 0
#14 0x00007f1323200562 in Node::statusPoll (this=0x330b680, pSession=0x375b, dwRqId=6, poller=0xffffffffffffffff) at node.cpp:1414
No locals.
#15 0x00007f1323201279 in Node::statusPoll (this=0x330b680, poller=0x7f12a00a80f0) at node.cpp:1190
        unreachableDeleteDays = <optimized out>
#16 0x00007f13231e09b1 in __ThreadPoolExecute_Wrapper<Node, PollerInfo*> (arg=0x7f12a0069540) at ../../../include/nms_threads.h:956
        wd = 0x7f12a0069540
#17 0x00007f1322054206 in WorkerThread (arg=0x7f12a00aac30) at tp.cpp:154
        rq = 0x7f12a0005140
        p = 0x7f12a0004c40
        q = 0x7f12a0004cb0



#18 0x00007f1320a6e0a4 in start_thread (arg=0x7f128f571700) at pthread_create.c:309
        __res = <optimized out>
        pd = 0x7f128f571700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139717690988288, -3470916291618989052, 0, 139720176160864, 139719415303616, 139717690988288, 3598880416769973252, 3599103188696112132},
              mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
---Type <return> to continue, or q <return> to quit---
        sp = <optimized out>

        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#19 0x00007f131fb8604d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.




Версия 2.0.1, корка есть
#42
Общие вопросы / Netxms 2.0.2 deb packages
February 03, 2016, 12:34:39 AM
А где взять пакеты для debian с версией 2.0.2? В репозитории что-то не могу найти.
#43
Общие вопросы / Re: netxms 2.0-RC2-2 segfault
February 03, 2016, 12:09:02 AM
Версия 2.0.1. Снова упало при подключении консоли. корку высылать?

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/bin/netxmsd -d'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  __GI___pthread_mutex_lock (mutex=0x0) at ../nptl/pthread_mutex_lock.c:66
66      ../nptl/pthread_mutex_lock.c: No such file or directory.
(gdb) bt
#0  __GI___pthread_mutex_lock (mutex=0x0) at ../nptl/pthread_mutex_lock.c:66
#1  0x00007ff37547ecb9 in ClientSession::sendAllObjects(NXCPMessage*) () from /usr/lib/x86_64-linux-gnu/libnxcore.so.2
#2  0x00007ff37549f4dd in ClientSession::processingThread() () from /usr/lib/x86_64-linux-gnu/libnxcore.so.2
#3  0x00007ff37549f5f9 in ClientSession::processingThreadStarter(void*) () from /usr/lib/x86_64-linux-gnu/libnxcore.so.2
#4  0x00007ff372ccb0a4 in start_thread (arg=0x7ff2e72ae700) at pthread_create.c:309
#5  0x00007ff371de304d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
#44
Общие вопросы / Re: Templete OID MIB
January 27, 2016, 02:30:32 PM
linksys sps224-g4

.1.3.6.1.4.1.3955.89.2.10.0 - boot version
.1.3.6.1.4.1.3955.89.2.4.0 - FW version
.1.3.6.1.4.1.3955.89.1.9.0 - CPU load 5 min
.1.3.6.1.4.1.3955.89.1.8.0 - CPU load 1min
#45
Удалил все одинаковые сети. Перезапустил демон - снова появились дубли.