Retifff's Blog

Мой ИТ блог

Установка сервера мониторинга NetXMS на Ubuntu Server и MySQL

Posted by Retifff на 29.07.2019

Введение

Вообще, эта статья не для линуксоидов, конечно, они и так разберутся и без неё. Она для тех, кто с Linux на Вы (как и я сам, впрочем). Кто-то предпочтёт поставить NetXMS на Windows + MS SQL, а у кого начальство не одобрит покупку Windows Server специально для сервера мониторинга, к примеру, вот для них эта статья. На абсолютную истину не претендую, я не линуксоид, всё же, однако этот вариант стопроцентно рабочий.

То, к чему мы должны прийти в итоге, после завершения статьи:

Дистрибутив я выбрал Ubuntu Server, потому что для NetXMS он популярнее (если судить по мануалу и по форумам), и разработчики явно больше внимания уделяют именно конфигурации Debian/Ubuntu + MySQL. А значит, найти в Интернете ответы на свои вопросы будет легче.

  1. Установка Ubuntu Server
  2. Установка MySQL
  3. Установка NetXMS
  4. Установка Management Console
  5. Установка веб-консоли NetXMS

Установку Ubuntu подробно описывать я не буду, этой информации в интернете полно, затрону буквально пару нюансов.

1 Установка Ubuntu Server

Нам потребуется, установленный Ubuntu Server (я использовал версию 18.04.2 LTS), нужно будет задать ему имя (netxms, например), статический IP-адрес (тот еще квест с непланом этим) и обеспечить разрешение имен в сети.

Задать статический IP-адрес можно во время установки Ubuntu, на шаге 4. Небольшой нюанс, в этой версии, видимо, есть какой-то баг, при вводе Search domains установка запускается заново, поэтому это поле не заполняем:

Придётся его настроить после установки. На шаге 7 введите имя сервера, у меня это netxms. Не забудьте установить SSH-сервер, хотя можно поставить и после установки:

Больше мне про установку нечего сказать. Единственно что, я предпочитаю search domains прописать, чтобы разрешение имен по короткому имени нормально работало. Хотя это и необязательно, по полному тоже устроит. Для этого, после завершения установки и логина в сиcтему редактируем файл 50-cloud-init.yaml :

 sudo nano   /etc/netplan/50-cloud-init.yaml

Добавляем строку с нашим доменом AD, в моем случае это search: [corp.testcompany.ru]. Перед ней только пробелы, табы не подойдут:

network:
    ethernets:
        ens33:
            addresses:
            - 192.168.1.56/24
            gateway4: 192.168.1.1
            nameservers:
                search: [corp.testcompany.ru]
                addresses:
                - 192.168.1.51
    version: 2

После сохранения нужно выполнить:

sudo netplan apply

После этого разрешение имен должно работать по короткому имени.

2 Установка MySQL

Приступаем к установке MySQL. Обновляем списки пакетов:

sudo apt-get update

Дальше нужно установить и настроить MySQL. Устанавливаем MySQL:

sudo apt-get install mysql-server

Проверяем статус сервиса:

systemctl status mysql

Сервис должен быть enabled и active (running). Войти в MySQL можно следующей командой:

sudo mysql -u root

Должно появиться приглашение >mysql. Для проверки, можно ввести команду show databases; к примеру. Не забудьте точку с запятой (;). Будет примерно такая картина:

Для выхода из mysql нужно ввести exit.

Дальше, почему-то по умолчанию в MySQL базы создаются не в UTF8. Нас это никак устроить не может, так как с русским языком в NetXMS могут быть проблемы (при создании своих эвентов, описаний к ним и т.п., к примеру). Поэтому подготавливаем MySQL. Создаем файл:

sudo nano /etc/mysql/mysql.conf.d/encoding.cnf

В файле пишем следующее, чтобы все базы по дефолту создавались в UTF8:

