Skip to content
  • DCI для параметра в реестре

    Support (Russian)
    2
    0 Votes
    2 Posts
    49k Views
    A
    Добрый день, Метрика указана неверно. System.Registry.Value(*) — это шаблон из каталога метрик агента, а не готовая метрика: у неё два аргумента, путь к ключу и имя value. Для вашего случая: System.Registry.Value(HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers,{instance}) {instance} нужно добавить и в description, иначе все шесть DCI получатся с одинаковым именем. С литеральной * агент не может разобрать первый аргумент как корневой ключ и возвращает "unknown metric", поэтому созданные DCI сразу уходят в статус unsupported — в event log ноды должно быть шесть SYS_DCI_UNSUPPORTED. В Data Collection в режиме просмотра проверьте, что включён показ unsupported DCI. Instance discovery настроен правильно, external list здесь не нужен — System.Registry.Values(...) возвращает именно имена values. Отдельно: сам DCI, на котором настроен instance discovery, в режиме просмотра не отображается, в списке видны только созданные по нему DCI. Это ожидаемое поведение.
  • Cannot create node object XXXX: License Violation

    Support
    3
    0 Votes
    3 Posts
    27k Views
    C
    Hi Alex, I've sent support an email. I believe I'll need a new license key as my Hardware ID is red.
  • Netxms Managment Client error on close

    Support
    3
    1
    0 Votes
    3 Posts
    22k Views
    A
    update: another issue is fixed. this one is tracked here: https://github.com/netxms/netxms/issues/3593
  • 0 Votes
    2 Posts
    17k Views
    A
    Ключ ни на что не влияет в работе программы — собирать без него правильно. Он добавляет в сборку только libipfix, библиотеку разбора NetFlow/IPFIX. Демон-коллектор nxflowd, для которого она предназначалась, в сборку не входит вообще, а сервер и консоль с flow-данными не работают: обработка так и не была реализована. В 7.0 ключ удалён вместе с кодом. Вместо собственного коллектора в 7.0 планируется интеграция с внешними анализаторами трафика, первый коннектор — ntopng: https://github.com/netxms/netxms/issues/3429
  • 0 Votes
    2 Posts
    31k Views
    A
    Hi, Confirmed, and thanks for tracing it - your reading is exactly right. When no multiplier applies the value stays a String, so the %s path skips the decimal trimming. Tracked as https://github.com/netxms/netxms/issues/3577. Until that's fixed, setting an explicit display format on the DCI works around it: %{m,u}.2f instead of leaving it empty. The f conversion parses the string into a number first, so the trimming happens. Cost is that it's per-DCI and pins you to two decimals regardless of magnitude.
  • NetXMS Team at FrOSCon 2026

    Announcements
    1
    0 Votes
    1 Posts
    4k Views
    V
    We are visiting FrOSCon 2026 in Sankt-Augustin, Germany - so if you happens to be there too and want to chat with the team - feel free to message me! Cheers, Victor
  • Using script for title and group in Performance view

    Support
    2
    1
    0 Votes
    2 Posts
    31k Views
    A
    Hi, No - Title and Group do not take scripts. Neither field goes through a macro engine on the server: the whole Performance View block is stored with the DCI as-is, and the client substitutes a small fixed set of placeholders when it draws the tab. That is the entire mechanism, so there is nothing to hook a script into. Two separate things are off in the screenshot. % is a real macro syntax, but it belongs to the text expansion used for event and alarm messages, notification text and object tools - and there the form is %[scriptName], without the script: prefix. The script: prefix belongs to %{script:name}, which is a template macro for DCI name, description and instance fields, expanded when the DCI is created from a template - once per node, not per discovered instance. You combined the two, and neither engine is applied to Performance View fields. What the fields do accept, substituted by the client at render time: Title - {instance}, {instance-name}, {node-name} Group - {instance}, {instance-name} (no {node-name} here) Name in legend - {instance}, {instance-name}, {node-name} Leave Title or Name in legend empty and the DCI description is used instead. Charts are grouped by the substituted Group value, so instances that produce identical text land on one graph. For splitting instances into two or more groups there are two ways. Simplest approach is one master DCI per group: copy the instance discovery DCI, give each copy a fixed Group name, and let each instance filter script accept only the instances belonging to that group. The group stays static text and the script only decides membership, so each group can also have its own title, colors and time range. If you want to keep a single master DCI and let the script decide, use the instance display name as the carrier - the filter script sets it, and Group reads it back: if ($1 ilike "*volt*") return [true, $1, "Voltage"]; return [true, $1, "Current"]; Second element of the array is the instance value ({instance}), third is the instance display name ({instance-name}). Set both Group and Title to {instance-name} and Name in legend to {instance} - instances the script labelled "Voltage" end up on one graph titled Voltage, "Current" on another. Two caveats: {instance-name} then carries the group label everywhere it is shown, Last Values and DCI descriptions included, so use {instance} where you need the instance itself; and group matching is exact, case included. Filling these fields from a script is not possible today, and the macros that do work are not in the documentation - the Performance view section only mentions grouping by identical Group text. I raised https://github.com/netxms/netxms-doc/issues/69 to get them written down. If script-driven titles are important for your setup, say so and I will open a feature request for it.
  • 0 Votes
    5 Posts
    31k Views
    K
    Всё получилось, ровно так как вы и написали. Вариант с make install конечно, более привлекателен ) В конечном итоге: [root@AltTEST netxms-6.2.3]# nxdbmgr upgrade NetXMS Database Manager Version 6.2.3 Build 6.2-694-g766c57382a INFO: Server module WEBAPI skipped Upgrading database... Upgrading from version 62.35 to 62.36 Upgrading from version 62.36 to 62.37 Upgrading from version 62.37 to 62.38 Database upgrade succeeded Большое спасибо за помощь!
  • How to monitor Proxmox ve with vmgr.nsm in agent config

    Support
    8
    0 Votes
    8 Posts
    143k Views
    A
    Hi, No problems, and running pvesh from the agent works fine. On the second question the choice isn't quite what it looks like though, because with NetXMS the REST API route is itself an agent feature. pvesh works from the agent for a reason worth knowing about: it invokes API functions directly without going through the REST/HTTPS server, and it requires root. The packaged agent runs as root - the systemd unit does not drop privileges, and the agent changes uid only if you pass -u/-g or set UserId/GroupId in nxagentd.conf. So it works with no extra setup, which also means anyone who can add a DCI can make the agent fork a root command on the hypervisor. Worth deciding that deliberately rather than finding it out later. What will actually bite you is process spawning. ExternalParameter (ExternalMetric in current naming) forks a process per metric per poll, and pvesh is a Perl program that loads the PVE API modules on every invocation. One metric per guest on a 60 second interval turns into a continuous stream of interpreter startups on the host. The default execution timeout is 5 seconds (ExecTimeout, or ExternalMetricTimeout for these specifically), and a slow pvesh call will hit it and get killed. Use ExternalDataProvider instead - added in 5.2.0. It runs the command once per polling interval, caches the output, and serves any number of metrics out of the cached document with jq queries, evaluated inside the agent so there is no jq binary to install: [ExternalDataProvider/PVE] Command = ["/usr/bin/pvesh", "get", "/cluster/resources", "--type", "vm", "--output-format", "json"] PollingInterval = 60 Timeout = 30000 [ExternalDataProvider/PVE/Metrics] PVE.Guest.Status(*) = .[] | select(.vmid == $1) | .status PVE.Guest.CPU(*) = .[] | select(.vmid == $1) | .cpu PVE.Guest.CPU(*).dataType = float PVE.Guest.Memory(*) = .[] | select(.vmid == $1) | .mem PVE.Guest.Memory(*).dataType = uint64 [ExternalDataProvider/PVE/Lists] PVE.Guests = .[] | .vmid That is one pvesh call a minute for the whole cluster no matter how many DCIs you build on top, and PVE.Guests gives you instance discovery over vmid. Two details: Timeout here is in milliseconds, and metrics with parameters ($1) need agent 6.0 or newer - on 5.2 define each metric with a fixed query instead. On agent versus REST: there is no version of the REST route that doesn't involve an agent. Web service DCIs are executed by an agent acting as web service proxy - the server never makes the HTTP request itself. If the node has no web service proxy configured it falls back to the zone proxy, and finally to the management server node, so "just using the REST API" in practice means "the server's own agent makes the call". The choice is which agent and where it sits, not whether there is one. Consequences: Responses are cached per URL for the retention time set on the web service definition, so every DCI reading out of the same document costs one HTTP request. Against /cluster/resources that is a single call per interval covering every guest in the cluster. The extraction is identical either way - web service DCIs and ExternalDataProvider share the same jq-based extractor, so the queries you write don't change with the route. Only an agent on the PVE host can reach 8006 on localhost, which matters if that port isn't open to the server. Poll from an agent elsewhere and you install nothing on the hypervisor at all. So the real trade is narrow. pvesh saves you managing an API token, at the price of forking a root-privileged Perl process on the hypervisor. The web service route costs you a token and gives you a read-only credential in exchange (PVEAuditor is enough), one HTTP call per interval, and the freedom to poll from an agent that isn't on the PVE host. I'd take the REST API as the default and keep pvesh for anything the HTTP API doesn't expose. One thing has changed since my post above. The OTLP route I said didn't work now does - the receiver accepted protobuf only, which is why PVE 9's OpenTelemetry metric server couldn't reach it, and that is fixed in 6.2.3 (https://github.com/netxms/netxms/issues/3482), released on 9 August. On 6.2.3 or later you can point Datacenter - Metric Server - OpenTelemetry straight at the NetXMS web API and have PVE push guest metrics on its own: no collector in between, no polling, and no agent on the host. It needs an auth token passed through the otel-headers option, and the receiver is loaded as a server module (Module = otlp in netxmsd.conf). None of the ingestion side is documented yet - https://github.com/netxms/netxms-doc/issues/67 covers that.
  • IOS App

    Feature Requests
    26
    0 Votes
    26 Posts
    223k Views
    A
    Not implemented at the moment - the Objects tab covers the Infrastructure tree only. Noted as a feature request, no date on it.
  • NetXMS 6.2 patch release 3

    Announcements
    1
    0 Votes
    1 Posts
    3k Views
    V
    We just published patch release 3 for version 6.2. Changes since previous patch release: -  Single-use authentication tokens -  Self-service dialog for managing own authentication tokens -  Authentication token value is returned only in response to token creation request and is no longer exposed in token listings -  Microsoft Teams notification driver reworked to send notifications to Workflows (Power Automate) webhook URLs -  OTLP receiver accepts JSON-encoded OTLP/HTTP payloads -  Wake-on-LAN packets can be sent to managed nodes via web API and NXSL -  Option to disable credentials check for incoming SNMP traps -  Added NXSL methods for setting SNMP trap credentials -  Number of agent connection retries is now configurable -  Chart Y axis range and gauge value fields accept K, M, G, and T multiplier suffixes -  Incidents view can hide closed incidents -  "Go to object" action added to package deployment jobs, agent tunnels, scheduled tasks, and user support application notification views -  D-Link driver uses ifDescr as primary source for assigning interface physical location -  Fixed stack buffer overflows in LLDP topology processing and SNMP OID conversion that could crash the server -  Fixed access control bypass when reading closed incidents -  Fixed data collection configuration not being updated on agents working in cache mode -  Fixed template exclusion groups not being enforced on configuration poll auto-apply and in NXSL applyTemplate -  Fixed business service status calculation ignoring service's own checks -  Fixed failed package installation being reported as completed -  Fixed WMI subagent failing all queries after the first one in agent lifetime -  Fixed agent hang on shutdown when agent extension is configured -  Fixed critical events being dropped by wineventsync severity filter -  Fixed spikes in Windows System.IO.* total metrics when physical disk drops out of collection -  Fixed user inactivity timeout logging out actively working users in web console -  Fixed excessive column repacking that slowed down grid views in Windows desktop client -  NXSL Unicode case folding is now locale-independent Full list of fixed issues: -  #1301 / NX-1091 (D-Link stack driver and ports) -  #3224 (Update Microsoft Teams Notification Driver to Support Workflows/Power Automate) -  #3252 (Y axis range in chart properties should support K, M, G, T suffixes) -  #3347 (Agent's data collection elements for cache mode not getting updated) -  #3389 (Newly created event template is not saved in log parser policy) -  #3415 (ClassCastException when opening bar/pie chart from DCI editor) -  #3418 (Grid views repack columns on every refresh, causing constant repaint and slowdown on Windows desktop client) -  #3428 (Line chart ignores configured time period on first open, shows last hour until refresh) -  #3432 (Unvalidated netmask from node creation request passed to pseudo-interface (np.cpp:293)) -  #3467 (Allow setting SNMP trap credentials in bulk (NXSL binding)) -  #3472 (Narrow string literals passed to StringBuffer::append() silently become "true" (breaks notification digest and alarm AI prompts)) -  #3474 (Failed package installation can be reported as completed (uninitialized variable in PackageDeploymentJob::execute)) -  #3475 (Node::getMetricFromSmclp() validates wrong variable, returns garbage when value is on last line) -  #3476 (memset on non-trivially copyable WaitQueueWaiter in MsgWaitQueue) -  #3482 (OTLP receiver rejects JSON-encoded OTLP/HTTP payloads) -  #3483 (NXSL Unicode case folding silently degrades to ASCII when process environment has no locale) -  #3485 (Server crash (SIGSEGV): stack buffer overflow in LLDP topology processing (BinToStr into fixed buffers)) -  #3489 (Option to disable incoming SNMP trap credentials check) -  #3490 (Agent hangs on shutdown if agent extension is configured) -  #3492 (Access check bypassed when reading closed incidents via NXCP) -  #3493 (Single-use authentication tokens) -  #3495 (Stack buffer overflow in SnmpConvertOIDToText: bufferSize is never enforced, crashes server during instance discovery) -  #3496 (Self-service UI for managing own authentication tokens) -  #3497 (Authentication token values exposed in token listings until server restart) -  #3499 (WebAPI rejects all internal object tools, but none of them need a client) -  #3500 (Table views lose declared sort direction on first open (restoreTableViewerSettings defaults to SWT.UP)) -  #3501 (WMI subagent: all WMI.Query metrics fail after first query in agent lifetime (CoInitializeSecurity called per query)) -  #3502 (Configurable number of agent connection retries) -  #3503 (WinNT subagent: System.IO.* total metrics spike when a physical disk drops out of the per-second aggregate) -  #3504 (AI provider Temperature/TopP parsed as integers, fractional values truncate to 0) -  #3505 (wineventsync: Critical events dropped by default severity mask (0xFF vs 0x100)) -  #3506 (Stale help texts: nxmibc default output file, nxtool encryption policy default, nxdbmgr reset-system-account) -  #3507 (ping subagent: Don't Fragment option comparison inverted in target parsing) -  #3508 (SIGSEGV in NXSL_NetworkPathClass::getAttr during class attribute enumeration) -  #3509 (Password complexity subsequence check misses last alphabet window (XYZ/xyz not rejected)) -  #3510 (Typo in MIB walk DCI creation action: "Create data collection tiem...") -  #3511 (DB metadata drift: 2FA config vars missing from setup.in, IntruderLockoutTime units, stale SYS_TABLE_THRESHOLD_DEACTIVATED description) -  #3512 (oracle subagent: Oracle.ASM.DiskGroups list always empty (tag pattern references nonexistent STATUS column)) -  #3513 (java subagent: JVMOptions config parameter is parsed but never passed to the JVM) -  #3514 (vmgr subagent: wrong values from several metrics (CPU.Time returns vCPU count, Memory.UsedPrec always 0/100, MaxCount semantics, "Unkonown" literals)) -  #3515 (libnxlp: <logName> in agent-side Windows event log parser rule dereferences null) -  #3516 (ping subagent: Icmp.MinPingTime and Icmp.Cumulative{Min,Max}PingTime all return last-minute maximum RTT) -  #3517 (SYS_TEMPLATE_AUTOREMOVE event parameters are swapped (template posted as node, node as template)) -  #3518 (Template exclusion groups not enforced on configuration-poll auto-apply path (or NXSL applyTemplate)) -  #3519 (Console scan command: zone and proxy keywords assign each other's values) -  #3520 (webapi openapi.yaml: historicalDataType value mapping description is inverted) -  #3521 (Add option to hide closed incidents in Incidents view) -  #3523 (Business service parent state recomputed from children only, ignoring its own checks) -  #3524 (Agent metric registration oddities: System.CPU.Usage5.Idle5(*), Solaris MemoryDevice.MaxSpeed type) -  #3526 (Web console: inactivity timeout logs out actively working users) -  #3527 (Add "Go to object" context menu action to Package Deployment Jobs and other configuration views) -  #3528 (nxdbmgr check cannot create missing object_properties rows - INSERT references dropped is_system column) -  #3535 (Interface Traffic Agent 32-bit template: system tag says bytes, stored value is bits — utilization 8x too high)
  • How to use setCustomAttribute

    Support
    3
    0 Votes
    3 Posts
    38k Views
    D
    Perfect, thank you for the explanation.
  • Apple MobileWebKit touch interaction

    Development
    2
    0 Votes
    2 Posts
    99k Views
    A
    Hi, Thank you for the effort. I'm not sure you'll be able to push it (judging by other pending issues in RCP/RAP), but there is good news as well - we'll migrate away from RAP in the near future. The new web is built from scratch and not Java-based. It currently exists as an internal beta.
  • Sub Zone

    Feature Requests
    3
    0 Votes
    3 Posts
    15k Views
    R
    Thanks for the reply and information
  • Filtering scripts в EPP

    Support (Russian)
    9
    0 Votes
    9 Posts
    64k Views
    A
    Замена contains на like проблему не решила — оба регистрозависимы. В текущем виде фильтр не сработает ни на одной записи с кириллицей, а ASCII-записи ("7-zip", "adobe reader") это маскируют. Проверено на nxscript 6.2.0: s = "Средства Проверки Microsoft Edge"; s like "*Средства Проверки*" // true - регистр совпадает s like "*средства проверки*" // false - регистр не совпадает s.contains("Средства Проверки") // true s ilike "*средства проверки*" // true - ilike регистронезависим Регистронезависимый оператор — ilike, а не like. Среди методов строки аналога contains без учёта регистра нет, equalsIgnoreCase сравнивает строку целиком. Почему исходный вариант с contains выглядел нерабочим: по приложенному логу toLowerCase на вашем сервере отработал корректно — "агент администрирования kaspersky security center". Значит и contains работал, а пакеты из трейса (Kaspersky Security Center, Microsoft Edge) просто не входили в список из 60 записей, и правило отфильтровало их правильно. Исходный скрипт был в порядке. Деталь, которая здесь важнее: toLowerCase, toUpperCase, ilike и equalsIgnoreCase для не-ASCII зависят от локали процесса. LC_CTYPE подхватывается только если он есть в окружении, а systemd-юнит его не задаёт — при запуске из пакета netxmsd может работать в локали C. Тогда toLowerCase молча оставляет кириллицу без изменений, а ilike и equalsIgnoreCase на кириллице возвращают false, без записи в лог. Тикет на это: https://github.com/netxms/netxms/issues/3483 Проверка: println("Средства".toLowerCase()); // ожидается "средства" Если вывод пустой или регистр не изменился, локали нет — задаётся через LANG=C.UTF-8 в /etc/default/netxmsd. Для списка из 60 наименований надёжнее не приводить регистр вручную: либо сравнивать через ilike при рабочей локали, либо сопоставлять точным регистром через contains — второй вариант от локали не зависит вообще. Вариант с Mapping tables, предложенный выше, здесь удобнее обоих: список правится в Configuration без редактирования скрипта, GetMappingTableKeys() отдаёт его массивом.
  • 0 Votes
    3 Posts
    24k Views
    A
    Filed as https://github.com/netxms/netxms/issues/3480 for design discussion. Option 3 is the right shape, but one thing needs settling before you build on it: user custom attributes will not work as a backing store for ordinary users. CMD_UPDATE_USER is handled by ClientSession::updateUser() and requires SYSTEM_ACCESS_MANAGE_USERS, with no exemption for modifying your own account — password change and 2FA binding both special-case userId == m_userId, custom attributes do not. A non-admin operator saving their own date format gets access denied. So the per-user store needs a server-side change either way: a self-update path restricted to own custom attributes, or a separate per-user key/value store with its own command and access check. That choice determines the client API, so it should come before more work on the merge logic. Beyond that, option 3 needs an explicit rule for which preferences are machine-local and which are per-user. Without one, every preference added later is a judgement call and the split rots — your HTTP_* and window geometry cases are exactly what such a rule has to answer. Your points 3 and 4 are a separate problem, worth splitting off: the RWT store sits in the servlet container state directory, so it is lost on container restart and on .war update. Persisting that directory, or moving the store out of it, fixes preference loss in the web client on its own, with none of the per-user work — and it covers theme files, map tile cache and MIB downloads at the same time.
  • Шторм аварий

    Support (Russian)
    8
    0 Votes
    8 Posts
    20k Views
    S
    Но одно следствие проверьте: на свежей инсталляции стандартные события, правила EPP и темплейты уже существуют. Если на старом сервере вы меняли что-то стандартное — severity системных событий, дефолтные правила, — то при импорте без Replace эти изменения молча не применились, остались свежие дефолтные версии. ---------- Именно так и делал. Проверю
  • Параметр PhysicalDisk.SmartAttr

    Support (Russian)
    6
    2
    0 Votes
    6 Posts
    58k Views
    S
    Опробую. Отпишу
  • Smart параметры

    Support (Russian)
    9
    0 Votes
    9 Posts
    88k Views
    A
    Тикет закрыт, метрики доступны с 6.1.2: SmartAttrRaw, SmartAttrRawString, SmartAttrWorst, SmartAttrThreshold. Подробности в соседней теме: https://www.netxms.org/forum/oe-oo/parametr-physicaldisk-smartattr/ По исходному вопросу темы — error или пустое значение у PhysicalDisk.* при том, что smartctl из шелла работает — это отдельная проблема, обновлением не решается. Агент выполняет: smartctl --all -j <device> и отбрасывает результат, если вывод не разбирается как JSON или в нём отсутствует секция device. Типичные причины: smartctl отсутствует в PATH сервиса либо устройство недоступно с правами, под которыми запущен nxagentd. Причина фиксируется в логе агента при DebugTags=smartctl:6 — в лог попадают команда, messages от smartctl и конкретный отказ: invalid device name, failed to execute, timed out, error parsing JSON, device section missing. Note: PhysicalDisk.Devices использует smartctl --scan, поэтому пустая таблица — тот же симптом, а не отдельная проблема.
  • SAML Authentication

    Feature Requests
    3
    0 Votes
    3 Posts
    27k Views
    A
    Hi, Yes, it's on the roadmap, but it might end up in the enterprise build -- we are not sure yet.