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

#16
А он давал такую ошибку, да. Но на линию 2, сейчас там
    subnet = toLowerCase($event.subnets);Собственно в таком виде
sub main() {
    subnet_dc = toLowerCase($event.subnets);
   
    // Быстрая проверка по ключевым словам
    if(subnet_dc.contains("dc") ||
       subnet_dc.contains("ts")) {   
        return true;
    }
    return false;
}
Все равно не работает корректно - уведомления продолжают идти в оба топика. Ошибки видел на линию 2 Function not found
Если верить https://netxms.org/documentation/nxsl-latest/#class-event parameterNames существует в виде array - поиск по нему в таком виде вообще возможен? Или я изначально накосячил

Референсом было вот это
sub main() {
    packageName = toLowerCase($alarm.key);
   
    // Быстрая проверка по ключевым словам
    if(packageName.contains("7-zip") ||
       packageName.contains("adobe reader")) {
        nxlog(4, "FILTER: Blocked package - " . $alarm->key);
        return false;
    }
   
    return true;
}
Как оказалось по логам - оно так же не работает, жалуясь Function or operation argument is not an object на линию
packageName = toLowerCase($alarm.key);
#17
DBWriter.BackgroundWorkers 10

Как и
DBWriter.DataQueues 10
DBWriter.InsertParallelismDegree 10
DBWriter.UpdateParallelismDegree 10

По ключу DBWriter это все, что менял
#18
Общие вопросы / Filtering scripts в EPP
January 28, 2026, 05:19:35 AM
Добрый день!
Имеется скрипт
subnets = [];

for (p : $node.parents) if (classof(p) == "Subnet") subnets.append(p.alias);

$event.addParameter("subnets", subnets.join(", "));

return true;
Прицепляющий alias подсети к ивенту SYS_NODE_ADDED
В EPP созданы 2 правила на тот же ивент, отличающиеся действием и Filter скриптами
1-ый вроде как должен фильтровать ивенты, где в alias нет dc и ts
sub main() {

    subnet = tolower($event->subnets);

   

    // Быстрая проверка по ключевым словам

    if(contains(subnet, "dc") ||

       contains(subnet, "ts")) {

        nxlog(4, "FILTER: Blocked DC subnet - " . $event->subnets);

        return false;

    }

   

    return true;

}
2-ой - где alias содержит dc и ts
sub main() {

    subnet = tolower($event->subnets);

   

    // Быстрая проверка по ключевым словам

    if(contains(subnet, "dc") ||

       contains(subnet, "ts")) {

        return true;

    }

    nxlog(4, "FILTER: Blocked Users subnet - " . $event->subnets);

    return false;

}

Если в ивенте действительно ЕСТЬ dc или ts - приходит 1 ивент в нужный топик. Но если в alias нет dc\ts - алармы сыпятся в оба топика, что на 1-ый фильтр, что на второй
Вот пример такого ивента
{
  "id": 180591103,
  "rootId": 0,
  "code": 1,
  "name": "SYS_NODE_ADDED",
  "timestamp": 1769568582,
  "originTimestamp": 1769568582,
  "origin": 0,
  "source": 1051263,
  "zone": 0,
  "dci": 0,
  "severity": 0,
  "message": "Node added",
  "lastAlarmKey": "",
  "lastAlarmMessage": "",
  "tags": [
    "NewObject"
  ],
  "parameters": [
    {
      "name": "nodeOrigin",
      "value": "1"
    },
    {
      "name": "subnets",
      "value": "KRS_Gaydashovka_UC"
    }
  ]
}
Что я сделал не так с этими фильтрами? ::)
#19
Добрый день.
Как можно проводить поиск по конкретным значениям какого-либо параметра в нодах?
В ветке Делимся скриптами сразу в шапке имелся скрипт поиска "в данном случае по snmp sysDescription коммутатора"
sub GetTree (nodeID)
{
Tree = FindObject(nodeID);
children = GetObjectChildren(Tree);

foreach (n : children)
{
    //println ("Name: " . n->name);
    if (n->name != null && classof(n) == "Node")
    {
        if (n->sysDescription ~= "^D-Link DES-3028" && n->comments == "")
    {   
        println ("Name: " . n->name . ", sysDescription: " . n->sysDescription . ", IP: " . n->ipAddr);
    }
}
GetTree(n->id);
  }
}