[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
init-connect = "SET NAMES utf8 COLLATE utf8_unicode_ci"

Рестартуем сервис mysql:

sudo systemctl restart mysql

Всё, теперь все базы будут создаваться в UTF8.

3 Установка NetXMS

Дальше приступаем к установке NetXMS наконец-то. Так как пакета NetXMS в репозиториях Ubuntu нет, скачиваем пакет с официального сайта:

wget http://packages.netxms.org/netxms-release_1.2_all.deb

Устанавливаем пакет в систему:

sudo dpkg -i netxms-release_1.2_all.deb

И наконец устанавливаем NetXMS:

sudo apt-get install netxms-server

Обратите внимание, что инсталлятор пишет, что NetXMS сервер установлен, но не запущен и информирует о дополнительных шагах после установки. Нас интересует строчка с MySQL, естественно:

************
NetXMS server is installed but currently stopped.
Additional steps required:
1. Edit default configuration file (/etc/netxmsd.conf)
2. Load database schema (replace DBTYPE with proper name):
   nxdbmgr init /usr/share/netxms/sql/dbinit_DBTYPE.sql
   Example:
      SQLite:
        nxdbmgr init /usr/share/netxms/sql/dbinit_sqlite.sql
      PostgreSQL:
        nxdbmgr init /usr/share/netxms/sql/dbinit_pgsql.sql
      MySQL:
        nxdbmgr init /usr/share/netxms/sql/dbinit_mysql.sql
      Oracle:
        nxdbmgr init /usr/share/netxms/sql/dbinit_oracle.sql
then start daemon with command:
   service netxmsd start
************

Но сначала мы установим драйвер подключения NetXMS к MySQL:

sudo apt-get install netxms-dbdrv-mysql

А после этого уже правим netxmsd.conf — файл конфигурации NetXMS:

sudo nano /etc/netxmsd.conf

В нем раскомментируем строки, касающиеся MySQL:

## Option #3 - MySQL:
DBDriver=mysql.ddr
DBServer=localhost
DBName=netxms
DBLogin=netxms
DBPassword=Password1

В DBPassword задайте какой-нибудь пароль для коннекта к базе netxms.

Дальше, так как автоматом база почему-то не создается, создаем базу netxms вручную:

echo "CREATE DATABASE netxms;" | sudo mysql -u root -p

Если поcле установки, вы, как и я здесь в статье, не устанавливали пароль для доступа к mysql, то ключи -p можно опустить. А если вы по какой-то причине не хотите, чтобы все базы MySQL создавались в UTF8, то можно в UTF8 создать только базу netxms:

create database netxms DEFAULT CHARACTER SET utf8;

При желании можно проверить командой show create database netxms;, действительно ли база создалась в кодировке UTF8. Зайти в mysql для этого сначала, естественно:

mysql> show create database netxms;
+----------+-----------------------------------------------------------------------------------------+
| Database | Create Database                                                                         |
+----------+-----------------------------------------------------------------------------------------+
| netxms   | CREATE DATABASE `netxms` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |
+----------+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>

У нас всё в порядке с этим. Дальше нужно создать пользователя netxms и выдать ему права на базу netxms. Можно это сделать одной командой:

echo "GRANT ALL on netxms.* to 'netxms'@'localhost' IDENTIFIED BY 'Password1';" | sudo mysql -u root

Всё, базу netxms мы создали, права выдали, теперь её можно инициализировать командой, любезно подсказанной нам инсталлятором:

sudo nxdbmgr init /usr/share/netxms/sql/dbinit_mysql.sql

Убеждаемся, что база инициализирована успешно. Вроде всё? Однако, если мы посмотрим статус сервиса:

systemctl status netxmsd

То увидим, что он не запущен сейчас (как, собственно, и предупреждал инстяллятор) и не стартует автоматически при загрузке системы, поэтому нужно это исправить:

sudo systemctl enable netxmsd
sudo systemctl start netxmsd

Еще раз проверяем:

systemctl status netxmsd

С сервером разобрались, но ещё на самом сервере есть агент Netxms, у которого, если посмотреть его статус:

systemctl status nxagentd

тоже окажется, что он не запущен и не стартует автоматически при загрузке системы. Аналогично исправляем:

sudo systemctl enable nxagentd
sudo systemctl start nxagentd

Снова проверяем статус:

systemctl status nxagentd

Теперь порядок. Еще можно проверить конфигурацию агента, убедиться, что там указан правильный IP-адрес в параметре MasterServers, как минимум. Проверить можно командой:

cat /etc/nxagentd.conf

Файл конфигурации агента должен иметь примерно такое содержимое:

# Log File
LogFile=/var/log/nxagentd

# IP white list, can contain multiple records separated by comma.
# CIDR notation supported for subnets.
MasterServers=127.0.0.0/8,192.168.1.55
LogFile =/var/log/nxagentd.log
FileStore = /var/netxms

4 Установка Management Console

Для подключения к серверу NetXMS и, собственно, управления им, надо поставить управляющую java-консоль. Cкачиваем её со страницы https://www.netxms.org/download/, на момент написания статьи это nxmc-2.2.16-win32-x64.zip. И не забыть скачать и установить Java JRE.

Это на Windows. На десктопной Linux (Ubuntu в моем случае) несколько больше телодвижений:

  • Устанавливаем Java 8 JRE:
sudo apt-get install openjdk-8-jre
  • Скачиваем консоль:
wget https://www.netxms.org/download/releases/2.2/2.2.16/nxmc-2.2.16-linux-gtk-x64.tar.gz
  • Распаковываем моем случае в каталог /home/user/nxmc:
tar zxvf nxmc-2.2.16-linux-gtk-x64.tar.gz

Если запустить /home/user/nxmc/nxmc сейчас, то получим такую ошибку:

В логе видно, что используется Java вовсе не 8-я, а 11-я, к примеру (как у меня). Для консоли же нужна 8-я.

  • Поэтому мы просто создадим создаем символическую ссылку jre в каталоге /home/user/nxmc/ на каталог с установленной Java 8 JRE:
ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre /home/user/nxmc/jre
  • Вот так будет работать. При первом запуске будет предложено сменить дефолтовый пароль на свой:
  • Меняем и наконец-то заходим в консоль управления NetXMS:

В принципе всё готово, но есть смысл еще веб-консоль поставить.

5 Установка веб-консоли NetXMS

  • Сначала нужно установить tomcat9 (в мануале указан 7-й, но лучше ставить последний):
sudo apt-get install tomcat9
  • Затем скачиваем саму веб-консоль:
wget https://www.netxms.org/download/releases/2.2/2.2.16/nxmc-2.2.16.war
  • Переименовываем её для удобства в nxmc.war, потому что именно это имя будет фигурировать в адресе веб-консоли:
mv nxmc-2.2.16.war nxmc.war
  • Копируем в каталог webapps томката:
sudo cp nxmc.war /var/lib/tomcat9/webapps/
  • Ждем несколько секунд, томкат автоматически установит всё сам и заходим по ссылке:

http://netxms.corp.testcompany.ru:8080/nxmc/

  • Не забудьте слеш на конце, без него не получится. После ввода логина и пароля попадаем в веб-консоль:

В Firefox почему-то не отображается меню переключения языков и часто по умолчанию ставится язык страны, указанной в операционной системе. Поэтому, для английского языка интерфейса нужно добавить ?lang=en к адресу:

http://netxms.corp.testcompany.ru:8080/nxmc/nxmc?lang=en

На этом всё, про установку и настройку агентов, примеры настройки счетчиков в следующей статье.

комментариев 19 к “Установка сервера мониторинга NetXMS на Ubuntu Server и MySQL”

  1. Victor said

    большое спасибо !
    самый лучший manual!
    установил все как в статье все работает.
    хотелось бы статью по настройке.

  2. Radiohead said

    А почему вы агента не поставили? Он автоматом подхватит ваш сервер netxms и вам станет доступна различная статистика по работе сервера.

  3. Radiohead said

    Кстати по поводу русского языка. В веб консоли можно переключить на русский и он нормально работает. А вот в обычной консоли русский почему-то не работает…

    • retifff said

      Только что специально проверил, нормально работает и там и там.

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

  4. Radiohead said

    Если интересно, могу еще подсказать как сделать соединение agent-to-server для удаленных сетей. И вроде-бы даже с шифрованием) Это удобней чем server-to-agent…

    • retifff said

      Интересно, лишнее знание не помешает никогда 🙂

      На самом у меня есть сейчас нерешенный пока вопрос с прокси. Есть другая площадка, на который свой DMZ, а в DMZ есть серверы, которые хотелось бы мониторить. И к ним нет прямого доступа от сервера NetXMS на первой площадке. Попытался настроить в качестве прокси один из серверов на второй площадке, но пока что-то безуспешно.

  5. Radiohead said

    Там на самом деле все просто если знать как. И есть одна тонкость)
    В удаленной сети ставите агента. В конфете агента надо прописать:
    ServerConnection = айписервера
    MasterServers = айписервера
    EnableProxy = yes
    EnableSNMPProxy = yes
    SubAgent = ping.nsm
    Первая строка говорит агенту куда стучать, вторая позволит удаленно обновлять/конфигурить/перегружать агента, третья/четвертая говорит что надо еще и прокси (но возможно будет работать и без них) и пятая строка нужна что-б работал network discovery в удаленной сети.
    Все. Со стороны агента больше ничего не надо.
    Со стороны сервера — на роутере пробросить порт 4703 TCP на сервер netxms
    Создать сертификаты. Тут я не спец. Создавал командами «openssl genrsa -out ca.key 2048» и потом «openssl req -x509 -new -nodes -key ca.key -sha256 -days 10240 -out ca.pem»
    Далее два полученных файла ca.key и ca.pem надо объединить в один с расширением .pem И вот тут — ТОНКОСТЬ! Важно что-б в итоговом файле СНАЧАЛА шла секция Сертификат а ПОТОМ Private key. Если будет наоборот — ничего не заработает) Много крови попила эта тонкость)
    Команда для объединения файлов «cat ca.pem ca.key > netxms.pem
    Если ca.pem и ca.key поменять местами — получите болт)
    Дальше все просто.
    В конфиге сервера добавляете строки что-то типа:
    ServerCACertificate = C:\NetXmsServer\etc\cert\netxms.pem
    ServerCertificate = C:\NetXmsServer\etc\cert\netxms.pem
    Пути к файлу соотвественно ваши.
    Все.
    Перезапускаем агента и сервер. В логах сервера должна всплыть строка про сертификат что сервер его типа нашел.

    Дальше идем в консоль сервера — Configuration — Agent Tunnel Manager и через пару минут там должна появится строка с айпишником агента, версией и прочей лабудой. Ура! Агент создал тоннель к серваку. Если нет — смотреть что не так.
    Если агент появился — создаем Зону с названием удаленной сети.
    Потом создаем Ноду с названием сервака на котором стоит агент. Айпишник можно оставить пустой или 0.0.0.0 В свойствах ноды в принципе можно ничего не менять кроме нижней строки. В качестве Зоны указать вашу вновь созданную удаленную Зону.
    Потом в свойствах вашей новой зоны — Commenications указать в качестве прокси вашу новую пустую Ноду.
    Потом Configuration — Agent Tunnel Manager — ПКМ на агенте и Bind. Забиньдить на вашу пустую ноду.
    Теперь если запустить network discovery с параметрами вашей удаленной сети, обнаруженные ноды будут падать сразу в вашу новую зону.
    Вроде ничего не забыл)

    Да, есть небольшая инструкция на английском — https://tickett.wordpress.com/2018/06/06/netxms-agent-to-server-connection-tunnel/

  6. Radiohead said

    Будет круто если сделаете инструкцию с картинками!
    Просто потому что я сам периодически забывают как это все делать а посмотреть негде)
    Есть еще вариант когда сервер стучит агентам (server-to-agent) но лично я от него отказался. Когда удаленных сетей много — надо в каждой пробрасывать порты, а много открытых портов завсегда плохо. Плюс удаленные роутеры иногда почему-то перестают пропускать запросы от сервера к агентам. И самое главное — если у удаленной сети динамический айпишник — при его смене сервер надолго теряет сеть или вообще ее не видит.
    Кстати в моих удаленных сетях проксирующие агенты работают вообще под докером) И ничего… Все работает и даже не падает!

    • retifff said

      Ну, почему бы не сделать это самому? ) Видео-то с докером на Synology записать получилось? 🙂
      Я, боюсь, доберусь до этого не скоро.

  7. Алексей said

    Добавлю 5 копеек. Victor Kirhenshtein — создатель и разработчик на форуме писал, что рекомендуемая СУБД на данный момент — это postgresql, либо его модификация, адаптированная под хранение временных рядов (как раз случай мониторинговой системы) — timescaledb. Если вы добавите объектов 50-70 в мониторинг и маломальски добавите метрик, система будет генерировать немалое количество инсертов в БД, размер базы при этом будет неслабо расти. У меня при 93 добавленных устройствах за два месяца сбора данных размер БД вырос до 23ГБ, то есть при стандартном времени хранения данных в 6 месяцев, размер БД превысит 60ГБ. С таким объемом MySQL будет справляться не так хорошо.

  8. Myers said

    Самый понятный и рабочий гайд которую я видел про netxms, у разрабов с этим туго, для новичков в линуксе этот гайд в самый раз!

  9. Radiohead said

    Перестала работать инструкция. Убунта 20.10 и последняя версия нетхмс. echo «GRANT ALL on netxms.* to ‘netxms’@’localhost’ IDENTIFIED BY ‘Password1’;» | sudo mysql -u root — не работает…

  10. Radiohead said

    Короче пообщался в телеге с разрабами. MySQL теперь не вариант. Они даже «дрова» под 20-ю убунту не стали собирать. Теперь только постгри. Ну или оракл)
    В общем под убунту 20.10 нужна совершенно другая инструкция)

  11. Radiohead said

    Теперь для MySQL вместо netxms-dbdrv-mysql надо использовать netxms-dbdrv-mariadb
    В конфиге в секции MySQL соответственно прописать DBDriver=mariadb.ddr

  12. Radiohead said

    И вместо sudo nxdbmgr init /usr/share/netxms/sql/dbinit_mysql.sql теперь просто sudo nxdbmgr init

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

 
%d такие блоггеры, как: