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 - SKYnv

#316
Quote from: Akira on March 29, 2012, 08:36:15 AM
Quote from: SKYnv on March 29, 2012, 07:32:50 AM
решение по данной проблеме было вчера найдено предложено в теме https://www.netxms.org/forum/oe-oo/eee-to-transformation-script/ ждем патча.

Видел.
Там предлагается два варианта. Игнорировать или менять местами последнее с предпоследним.
В обоих случаях потеря данных.

А мне хочется восстановить данные из другого счетчика.
это 1 вариант о двух действиях.

чтобы данные восстановить, они должны где-то быть. Обычно после рестарта все обнуляется.
#317
Quote from: Akira on March 29, 2012, 07:09:09 AM
Я собираю .1.3.6.1.2.1.31.1.1.1.6 и значение DCI Unsigned Int64
И все-равно бывает. При рестарте оборудования, например.

Можете помочь с Transformation Script?

Задача:
Каждый час собирается дельта на интерфейсе DCI - id 4366.
На том же интерфейсе собирается каждую минуту "average per second" - id 4364.

Как должен выглядить скрипт, чтобы если последнее значение счетчика 4366 получается 9223372036854775807, большое вобщем,
то можно было бы взять данные за 60 минут со счетчика 4364 по формуле (сумма значений счетчика 4364 за последние 60 минут)*60 и грубо восстановить значение счетчика 4366?

решение по данной проблеме было вчера найдено предложено в теме https://www.netxms.org/forum/oe-oo/eee-to-transformation-script/ ждем патча.
#318
Общие вопросы / Re: 1.1.10 Access denied
March 28, 2012, 06:15:50 PM
Quote from: Victor Kirhenshtein on March 28, 2012, 05:48:06 PM
1. Posmotrju popozze.

2-4. Da, eto izvestnie bagi. Budem ispravljat'. #2 dlja menja samij sloznij - nado prosto zakazivat' dizajneru ikonki, poetomu kakoe-to vremja zajmet.

5. Kakie grafiki imejutsja vvidu - predefined? Ili kotorie pokazivajutsja iz last values po right-click?

есть же вроде множество свободных (creative commons license) иконок. Могу заняться поисками, уточните что нужно.
#319
Quote from: Victor Kirhenshtein on March 28, 2012, 05:54:04 PM
Da, pozaluj smisl v etom est'. Po idee v bol'shinstve situacij propustit' odin poll luchshe chem poluchit' pik na grafike. Ja dumaju sdelat' tak:

1. Dobavit' flazok "is counter" v DCI - poskol'ku eto mozet bit' naprimer temperatura, i plavat' vverh-vniz - togda sled. znacjenie men'she prediduschego eto ok;
2. Esli new value < prev value, to libo propustit' poll (net dannih voobsche), libo sdelat' delta value = prev delta value. V ljubom sluchae pik uberem.


Спешил, и опечатался в своём сообщении ( даже не опечатался а откровенный бред набрал )
конечно же
if (QWORD)value < (QWORD)m_prevRawValue then
{
value = m_prevPrevValue;
}

Да, это самый лучший вариант, а про флажок, да, забыл ).
спасибо, ждём )
Думаю с этим решаться все проблемы.
#320
не понятен вопрос в принципе..
#321
Quote from: Victor Kirhenshtein on March 28, 2012, 01:27:02 AM
это встроенний код, не скрипт. выглядит он так:


      case DCM_AVERAGE_PER_MINUTE:
         nElapsedTime /= 60;  // Convert to minutes
      case DCM_AVERAGE_PER_SECOND:
         // Check elapsed time to prevent divide-by-zero exception
         if (nElapsedTime == 0)
            nElapsedTime++;

         switch(m_dataType)
         {
            case DCI_DT_INT:
               value = ((LONG)value - (LONG)m_prevRawValue) / (LONG)nElapsedTime;
               break;
            case DCI_DT_UINT:
               value = ((DWORD)value - (DWORD)m_prevRawValue) / (DWORD)nElapsedTime;
               break;
            case DCI_DT_INT64:
               value = ((INT64)value - (INT64)m_prevRawValue) / (INT64)nElapsedTime;
               break;
            case DCI_DT_UINT64:
               value = ((QWORD)value - (QWORD)m_prevRawValue) / (QWORD)nElapsedTime;
               break;
            case DCI_DT_FLOAT:
               value = ((double)value - (double)m_prevRawValue) / (double)nElapsedTime;
               break;
            case DCI_DT_STRING:
               // I don't see any meaning in "average delta per second (minute)" for string
               // values, so result will be 0 if there are no difference between
               // current and previous values, and 1 otherwise
               value = (LONG)((_tcscmp((const TCHAR *)value, (const TCHAR *)m_prevRawValue) == 0) ? 0 : 1);
               break;
            default:
               // Delta calculation is not supported for other types
               break;
         }



Угу приведение вижу, странно, на первый взгляд никаких проблем не должно быть.

