Содержание

Zabbix Server на OmniOS v11 r151040g [SunOS omnios 5.11 omnios-r151040-d75907718a i86pc i386 i86pc]

Задумался я на досуге о том что мне нужно средство для мониторинга моего сервера. Начал прикидывать различные варианты, и пришел к выводу, что Zabbix - это то что мне нужно. Самым простым решением было бы развернуть его в каком-нибудь контейнере на базу Ubuntu, и возможно я бы так и сделал, если бы в этот же период времени я не решил посмотреть на Oracle Solaris 11.4. В результате она мне очень понравилась своей стройностью с точки зрения организации внутреннего окружения и я подумал - “а не развернуть ли сервер Zabbix на ней?”. В общем, у меня это уже почти получилось, но обнаружилаь досадная вещь - чтобы получать актуальные обновления системы необходима подписка на “Oracle Support”, которая не бесплатная, а в открытом доступе только репозиторий с пакетами 2018 года выпуска. Но на этом мой интерес к SunOS не угас. Я решил погуглить на тему существования “open source” проектов, что привело меня к OmniOS. Установив ее на ВМ и оценив содержимое её репозитория пакетов я был приятно удивлен, что версии пакетов программ соответствуют актуальным на текущий момент. Единствнное, что в этой ОС мне показалось необычным - это то, что при установки пакетов все их окружение отделено префиксом opt/ooce. Т.е. если взять для примера пакет сервера Apache HTTP Server, то пути связанные с ним будут выглядеть так:

  • /etc/opt/ooce/apache-2.4/ - настройки
  • /opt/ooce/apache-2.4 - бинарники, библиотеки, маны и т.п.
  • /var/opt/ooce/apache-2.4 - рабочая папка сервиса
  • /var/log/opt/ooce/apache-2.4 - логи

Что по началу мне показалось не очень удобным, но в результате даже понравилось тем, что можно четко видеть все окружения пакетов которые были установлены отдельно. Итог такой, что развернув Zabbix и настроив все что с ним связано, мне этот опыт показался весьма полезным и полученны результат весьма удовлетворителным. С точки зрения использования ресурсов данная систем показала себя так же хорошо, на мой взляд. Но статья не об этом, т.ч. перейду описанию настройки сервиса.

1 Установка пакетов

На этом шаге все в общем-то просто ставим для удобства:

1
2
3
pkg install nano
pkg install application/mc
pkg install ntp

Для сервера Zabbix ставим:

1
2
3
4
5
pkg install apache-24
pkg install php-74
pkg install database/mariadb-106
pkg install zabbix-server
pkg set-mediator -I mariadb zabbix

И сразу же запустим сервис NTP, чтобы время синхронизировалось из интернета:

1
svcadm enable ntp

По установке пакетов для Zabbix, хочется казать, что если устанавливать только zabbix-server, то можно увидеть что вместе с ним в папке /opt/ooce появятся и зависимые приложения, но за одним исключением, у них отсутствуют манифесты для запуска сервисов, т.ч. нужно ставить именно так. Думаю - можно удалить лишнее после установки, если пытаться довести все до совершенства.

2 Настрока Apache HTTP Server

Для начала создадим файл конфигурации позволяющий Apache взаимодействовать с PHP:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
cat <<EOF > /etc/opt/ooce/apache-2.4/extra/httpd-php.conf
<IfModule proxy_fcgi_module>
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/opt/ooce/php/run/www-7.4.sock|fcgi://localhost/opt/ooce/zabbix/ui/
DirectoryIndex /index.php index.php
</IfModule>

<IfModule unixd_module>
User php
Group php
</IfModule>
EOF

Далее внесем правки в файл конфигурации самого Apache:

1
2
3
4
5
6
7
sed -i '/LoadModule proxy_module/s/^#//g' /etc/opt/ooce/apache-2.4/httpd.conf
sed -i '/LoadModule proxy_fcgi_module/s/^#//g' /etc/opt/ooce/apache-2.4/httpd.conf
sed -i 's/old-text/new-text/g'
sed -i 's/\/var\/opt\/ooce\/apache-2.4\/htdocs/\/opt\/ooce\/zabbix\/ui/g' /etc/opt/ooce/apache-2.4/httpd.conf
sed -i 's/\/var\/opt\/ooce\/apache-2.4\/cgi-bin/\/opt\/ooce\/zabbix\/ui\/cgi-bin/g' /etc/opt/ooce/apache-2.4/httpd.conf
chown php:php /opt/ooce/zabbix/ui/conf
echo 'Include /etc/opt/ooce/apache-2.4/extra/httpd-php.conf' >> /etc/opt/ooce/apache-2.4/httpd.conf

3 Настройка PHP

Для соответствия настроек PHP требованиям web-интерфейса Zabbix необходимо сделать следующие правки:

1
2
3
4
5
sed -i '/post_max_size/s/=.*/= 16M/' /etc/opt/ooce/php-7.4/php.ini
sed -i '/max_execution_time/s/=.*/= 300/' /etc/opt/ooce/php-7.4/php.ini
sed -i '/max_input_time/s/=.*/= 300/' /etc/opt/ooce/php-7.4/php.ini
sed -i '/;date.timezone/s/.*/date.timezone = UTC/' /etc/opt/ooce/php-7.4/php.ini
sed -i '/mysqli.default_socket/s/.*/mysqli.default_socket = \/tmp\/mysql-10.6.sock/' /etc/opt/ooce/php-7.4/php.ini

4 Настройка MySQL (MariaDB)

Сами настройки сервиса MariaDB можно не трогать, а вот базу данных надо. Для настройки БД необходимо сначала запустить сервис, который создаст системную БД и изменить базовые настройки безопасности. Запускаем:

1
svcadm enable mariadb106

Ждем пока он станет online:

1
svcs mariadb106

После чего запускаем скрипт mysql_secure_installation в котором задаем пароль для пользователя root, а на все остальные вопросы отвечаем утвердительно.

Далее запускаем в консоли mysql, создаем БД и пользователя для нее:

1
2
3
CREATE DATABASE zabbix_server CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON zabbix_server.* to 'zabbix'@localhost IDENTIFIED BY 'strongZabbixPassword';
FLUSH PRIVILEGES;

Теперь, выходим из клиента MySQL и импортируем начальную структуру БД Zabbix:

1
2
3
4
mysql -uzabbix -pstrongZabbixPassword zabbix_server < /opt/ooce/zabbix/sql/mysql/schema.sql
mysql -uzabbix -pstrongZabbixPassword zabbix_server < /opt/ooce/zabbix/sql/mysql/images.sql
mysql -uzabbix -pstrongZabbixPassword zabbix_server < /opt/ooce/zabbix/sql/mysql/data.sql
mysql -uzabbix -pstrongZabbixPassword zabbix_server < /opt/ooce/zabbix/sql/mysql/double.sql

Примечание: импортирование схемы может занять ощутимое колличество времени, по этому нужно дождаться окончания исполнения комманды.

И так: окружение для запуска фронтенда подготовлено, можно переходить к следующему шагу.

5 Настрока Zabbix Server и Zabbix Agent

Редактируем файл настроек /etc/opt/ooce/zabbix/zabbix_server.conf, в котором нас интересуют параметры подключения к БД, а именно:

1
2
3
4
5
DBHost=localhost
DBName=zabbix_server
DBUser=zabbix
DBPassword=strongZabbixPassword
DBSocket=/tmp/mysql-10.6.sock

Настроки Zabbix Agent можно оставить без изменений.

Теперь можно запустить Zabbix Server и Zabbix Agent:

1
2
svcadm enable zabbix:server
svcadm enable zabbix:agent

Убедиться что сервисы находятся online и отсутствии ошибок в логе сервера:

1
2
svcs zabbix
tail -f /var/opt/ooce/zabbix/zabbix_server.log

Если все нормально, то в логе можно увидеть как сервер уже начинает собирать метрики самого себя.

6 Настрока web-интерфейса Zabbix

Я намеренно не запускал службы http и php74 (она же php-fpm), чтобы они не висели когда к ним никто не обращается. Теперь их можно запустить:

1
2
svcadm enable php74
svcadm enable http:apache24

Теперь открываем в браузере страницу нашего сервера - http://<name_or_ip_address>, вписываем параметры БД, параметры сервера оставляем как есть, задаем параметры часового пояса и нажимаем кнопку завершения.

На этом настройка web-интерфейса закончена. Остается только авторизоваться и поменять пароль администратора. По умолчанию, это логин: Admin, пароль: zabbix.

На этом процесс настройки можно считать законченным. Дальнейшие настройки мониторинга это уже совсем другая история.

Послесловие

Не знаю как Вы, но я лично считаю, что OmniOS - это просто находка на сегодняшний день. В конце процесса установки вся система вместе с сервисами у меня занимала всего 877,43Мб и это очень мало, на мой взгляд, для полноценной, а не контейнерной ОС. Утилизация процессора, с учетом что ВМ запущена на одном ядре с одним потоком всего 10%, общий расход памяти чуть менее 1Гб. И все это с работающим сервером Zabbix. В общем я остался очень доволен, надеюсь что и Вы тоже останитесь, если начнете ей пользоваться.