GetTree(2);
Который я попытался перенаправить на поиск нод, в которых Description на каком-то из интерфейсов имеет WAN.
sub GetTree (nodeID)
{
Tree = FindObject(nodeID);
children = GetObjectChildren(Tree);

foreach (n : children)
{
    //println ("Name: " . n->name);
    if (n->name != null && classof(n) == "Node")
    {
        if (n->interfaces.description ~= "WAN" && n->comments == "")
    {   
        println ("Name: " . n->name . ", interfaces.description: " . n->interfaces.description . ", IP: " . n->ipAddr);
    }
}
GetTree(n->id);
  }
}

GetTree(2);
Но оба скрипта падают в syntax error на линию 13. Что с того момента изменилось в синтаксе?
=================
Edited
В таком виде
sub GetTree(nodeID)
{
    Tree = FindObject(nodeID);
    children = GetObjectChildren(Tree);

    foreach (n : children)
    {
        if (n->name != null && classof(n) == "Node")
        {
            ifaces = n->interfaces;
            foreach (iface : ifaces)
            {
                if (iface->description ~= "WAN")
                {
                    println("Name: " , n->name , ", interface: " , iface->description , ", IP: " , iface->ipAddr);
                }
            }

            GetTree(n->id);
        }
    }
}

GetTree(2);
выполнение его проходит, но результат никакой не получается
*** FINISHED ***

Result:
#20
Общие вопросы / Re: FileSystem.Total
January 13, 2026, 11:27:07 AM
Теперь у меня другой вопрос
Как мне удалить все DCI, что я наплодил с созданием DCI под instance discovery? Со временем они появляются обратно ::)
#21
Общие вопросы / Re: FileSystem.Total
January 13, 2026, 11:25:20 AM
Вопрос снят. Что
WMI.Query(root\cimv2,SELECT * FROM Win32_LogicalDisk WHERE Name LIKE "'{instance}'", Size)Что
WMI.Query(root\cimv2,SELECT * FROM Win32_LogicalDisk WHERE Name LIKE '"{instance}"', Size)корректно отрабатывают
-_-
#22
Общие вопросы / Re: FileSystem.Total
January 13, 2026, 09:31:06 AM
Попытка реализовать этот момент через wmi запрос на win32_logicaldisk + внешний лист.
Запрос
WMI.Query(root\cimv2,SELECT * FROM Win32_LogicalDisk WHERE Name="'C:'", Size)В таком виде корректно запрашивается и выводится нужный показатель
Как мне оформить этот запрос для {instance}?
WMI.Query(root\cimv2,SELECT * FROM Win32_LogicalDisk WHERE Name LIKE "{instance}", Size)В созданном внешнем листе инфа лежит в виде X: - С:, D: и т.п.
Сам лист запрашивается через
ExternalList = LogicalDisk.DeviceID:powershell -NonInteractive -Command "Get-CimInstance -Namespace root\cimv2 -Query 'SELECT DeviceID FROM Win32_LogicalDisk WHERE DriveType=3' | Select-Object -ExpandProperty DeviceID"===========
WMI.Query(root\cimv2,SELECT * FROM Win32_LogicalDisk WHERE Name="'{instance}'", Size)Не работает, я так понимаю оно экранирует {instance} как строку, исключая переменную
WMI.Query(root\cimv2,SELECT * FROM Win32_LogicalDisk WHERE Name like '{instance}', Size)Не работает
WMI.Query(root\cimv2,SELECT * FROM Win32_LogicalDisk WHERE Name='{instance}', Size)Опять же нет
#23
Общие вопросы / FileSystem.Total
January 12, 2026, 11:54:31 AM
Добрый день