case DCI_DT_INT64:
               value = ((INT64)value - (INT64)m_prevRawValue) / (INT64)nElapsedTime;
               break;
case DCI_DT_UINT64:
               value = ((QWORD)value - (QWORD)m_prevRawValue) / (QWORD)nElapsedTime;
               break;

Не может быть проблемы в платформе? (win32)
Может отказаться от uint64 в пользу int64?

Можно ли предусмотреть какой либо лог который будет отрабатывать флуктуации?
Например

if (DCI_DT_PREV*4) < DCI_DT_NEXT then

пишем в лог

DCI_RAW
DCI_RAW_PREV
DCI_DT_PREV
DCI_DT_NEXT




И тут в голову пришло во время написания.

Когда поле .1.3.6.1.2.1.31.1.1.1.6 достигает максимального значения uint64 он не сбрасывается на 0, либо в других предусмотренных ситуациях? Полез в документацию,из описания поля

The total number of octets received on the interface,
including framing characters.  This object is a 64-bit
version of ifInOctets.

Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ifCounterDiscontinuityTime.


то есть теоретически у нас может получится ситуация когда
value будет меньше m_prevRawValue

может добавить проверку?

сase DCI_DT_UINT64:
if (QWORD)value < (QWORD)m_prevRawValue then
{
value = m_prevPrevValue;
}
               value = ((QWORD)value - (QWORD)m_prevRawValue) / (QWORD)nElapsedTime;
               break;



Ну как?
#322
Способ организации массовой почтовой рассылки для NetXMS win32 (хотя аналогичный способ сработает и на других осях, но там как правило нет подобных проблем) на основе Gmail.
Нам понадобиться
1) Stunnel, который можно загрузить с одного из зеркал проекта
2) Blat, который можно загрузить со страницы проекта.

Ставим Stunnel как сервис, и меняем конфигурационный файл следующим образом.

; Sample stunnel configuration file for Win32 by Michal Trojnara 2002-2012
; Some options used here may be inadequate for your particular configuration
; This sample file does *not* represent stunnel.conf defaults
; Please consult the manual for detailed description of available options

; **************************************************************************
; * Global options                                                         *
; **************************************************************************

; Debugging stuff (may useful for troubleshooting)
debug = 7
output = stunnel.log

; Disable FIPS mode to allow non-approved protocols and algorithms
;fips = no

; **************************************************************************
; * Service defaults may also be specified in individual service sections  *
; **************************************************************************

; Certificate/key is needed in server mode and optional in client mode
cert = stunnel.pem
;key = stunnel.pem

; Authentication stuff needs to be configured to prevent MITM attacks
; It is not enabled by default!
;verify = 2
; Don't forget to c_rehash CApath
;CApath = certs
; It's often easier to use CAfile
;CAfile = certs.pem
; Don't forget to c_rehash CRLpath
;CRLpath = crls
; Alternatively CRLfile can be used
;CRLfile = crls.pem

; Disable support for insecure SSLv2 protocol
options = NO_SSLv2
; Workaround for Eudora bug
;options = DONT_INSERT_EMPTY_FRAGMENTS

; These options provide additional security at some performance degradation
;options = SINGLE_ECDH_USE
;options = SINGLE_DH_USE

; **************************************************************************
; * Service definitions (at least one service has to be defined)           *
; **************************************************************************

; Example SSL server mode services

;[pop3s]
;accept  = 995
;connect = 110

;[imaps]
;accept  = 993
;connect = 143

;[ssmtp]
;accept  = 465
;connect = 25

; Example SSL client mode services

;[gmail-pop3]
;client = yes
;accept = 127.0.0.1:110
;connect = pop.gmail.com:995

;[gmail-imap]
;client = yes
;accept = 127.0.0.1:143
;connect = imap.gmail.com:993

[gmail-smtp]
client = yes
accept = 127.0.0.1:25
connect = smtp.gmail.com:465

; Example SSL front-end to a web server

;[https]
;accept  = 443
;connect = 80
; "TIMEOUTclose = 0" is a workaround for a design flaw in Microsoft SSL
; Microsoft implementations do not use SSL close-notify alert and thus
; they are vulnerable to truncation attacks
;TIMEOUTclose = 0

; vim:ft=dosini


запускаем сервис.

Для удобства использования Blat лучше распаковать в netXMS/var (в этом случае нам не придется писать длинные пути или добавлять переменные path)
Теперь для удобства (можно и не делать прописав данный профиль в файле настроек, который будет описан ниже) создадим профиль для Blat, который сохранится в реестре.
Для этого просто нужно запустить blat.exe со следующими параметрами.

blat.exe -install smtp.google.com почтовый_ящик 3 587 gmail юзер пароль_к_ящику
gmail здесь это имя профиля, который потом можно вызывать просто добавив к параметрам данный идентификатор, профилей может быть несколько.

Далее создадим 2 файла

1) adr.list (имя и расширения файла может быть любым, это просто текстовый файл)
в нем буду хранится наши адреса в следующем формате
[email protected]
[email protected]
[email protected]

