Zabbix, если его ставить из appliance или пакетными менеджерами по-умолчанию, обладает проблемами с масштабируемостью. Поставить его просто и просто начать работу, но решение будет не масштабируемым и потом, при расширении системы, потребуется много работы по замене сервера БД на Postgres, выносе БД на отдельный хост, запуске failover-кластера.
Есть свободная платформа виртуализации Proxmox, в которой помимо полной виртуализации qemu есть контейнеры OpenVZ - аналог Solaris Zones. Контейнеры позволяют запускать множество систем на одном ядре с малыми накладными расходами. Proxmox позволяет легко бэкапить зоны, поддерживает Live Migration и кластера.
PostgreSQL устойчивее чем MySQL при высоких нагрузках, тоже позволяет создавать кластеры.
Результат - без перекомпиляции всех пакетов, при минимуме усилий, получить полностью свободную, легко масштабируемую в дальнейшем, отказоустойчивую конфигурацию Zabbix.
Что хотим получить?
Zabbix, если его ставить из appliance или пакетными менеджерами по-умолчанию, обладает проблемами с масштабируемостью. Поставить его просто и просто начать работу, но решение будет не масштабируемым и потом, при расширении системы, потребуется много работы по замене сервера БД на Postgres, выносе БД на отдельный хост, запуске failover-кластера.
Есть свободная платформа виртуализации Proxmox, в которой помимо полной виртуализации qemu есть контейнеры OpenVZ - аналог Solaris Zones. Контейнеры позволяют запускать множество систем на одном ядре с малыми накладными расходами. Proxmox позволяет легко бэкапить зоны, поддерживает Live Migration и кластера.
PostgreSQL устойчивее чем MySQL при высоких нагрузках, тоже позволяет создавать кластеры.
Результат - без перекомпиляции всех пакетов, при минимуме усилий, получить полностью свободную, легко масштабируемую в дальнейшем, отказоустойчивую конфигурацию Zabbix.
1. Ставим proxmox из бандла c cd - https://www.proxmox.com/en/downloads
2. Скачиваем шаблон Debian 7 из https://openvz.org/Download/template/precreated
3. Создаем 2 контейнера OpenVZ для базы данных и сервера/фронтенда.
4. Грузим контейнеры, подключаемся к ним по ssh.
5.По мануалу ставим репозитарии в каждом контейнере.
root@zbx-srv:~# wget http://repo.zabbix.com/zabbix/2.4/debian/pool/main/z/zabbix-release/zabbix-release_2.4-1+wheezy_all.deb ... 2015-10-23 07:46:25 (466 KB/s) - `zabbix-release_2.4-1+wheezy_all.deb' saved [2786/2786] root@zbx-srv:~# dpkg -i zabbix-release_2.4-1+wheezy_all.deb ... Setting up zabbix-release (2.4-1+wheezy) ... root@zbx-srv:~#
6.Ставим инсталляцию на оба сервера
root@zbx-db:~# dpkg -i zabbix-release_2.4-1+wheezy_all.deb Fetched 10.7 MB in 6s (1772 kB/s) Reading package lists... Done
7. Ставим полную инсталляцию Postgresql на сервер БД
root@zbx-db:/etc# apt-get install postgresql Reading package lists... Done ... Setting up postgresql (9.1+134wheezy4) ...
И клиента на основной сервер.
root@zbx-srv:~#apt-get install postgresql-client Reading package lists... Done ... Setting up postgresql-client (9.1+134wheezy4) ...
8.На сервере БД ставим пароль на пользователя postgres
root@zbx-db:/etc# su postgres postgres@zbx-db:/etc$ psql psql (9.1.18) Type "help" for help. postgres=# \password postgres Enter new password: Enter it again: postgres=# \q postgres@zbx-db:/etc$ exit exit root@zbx-db:/etc#
9. Ставим zabbix на основном сервере
apt-get install zabbix-server-pgsql zabbix-frontend-php zabbix-agent php5-pgsql php5-ldap snmp-mibs-downloaderНа вопрос о конфигурировании БД отвечаем - No.
10. Копируем скрипты создания БД на сервер БД
root@zbx-db:~# scp root@zbx-srv:/usr/share/zabbix-server-pgsql/* /var/lib/postgresql root@zbx-srv's password: data.sql images.sql schema.sql zabbix_server.conf
11.Создаем базу данных (Порядок выполнения скриптов важен!)
su postgres createdb zabbix postgres@zbx-db:/root$ psql zabbix \i /var/lib/postgresql/schema.sql \i /var/postgresql/images.sql \i /var/lib/postgresql/data.sql \q
12. Даем доступ с основного сервера
Добавляем в /etc/postgresql/9.1/main/postgresql.conf
listen_addresses = '*'
Добавляем в /etc/postgresql/9.1/main/pg_hba.conf
host all all xx.xx.xx.xx/32 trust
где xx.xx.xx.xx - адрес сервера zabbix+frontend
Проверяем:
su postgres postgres@zbx-srv:/root$ psql -h zbx-db could not change directory to "/root" psql (9.1.18) SSL connection (cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256) Type "help" for help. postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+-----------+---------+-------+----------------------- postgres | postgres | SQL_ASCII | C | C | template0 | postgres | SQL_ASCII | C | C | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | SQL_ASCII | C | C | =c/postgres + | | | | | postgres=CTc/postgres zabbix | postgres | SQL_ASCII | C | C | (4 rows) postgres=# \c zabbix SSL connection (cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256) You are now connected to database "zabbix" as user "postgres". zabbix=# \dt Выводятся таблички zabbix=# select * from actions; Выводится содержимое таблички \q
13. Настраиваем сервер на внешнюю базу.
Правим /etc/zabbix/zabbix-server.conf
DBHost=zbx-db
DBName=zabbix
DBUser=postgres
DBSchema=
Перезапускаем сервер
/etc/init.d/zabbix-server restart
Проверяем, что все в порядке в /var/log/zabbix/zabbix_server.log
14. Заходим на веб-морду.
http://zbx-srv/zabbix/
Проходим процесс инсталляции. Если в опциях нет postgresql, значит забыли поставить php5-pgsql. Если потом будем привязывать аутентификацию к OpenLDAP или MS AD, то еще нужен пакет php5-ldap.
Еще пришлось добавить date.timezone = Europe/Moscow (регистр букв важен) в /etc/php5/apache2/php.ini
Заходим под пользователем Admin пароль - zabbix.