Как должно выглядеть создание DCI для получения объема логического диска? FileSystem.Total с instance discovery от шаблона Windows инстансы находит, dci по ним создаются - хоть и в нескольких экземплярах почему-то - но значений никаких не отдает, падает в Error. Параллельно с этим дефолтные DCI  процентного свободного места корректные значения имеют.
type = AgentReadParameter($node, "FileSystem.Type(" .. $1 .. ")");

if ((type == null) || (type == "") || (type == "CDFS")) 

   return false;

return true;
#24
Общие вопросы / Re: Wireless controller
January 12, 2026, 11:46:51 AM
Уточню у руководства и отпишусь
#25
Общие вопросы / Wireless controller
December 18, 2025, 06:21:45 AM
Доброго дня!

С какими контроллерами сейчас есть возможность взаимодействовать, только физическими или виртуальные тоже доступны? Хотел потрогать Wireless Domain фичу
На Ubuntu 24.04.2 LTS развернут контроллер Unifi-controller 9.5.21-31260-1, подкинул на него агента, но как Wireless Controller он не распознается.
Как и AP от них же не всегда распознаются как Wireless AP - UAP-LR, UAP-AC-Mesh, UAP-LR, U6+, UAP-AC-Lite
UAP-AC-Lite я видел ноды, что определялись как W.AP
#26
Общие вопросы / Re: Smart параметры
December 16, 2025, 11:56:47 AM
И агент и сервер обновлены до 5.2.8
#27
Отправил логи в пм
#28
Общие вопросы / Re: Smart параметры
December 16, 2025, 10:10:31 AM
Поставил smartmontools 7.5 релиз
Metric PhysicalDisk.SmartAttr(/dev/sda, Raw_Read_Error_Rate) - Dci значений никаких не отдает, error в поле Value
PhysicalDisk.Devices - Table, так же не отдает ничего
PhysicalDisk.SmartStatus(/dev/sda) - Dci, так же не отдает ничего
smartctl --scan отдает
/dev/sda -d ata # /dev/sda, ATA device
/dev/sdb -d ata # /dev/sdb, ATA device
В системе стоит 2шт Sata SSD
smartctl -H /dev/sda вполне отрабатывает
SMART overall-health self-assessment test result: PASSED
Как и запросы конкретных параметром из shell на самой машине проходят нормально

Скрин DCI


Или мб в конфиге агента нужно прописать дополнительно что-то?
#29
Общие вопросы / Smart параметры
December 09, 2025, 05:35:02 AM
Добрый день.
NetXMS Server Version 5.2.8 Build 5.2-506-g7d4137c08a
NXCP: 5.62.1.53 (AES-256, 3DES, AES-128)
Built with: g++ (Ubuntu 13.2.0-23ubuntu4) 13.2.0


Какие требования к использованию параметров DCI PhysicalDisk.SmartAttr и PhysicalDisk.SmartStatus?
Я пробовал создать DCI с запросом PhysicalDisk.SmartAttr(0,5), PhysicalDisk.SmartAttr(0,05), PhysicalDisk.SmartAttr(*), с другими id физ дисков - никакой инфы от них не получается, в поле Value ERROR.
В админ гуйде кроме инфы в Appendix не нашел ничего.
Инфа запрашивается с Windows 10 машины, агент стоит со всеми возможными сабагентами

https://www.netxms.org/forum/oe-oo/smart-moto/msg4743/#msg4743
Этот тред особо не помог, т.к. указанным синтаксисом инфы кроме ERROR не выходит
#30
Развернуто на ВМ с Ubuntu Server 24.04.3. На одной машине база, сервер, веб-морда
16 потоков
20Gb выделенной ОЗУ
4Gb свап, но особо не видел, чтобы в него много сливалось
База postgreSQL с timescale, но такой затык со сканом был и на старой базе до конверта в timescale.

NetXMS Server Version 5.2.7 Build 5.2-484-g5df9cb5911
NXCP: 5.62.1.53 (AES-256, 3DES, AES-128)
Built with: g++ (Ubuntu 13.2.0-23ubuntu4) 13.2.0