Установка ZABBIX из исходников - Ubuntu Server

Чем отличается данная статья от множества других на просторах интернета? В данном материале помимо процесса установки Zabbix из исходных кодов, Вы найдете решения ряда известных проблем. Например: отправка 3 смс на одно событие (вместо одного смс сообщения); правильная настройка скриптов автозапуска (при установке из исходников это делается в ручную); публикация frontend на веб сервере Apache2; описаны варианты компиляции Zabbix а также необходимые пакеты окружения. Данный материал является полностью работоспособной инструкцией в рамках версий программного обеспечения указанного в статье.

Установка Zabbix будет происходить на подготовленный и настроенный сервер (Ubuntu Server 14.04 LTS). Для работы Zabbix нам потребуется установленный и настроенный WEB сервер.

Внимание! Вышла новая версия Zabbix 3.0 LTS

Установка и настройка Zabbix 3.0

 

Настройка хостовой машины

В данной статье я использую имя хоста zabbix.local, IP-адрес 192.168.13.50 и шлюз 192.168.13.241 эти параметры могут отличаться от Ваших, поэтому придется заменить их на свои.

Веб интерфейс Zabbix будет доступен в локальной сети по ip - 192.168.13.50; по именам zabbix.local и www.zabbix.local (для обращения к веб интерфейсу по имени у Вас должны быть указанны соответствующие параметры на DNS сервере, либо в файле hosts Вашей локальной машины).


Получение привилегий ROOT

Так как дальнейшая настройка системы и установка сервисов Zabbix потребует привилегий супер пользователя root, рассмотрим более подробно данный вопрос.

Просто добавьте sudo перед Вашей командой она будет выполнена от имени пользователя root. Например обновим систему:

sudo apt-get update

sudo apt-get dist-upgrade

Можно воспользоваться командой sudo su, она позволит Вам приключиться на пользователя root внутри терминала (не активируя его).

sudo su

Вы также можете полностью активировать пользователя root (по умолчанию отключен в Ubuntu):

sudo passwd root

и указать пароль. После этого можно войти в систему как root, но это не одобряется разработчиками Ubuntu и сообществом по различным причинам.

Созданный по умолчанию пользователь в Ubuntu (при установке системы) может решать все административные задачи через sudo. Активировать пользователя root для доступа к системе мне кажется не обоснованным решением.


Установка SSH

Если Вы не установили OpenSSH сервер во время установки системы, Вы можете сделать это сейчас:

sudo apt-get install ssh openssh-server

С этого момента Вы можете использовать SSH клиента, такого как PuTTY и связаться с Вашей машиной Ubuntu server 14.04.

Если вы хотите использовать пользователя root отредактируйте sshd_config:

Созданный по умолчанию пользователь в Ubuntu (при установке системы) может решать все административные задачи через sudo. Создавать возможность root доступа по SSH мне кажется не обоснованным решением.

sudo nano /etc/ssh/sshd_config

Необходимо внести только одно изменение (выделено красным):

PermitRootLogin yes

Внимание! Неправильно настроенный SSH-сервер — серьезная уязвимость в безопасности системы. В данной статье SSH сконфигурирован  (по умолчанию) для  удобства настройки системы  и не является безопасным! Рекомендую Вам  ознакомиться со статьей  «Установка и настройка SSH – Ubuntu»  в ней Вы найдете несколько полезных примеров для повышения безопасности подключения по SSH.


Настройка сети

Поскольку установка Ubuntu настроила систему на получение настроек сети через DHCP, то сейчас мы должны изменить это, что бы сервер имел статический IP-адрес. Отредактируем /etc/network/interfaces и настроим его под свои нужды (в данном примере установки я буду использовать IP-адрес 192.168.13.50):

sudo nano /etc/network/interfaces

Настраиваем сетевые параметры:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address 192.168.13.50
    netmask 255.255.255.0
    network 192.168.13.0
    broadcast 192.168.13.255
    gateway 192.168.13.241
    dns-nameservers 192.168.13.241

Затем отредактируйте /etc/hosts :

sudo nano /etc/hosts

Сделаем что бы файл выглядел следующим образом:

127.0.0.1       localhost
192.168.13.50   zabbix.local

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Отредактируем /etc/hostname:

sudo nano /etc/hostname

Приводим к следующему виду:

zabbix.local

Перезапустим машину для применения всех настроек:

sudo reboot

 

Подготовка окружения


Если Вы не выбирали LAMP при установке Ubuntu Server, следуйте инструкциям ниже.

Установка:

apt-get install lamp-server^

LAMP (Краткое описание)

LAMP — акроним, обозначающий набор (комплекс) серверного программного обеспечения . LAMP назван по первым буквам входящих в его состав компонентов:

Linux — операционная система Linux;

Apache — веб-сервер;

MariaDB / MySQL — СУБД;

PHP — язык программирования, используемый для создания веб-приложений.

Другими словами LAMP - это минимальный набор программного обеспечения, необходимый для работы WEB сервера.

В процессе установки Вам будет предложено ввести пароль пользователя root для MySQL, вводим пароль и подтверждение.

Установим пароль root для MySQL

Для работы Zabbix нам потребутся пакет GD для php5. Этот пакет обеспечивает обработку графики непосредственно из PHP-скриптов. Он поддерживает PNG, JPEG, XPM форматы. Для установки выполним:

apt-get install php5-gd

Также нам нужно подготовить окружение. Для этого установим gcc и make.

apt-get install gcc make

Все процессы демонов Zabbix требуют непривилегированного пользователя. Если демон Zabbix запущен от аккаунта пользователя без привилегий, то он будет работать под этим пользователем.

Однако, если демон запущен из под аккаунта 'root', демон переключится на аккаунт пользователя 'zabbix', который должен существовать. Для создания такого аккаунта пользователя (принадлежащего к своей группе, “zabbix”), выполните:

groupadd zabbix

useradd -r -g zabbix zabbix

 

Получаем исходные коды ZABBIX


Проверяем последнюю доступную версию Zabbix (мой выбор остановился на последней LTS версии 2.2.10):

http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix/

Проверяем имя необходимого архива:

zabbix_2.2.10.orig.tar.gz

Скачиваем:

wget http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix/zabbix_2.2.10.orig.tar.gz

Распаковываем и переходим в директорию:

tar -xvf zabbix_2.2.10.orig.tar.gz

cd zabbix-2.2.10

 

Создаем базу данных ZABBIX в MySQL


Подключаемся к MySQL серверу:

mysql -u root -p

Вводим пароль пользователя root (мы устанавливали его в начале статьи) нажимаем Enter.

Создание базы данных:

CREATE DATABASE `zabbix` CHARACTER SET utf8 COLLATE utf8_general_ci;

Желательно сразу выбрать базу данных mysql, т.к. все настройки дальнешие будут вноситься в нее.

use mysql;

Создаем пользователя zabbix c с паролем Zaq12wsx для базы данных zabbix:

GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'Zaq12wsx' WITH GRANT OPTION;

Отключаемся от MySQL сервера:

quit;

Переходим в каталог с sql скриптами:

cd database/mysql/

Выолняем по очереди (ввод пароя пользователя zabbix в нашем примере Zaq12wsx, нажимаем Enter, и дожидаемся выполнения каждого из скриптов):

 mysql -u zabbix -p zabbix < schema.sql

 mysql -u zabbix -p zabbix < images.sql

 mysql -u zabbix -p zabbix < data.sql

Проверяем:

mysql -u zabbix -p zabbix

SHOW TABLES;

Видем вывод таблиц созданных в результате выполнения скриптов.

Отключаемся

quit;

На этом создание базы данных для Zabbix завершено.

 

Сконфигурируем исходный код


Узнаем возможные варианты компиляции, выполним команду:

./configure --help

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

Описание возможных вариантов компиляции Zabbix и необходимых пакетов

Рассмотрим подробнее секцию Optional Features, точнее ряд ключей:

  • –enable-server Этот ключ включает сборку сервера.
  • –enable-proxy Этот ключ включает сборку прокси. В рамках этой статьи мы не будем его использовать.
  • –enable-agent Этот ключ включает сборку. Так как сервер будет мониторить в т.ч. сам себя, поставим его обязательно.
  • –enable-java Если есть потребность в мониторинге Java, нужна компиляция с этим ключом. Для его использования нам потребуется Java, которую можно поставить командой:

apt-get install default-jdk

  • –enable-ipv6 Ключ включает поддержку ipv6.

Перейдем к секции Optional Packages:

Важно. Сервер не может быть скомпилирован с поддержкой нескольких баз. В рамках данной статьи я опущу ключи, не относящиеся к конфигурации Zabbix + MySQL.

  • –with-mysql[=ARG] Данный ключ укажет, что необходима компиляция с поддержкой MySQL. В нашем случае он обязателен. Если сервер MySQL стоит на отдельном сервере либо не стоит полного MySQL – требуется установка:

apt-get install libmysqlclient-dev

  • –with-jabber[=DIR] Если мы захотим использовать Jabber для уведомлений, укажем этот ключ. Требуется установка:

apt-get install libiksemel-dev libcurl4-openssl-dev

  • –with-libcurl[=DIR] Если мы хотим мониторить Web сервисы, укажем этот ключ. Требуется установка:

apt-get install libcurl4-openssl-dev

  • –with-iodbc[=ARG ] или –with-unixodbc[=ARG] Если мы захотим мониторить базы данных, нам понадобится один из этих ключей в зависимости от окружения. В примере используется iodbc. Требуется установка:

apt-get install iodbc libiodbc2

  • –with-net-snmp[=ARG] или –with-ucd-snmp[=ARG] При использовании проверок SNMP, нам потребуется один из ключей. Так как NET-SNMP является продолжением UCD-SNMP, по возможности используйте его. Требуется установка:

apt-get install libsnmp-dev

  • –with-ssh2[=DIR] Ключ необходим при проверках SSH.
  • –with-openipmi[=DIR] Если нам потребуется мониторинг по IPMI, укажем этот ключ. По возможности избегайте частых проверок по причине тормознутости модулей IPMI (будь то решения от Supermicro или от HP. Требуется установка:

apt-get install libopenipmi-dev

  • –with-ldap[=DIR] Включение поддержки проверок ldap.

 

Мы будем компилировать Zabbix со следующими ключами: --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-jabber. В реальных инсталляциях желательно использовать минимальное количество ключей, чем меньше, тем лучше (только действительно необходимый функционал). Соответственно Вам нужно установить необходимые пакеты из списка выше, иначе компиляция Zabbix выполнена не будет.

В данной конфигурации Вы получите Zabbix server с поддержкой MySQL, Zabbix agent, мониторинг по протоколу SNMP, мониторинг WEB ресурсов, уведомления на Email, SMS оповещения, уведомления с помощью Jabber.

Но приступать к компиляции рано. Если вы планируете использовать СМС оповещения, то стоит обратить внимание на одну известную проблему. В неоторых случаях при отправке сервером Zabbix смс уведомления оно затраивается (на одно событие у Вас приходит 3 смс), что в свою очередь влечет увеличение затрат на мобильную связь. Если Вы не собираетесь использовать смс оповещения можете пропустить правку скрипта sms.c

Zabbix сервер отправляет 3 sms (Решение)

Происходит затраивание смс по разным причинам: 3/4G модемы Huawei не возвращают параметр "OK"; gsm шлюзы EasyGate не возвращают параметр "+CMGS: ". Zabbix не получив ожидаемых ответов от данных устройств выполняет повторную отправку AT комманд. Именно это и является причиной отправки нескольких сообщений на одно собитие.

Итак решение, редактиреум:

nano src/libs/zbxmedia/sms.c

Нас интересует участок кода отвечающий за инициализацию устройства и отправку смс уведомления:

    zbx_sms_scenario scenario[] =
    {
        {ZBX_AT_ESC    , NULL        , 0},    /* Send <ESC> */
        {"AT+CMEE=2\r"    , ""/*"OK"*/    , 5},    /* verbose error values */
        {"ATE0\r"    , "OK"        , 5},    /* Turn off echo */
        {"AT\r"        , "OK"        , 5},    /* Init modem */
        {"AT+CMGF=1\r"    , "OK"        , 5},    /* Switch to text mode */
        {"AT+CMGS=\""    , NULL        , 0},    /* Set phone number */
        {number        , NULL        , 0},    /* Write phone number */
        {"\"\r"        , "> "        , 5},    /* Set phone number */
        {message    , NULL        , 0},    /* Write message */
        {ZBX_AT_CTRL_Z    , "+CMGS: "    , 40},    /* Send message */
        {NULL        , "OK"        , 1},    /* ^Z */
        {NULL        , NULL        , 0}
    };

Приводим его к следующему виду (выделено красным) и сохраняем:

    zbx_sms_scenario scenario[] =
    {
        {ZBX_AT_ESC    , NULL        , 0},    /* Send <ESC> */
        {"AT+CMEE=2\r"    , ""/*"OK"*/    , 5},    /* verbose error values */
        {"ATE0\r"    , "OK"        , 5},    /* Turn off echo */
        {"AT\r"        , "OK"        , 5},    /* Init modem */
        {"AT+CMGF=1\r"    , "OK"        , 5},    /* Switch to text mode */
        {"AT+CMGS=\""    , NULL        , 0},    /* Set phone number */
        {number        , NULL        , 0},    /* Write phone number */
        {"\"\r"        , "> "        , 5},    /* Set phone number */
        {message    , NULL        , 0},    /* Write message */
        {ZBX_AT_CTRL_Z , "" , 40 }, /* Send message */
        {NULL , "" , 5 },
        {NULL , "" , 5 },
        {NULL , "" , 1 }, /* ^Z */
   
     {NULL        , NULL        , 0}
    };

На этом правка скрипта окончена.

 

Создаем конфигурационный скрипт.

./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-jabber

Если при конфигурировании возникают ошибки, убедитесь, что вы не забыли поставить что-либо из требуемого окружения.

 

Собираем и устанавливаем ZABBIX


Теперь нам осталось только запустить make install.

make install

 

Отредактируем конфигурационные файлы


Отредактируйте файл конфигурации Zabbix агента /usr/local/etc/zabbix_agentd.conf

nano /usr/local/etc/zabbix_agentd.conf

В файле вы должны указать IP адрес Zabbix сервера. Подключения с остальных хостов будут отклонены. Укажите также ListenIP.

****
# Default:
# Server=

Server=192.168.13.50 (IP Вашего сервера)

****
#    Agent will listen on this port for connections from the server.
#

****

# Mandatory: no
# Default:

ListenIP=192.168.13.50 (IP Вашего сервера)

### Option: StartAgents
#    Number of pre-forked instances of zabbix_agentd that process passive checks.

****

Отредактируйте файл конфигурации Zabbix сервера /usr/local/etc/zabbix_server.conf

nano /usr/local/etc/zabbix_server.conf

Вы должны указать имя базы данных, пользователя и пароль.

****
# Default:
# DBName=

DBName=zabbix

### Option: DBSchema
#    Schema name. Used for IBM DB2.

****
# Default:
# DBUser=

DBUser=zabbix

### Option: DBPassword
#    Database password. Ignored for SQLite.

****
# Default:
# DBPassword=

DBPassword=Zaq12wsx

### Option: DBSocket
#    Path to MySQL socket.

****

 

Автозапуск демонов ZABBIX при старте системы


Скопируем стартовые скрипты с каталога исходного кода zabbix в /etc/init.d

cp misc/init.d/debian/zabbix-server /etc/init.d

cp misc/init.d/debian/zabbix-agent /etc/init.d

Даем права на запуск и помещаем их в стартовый скрипт загрузки операционной системы:

chmod 755 /etc/init.d/zabbix-server

update-rc.d zabbix-server defaults

chmod 755 /etc/init.d/zabbix-agent

update-rc.d zabbix-agent defaults

Перезагрузим систему:

reboot

Проверим запустились ли службы:

ps -aux | grep zabbix

Все необходимые службы работают. Zabbix сервер и Zabbix агент стартуют автоматически при загрузке системы.

 

Устанавливаем веб интерфейс


Создадим каталог где будет расположен веб интерфейс Zabbix:

mkdir /var/www/html/zabbix

Скопируем frontend с исходных кодов в созданный каталог:

cd frontends/php/

cp -a . /var/www/html/zabbix/

Мы подготовили структуру директорий. Теперь для корректной работы Apache необходимо изменить владельца:

chown -R www-data:www-data /var/www/html/zabbix

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

chmod -R 755 /var/www

Создадим конфигурационный файл виртуального хоста:

nano /etc/apache2/sites-available/zabbix.local.conf

Указываем необходимые настройки и сохраняем:

<VirtualHost 192.168.13.50:80>
        # Указав IP сервера этот виртуальный хост становится основным при обращении по IP адресу
        # Email администратора
        # Имя хоста
        # Алиас хоста
        ServerAdmin admin@zabbix.local
        ServerName zabbix.local
        ServerAlias www.zabbix.local
# Корневой каталог хоста
DocumentRoot /var/www/html/zabbix
        # Права доступа к корневому каталогу
        <Directory /var/html/zabbix>
            Options Indexes FollowSymlinks
            AllowOverride All
            Require all granted
        </Directory>
        # Выставляем опции PHP в соответствии с требованиями ZABBIX
        # Не забудьте указать корректный часовой пояс
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value date.timezone Europe/Moscow
        # Тут будут храниться логи
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Для включения виртуального хоста используется утилита a2ensite:

a2ensite zabbix.local

Перезапустим веб сервер:

service apache2 restart

Откройте URL Zabbix в нашем случае 192.168.13.50

Нас встречает помощник установки веб-интерфейса.

Помошник установки веб интерфейса Zabbix

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

Проверяем требования к программному обеспечению

Укажите информацию для подключения к базе данных (база данных - zabbix, пользователь - zabbix, пароль - Zaq12wsx).

Укажите информацию для подключения к базе данных

Введите подробные сведения о сервере Zabbix.

Введите подробные сведения о сервере Zabbix.

Проверим указанные настройки.

Проверяем указанные настройки.

Завершение установки.

Настройка завершена нажмите Finish

Веб-интерфейс Zabbix готов! По умолчанию имя пользователя admin, пароль zabbix.

Веб-интерфейс Zabbix готов!

На этом установка Zabbix из исходных кодов завершена.

Внимание! Вышла новая версия Zabbix 3.0 LTS

Установка и настройка Zabbix 3.0

Раздел: Unix сервера
Top
1 комментарий
Добавить комментарий