один адрес - одна строчка. Лишних пробелов и знаков желательно избегать.

2) opt.list (имя и расширения файла может быть любым, это просто текстовый файл)
В данном файле будут хранится настройки в следующем формате
-f "имя отправителя" -p gmail -log blat.log -try 1 -ti 60
имя отправителя желательно использовать примерно такое
NETXMS Server <ваш_ящик@gmail.ru>
gmail здесь это имя профиля.
В файл blat.log будут писаться логи.

все, все приготовления завершены.

теперь идём в  Action Configuration И создаем новый execute command on management server со следующим параметром
blat.exe -tf adr.list -of opt.list -subject "Port down on %a!" -body "В %t порт номер %5 на коммутаторе %n был отключен."
после идем в Even processing policy editor и на событие port down добавляем этот action.

аналогичным образом создаем все требуемые action'ы

Данный способ весьма гибок в настройках, так-как позволяет на лету менять списки рассылки либо настройки, даже из скрипта в самом netxms или ручками.



udp1: некоторые опечатки и уточнения.
версия первая, писал второпях, если кому нужны уточнения, то не стесняйтесь.

#323
Quote from: Akira on March 27, 2012, 10:33:05 AM
Спасибо. Эту ветку я находил и читал.
Почему такое случается понял.
Не понял как мне написать transformation script, чтоб работало.


Я использую такой
sub main()
{
return ((uint64($1)*8)/(1 << 20));
}

это для перевода в МегаБиты.
собираю параметр .1.3.6.1.2.1.31.1.1.1.6 тип uint64

но у меня там вылезла другая проблема, возможно конечно что дело в другом, но пока она актуальна. Отрицательных значений нет.
#324
Quote from: Akira on March 27, 2012, 08:29:36 AM
28-Dec-2011 11:59:01   503850560
28-Dec-2011 10:59:01   795522378
28-Dec-2011 09:59:00   598589222
28-Dec-2011 08:59:00   9223372036854775807
28-Dec-2011 07:59:00   273392862
28-Dec-2011 06:59:00   163655688
28-Dec-2011 05:59:01   43122668
28-Dec-2011 04:59:01   86841056

Я так понимаю, происходит это когда предыдущее значение было больше, чем текущее.

Как можно сделать, чтобы при такой ситуации, просто считалось, что предыдущее значение = "0"?
https://www.netxms.org/forum/oe-oo/eee-to-transformation-script/
я поднимал этот вопрос там.
#325
а для average delta per sec какой скрипт трудится? может он некорректно с uint64 работает?

может стоит их куда-нибудь вынести для легко редактирования или добавления каких-либо под свои нужды?
#326
по .1.3.6.1.2.1.31.1.1.1.6 тип uint64
average delta per sec
polling interval 30

и таким скриптом трансформации

sub main()
{
return ((uint64($1)*8)/(1 << 20));
}


переодически вылазят непонятные максимумы.

#327
Quote from: Victor Kirhenshtein on March 15, 2012, 03:05:10 PM
Eto pohoze primer iz etogo obsuzdenija: https://www.netxms.org/forum/oe-oo/oo-oto-teeo-snmp-traps/

Скорее всего, наверно осталось по недосмотру от экспериментов.
#328
General Support / Re: install web interface
March 15, 2012, 09:33:41 PM
Quote from: andi on March 11, 2012, 07:10:57 PM
hai victor n for all

how to install or display web interface netxms in windows xp
use full installation and web interface will be installed automatically.
#329
Quote from: Victor Kirhenshtein on March 15, 2012, 03:20:42 PM
Все счетчики - это беззнаковые целые, и при достижении максимума переходят через 0. Например, если у меня 8-ми битовый счетчик, то при значении 254 прибавив 3 я получу 1. Обычно для счетчиков абсолютные значения не важны, и собирают обычно дельту. В истории должно хранится уже значение после вычисления дельты и обработки transformation скриптом. Что касается быстрых интерфейсов, то переполнение счетчиков происходит очень быстро, и чтобы получить осмысленные значения, надо собирать данные часто, каждые 5-10 секунд, иначе между двумя опросами может произойти несколько переполнений и переходов через 0, и тогда дельта, вычисленная сервером, даст неправильный результат. Можно также использовать 64-битные счетчики из ifXTable (.1.3.6.1.2.1.31.1.1.1.6 и другие), если устройство их поддерживает.

Огромное спасибо, окончательно разобрался в данном вопросе. Немножко обнаглею, а за драйвера на скриптах не брались  ::) ?
#330
Quote from: Victor Kirhenshtein on March 15, 2012, 11:10:08 AM
Quote from: SKYnv on March 15, 2012, 05:55:17 AM
в script library опечатка в названии скрипта Resolve IfName

A chto eto za skript takoj? V default installjacii takogo vrode kak net.

хм может и я добавил, извиняюсь тогда если что.

вот такой.
sub main()
{
   return GetInterfaceName($node, $event->parameters[2]);
}