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

#1
Победил вроде.

Базу netxms_db пришлось предварительно создать, в свойствах базы Compatibility level выставить «SQL Server 2012 (110)», учетку для подключения к базе тоже создать в SQL и выдать права на базу, плюс имя сервера указывать как <server>\SQLEXPRESS, а не localhost.
#2
По результатам темы написал статью на хабр: https://habr.com/ru/post/460193/
#3
Quote from: Victor Kirhenshtein on May 29, 2019, 08:47:18 AM
Я попробую воспроизвести сегодня у себя - были другие жалобы на такую-же проблему с MS SQL, похоже сломали что-то в коннекторе.
Не получилось проверить? Может  обходные пути есть какие-то?
#4
Quote from: Victor Kirhenshtein on June 13, 2019, 09:55:13 AM
Это при обработке события по срабатыванию threshold?

Да, именно.

Quote from: Victor Kirhenshtein on June 13, 2019, 09:55:13 AM

Можно использовать instance discovery filter - там можно вернуть отдельно значение instance и отдельно instance name, например так:


instance = $1;
if (instance ~= "(.*) - (.*)")
{
   return %(true, instance, $1);
}
return true;


и в поле description для DCI использовать {instance-name} вместо {instance}.


Да, так всё получилось, спасибо :)
#6
Причем коллеге, под Windows 2019 и SQL Express 2014 удалось запуститься, но там он базу предварительно создавал и коннектился под sa. Мне воспроизвести то же самое не удалось, почему-то.

З.Ы. Ответьте, плиз, еще в соседнем топике: https://www.netxms.org/forum/oe-oo/moto-oka-et-etkato-windows/msg25749/#msg25749
#7
Попытался поставить NetXMS на виртуалку для тестов, Windows 2019 (пробовал 2016 - то же самое), SQL Express 2016 (пробовал 2012 и 2016 - то же самое). Бился-бился, все время такую ошибку получаю:



NetXMS последний. Сервисы все включены, и TCP и Named Pipes, SQL перестартован, с помощью Management Studio подключаюсь без проблем.

По разному пробовал и отдельно базу netxms_db предварительно создавал и под доменным админом и под sa, ошибка одна и та же. Куда рыть, подскажите? С PostgreSQL таких проблем не было.
#8
Супер, всё получилось! Спасибо! Я почему-то думал, что ExternalList, он вместо ExternalParameter, а они вместе, оказывается.

Как-то так вышло:


Пара вопросов возникла еще:
1. Сейчас ExternalList отвечает в формате "(Название) - (Идентификатор)", соответственно, в ExternalParameter этот текст передается в таком же виде и в интерфейсе отображается в таком же виде.
Это неудобно визуально, потому что идентификатор (THUMBPRINT) большой и бесполезный для отображения.
Можно ли как-то через ExternalList получить отдельно две части - название и идентификатор, в ExternalParameter передавать только идентификатор, а отображать только название?

2. Нужно изменить конфиг агента на группе серверов. Не для всех, а только для каких-то, например для находящихся в контейнере. Для этого нужно использовать Agent configuration policy? Прочитал документацию про это, но что-то не понял, можно ли сделать на группу серверов. Или правильней для всех серверов одинаковый мастер-конфиг с netxms подтягивать, просто не использовать потом, что не нужно?

3. В макросах для Event Processing не смог получить количество дней, которое выдается в Value DCI-инстанса. %<currentValue> и %<dciValue> что-то пустоту выдают.
#9
Quote from: Victor Kirhenshtein on April 04, 2019, 06:33:41 PM
Второй вариант - это использовать instance discovery. Тогда остается параметр для получения срока действия сертификата, и делается ExternalList который выдает список всех сертификатов в системе, и используется для instance discovery. Тогда для каждого сертификата будет создан отдельный DCI, на котором уже могут быть трешолды как обычно.

Вот этот вариант мне нравится. Только полностью разобраться не могу что-то все равно.

Что я хочу. Чтобы эти отдельные DCI создались с именем (Description?), в котором будет присутствовать имя сертификата (например friendly name). Ну а значением будет количество дней, то же самое, что сейчас скриптом отдается. И дальше уже всё как с ExternalParameter.

Реализация не очень понятна.

1. Я создаю параметр CertificateExpireDate, в нем указываю в качестве параметра HTTPS.CertificateExpireDate(*) со звездочкой в скобках - это значит с инстансами?

2. На вкладке Instance Discovery я выбираю в качестве метода Agent List? А в List Name что писать, HTTPS.CertificateExpireDate?

3. В конфиге агента, я вместо
ExternalParameter = HTTPS.CertificateExpireDate: powershell.exe -file "\\server\Scripts\test.ps1"

пишу
ExternalList = HTTPS.CertificateExpireDate(*): powershell.exe -file "\\server\Scripts\test.ps1"

4. А в скрипте... тут не очень понятно. Я получаю все имена сертификатов и для каждого количество дней. А как возвращать это для NetXMS, чтобы оно преобразовалось в  имена и значения этих DCI?

З.Ы.  И можно какой-нибудь живой пример не для сертификатов, а для чего угодно с этими инстансами и ExternalList?
#10
Quote from: Tatjana Dubrovica on March 25, 2019, 01:38:25 PM
Читать нужно тут: https://www.netxms.org/documentation/adminguide/agent-management.html#agent-external-metrics
Про раздел 6.9 неочень поняла где это.
Это он и есть, просто в pdf-ном варианте.

Quote from: Tatjana Dubrovica on March 25, 2019, 01:38:25 PM
В вашем случает вы пишите в основной части агентского конфига:
ExternalParameter = HTTPS.CertificateExpireDate: powershell.exe -file "\\Scripts\test.ps1"
А своим скриптом test.ps1 я просто возвращаю одну цифру? А если сертификатов несколько?
#11
Quote from: Tatjana Dubrovica on March 20, 2019, 04:05:25 PM
Сделать threshold (меньше 30-и дней в секндах или наоборот в скрипте трансформации переводить в дни) в DCI (HTTPS.CertificateExpireDate(netxms.org)) со своим кастомным Event и в EPP просисать что на этот Event нужно генерить Alarm с правильным сообщением.
Вот это как раз мне понятно.

Я наверно не совсем корректно написал, попробую еще раз.

1. Про external parameter. Если я правильно понял, в конфиге агента c:\NetXMS\etc\nxagentd.conf я должен прописать строчку с
ExternalParameter = "что-то"
Вот синтаксис этого "что-то" я не могу понять. Я честно прочитал в мануале раздел 6.9 несколько раз, но что-то никак не могу уразуметь это, в голове каша какая-то.

Вот openssl у меня на винде нет, ставить его везде как-то не очень правильно, зато есть повершелл. Я могу запустить скрипт на повершелле, прочитать сертификаты, найти истекший и вернуть что-то. Цифру или строку или еще что-нибудь. Вопрос, как это передать в NetXMS.
Что-то типа того должно быть?
ExternalParameter = HTTPS.CertificateExpireDate(*): powershell.exe -file "\\Scripts\test.ps1"

Но что-то оттуда передать, из скрипта этого, в NetXMS? Не могу понять.

2. Допустим, с пунктом 1 я справился, вопрос, как добавить счетчик? Нужно создавать новый параметр?
Вот при создании нового параметра, в поле "Origin" что я должен выбрать? NetXMS Agent? Или что-то другое?
Или просто в Parameter прописать имя своего созданного External Parameter? HTTPS.CertificateExpireDate(*) - вот это имя внешнего параметра? Так и писать с этой звездочкой?

#12
Quote from: Victor Kirhenshtein on July 17, 2018, 04:53:56 PM
Можно сделать external parameter на агенте с использованием команды openssl. Обсуждалось в английском форуме: https://www.netxms.org/forum/configuration/monitoring-ssl-certificate-expiry/
Прочитал, не не понял, если честно, про этот external parameter, как его подружить с NetXMS.
То, что мы вытаскиваем оттуда дату, это понял. Количество секунд, понятно. Но сделать, чтобы при определеном условии (меньше 30-и дней) из этого создался алерт в NetXMS, что-то не могу понять.

#14
Добрый день.

Есть задача на каком-то количестве серверов Windows мониторить сертификаты на предмет истечения их срока. Т.е., если до конца срока осталось менее 30-и дней, например, то генерить алерт. Такое возможно в NetXMS?
#15
Так, для systemd несколько по другому, судя по всему, нашел такую тему: https://www.netxms.org/forum/configuration/netxmsd-and-nxagentd-does-not-auto-start-centos7/msg22433/#msg22433

Quotefile location: /etc/systemd/system/netxms-agent.service

Code: [Select]

[Unit]
Description=NetXMS Monitoring Agent

[Service]
Type=forking
ExecStart=/usr/local/bin/nxagentd -d

[Install]
WantedBy=multi-user.target


and after:

systemctl enable netxms-agent
systemctl start netxms-agent

Попробую так.