Zabbix - інсталяція сервера zabbix

OS: Linux Debian Squeeze.
Application: Zabbix Server 2.0.5.

Інсталюємо і налаштовуємо останню доступну стабільну версію сервера проекту моніторингу Zabbix.

Практично скрізь далі встановлюємо версії системних бібліотек "для розробників", так як Zabbix сервер орієнтований на програмне забезпечення більш свіже, ніж наявне на нашій платформі.

Ми будемо працювати з PostgreSQL; передбачається комплексний моніторинг не менше 700-800 хостів по 10-15 параметрів на кожному з них, можливо, що PostgreSQL впорається з великими обсягами краще, ніж MySQL.
Встановлюємо PostgreSQL сервер перед Zabbix для того, щоб інсталятор Zabbix міг конфігурувати підключення до бази даних в процесі установки:

# Aptitude install postgresql libpq-dev


Встановлюємо SNMP-службу для того, щоб Zabbix міг працювати з обладнанням за відповідним протоколом:

# Aptitude install snmp snmpd libsnmp-dev


Встановлюємо додаткове програмне забезпечення і бібліотеки, які потрібні для коректної компіляції Zabbix сервера:

# Aptitude install fping libcurl4-dev


Встановлюємо утиліту, що збере нам після складання з вихідних кодів пакет, готовий для установки в систему:

# Aptitude install build-essential make checkinstall


Встановлюємо Zabbix-сервер, збираючи його з вихідних кодів з сайту розробників.


Розпаковуємо архів. Переходимо в корінь директорії з вихідними кодами:

# Cd / usr / src
# Tar -xvf zabbix-2.0.5.tar.gz
# Cd ./zabbix-2.0.5


Дивимося, що нового придумали розробники в плані попереднього конфігурації зібраного програми:

# ./configure --no-create --help


Перевіряємо, чи задовольняє наша система залежностей встановлюваного програмного забезпечення:

# ./configure --no-create --prefix = / usr / local --enable-server --disable-agent --disable-java --disable-ipv6 --without-mysql --with-postgresql --with -net-snmp --with-libcurl


В результаті вдалої конфігурації ми повинні отримати звіт як мінімум містить щось на кшталт такого:


Install path: / usr / local
Compilation arch: linux
.
Enable server: yes
With database: PostgreSQL
WEB Monitoring via: cURL
Native Jabber: no
SNMP: net-snmp
IPMI: no
SSH: no
ODBC: no
Enable proxy: no
Enable agent: no
Enable Java gateway: no
LDAP support: no
IPv6 support: no


Якісь позиції, на кшталт підтримки IPMI, LDAP і IPv6 будуть неактивні, але в спрощеній збірці для моніторингу всього лише мережі на тисячу одиниць активного устаткування нам вони і не потрібні.

Запускаємо конфігурація заново, на цей раз прибравши ключ "--no-create". До цього ми перевіряли задоволення залежностей, а тепер зробимо реальне конфігурація пакета.

Компілюємо попередньо налаштований продукт:

# Checkinstall -D --install = no --pkggroup = Zabbix --pkgname = zabbix-server-postgresql --pkgversion = 2.0.5 --pkgrelease = 0.1 --pkgsource = zabbix.com --maintainer = mail @ example. net make install


На виході утиліти отримуємо готовий пакет, покладений в директорії з вихідними кодами, якщо не було інших вказівок на шлях збереження. Встановлюємо отриманий пакет:

# Dpkg -i ./zabbix-server-postgresql_2.0.5-0.1_amd64.deb


Отже, Zabbix-сервер зібраний з вихідних кодів і встановлено в файлової системі. Створимо тепер умови для його запуску.

Заводимо користувача, від імені якого буде працювати сервер Zabbix (при запуску від імені "суперкористувача" додаток zabbix саме себе перемкне на роботу в середовищі зумовленого користувача "zabbix", якщо такий доступний, звичайно - ніяких додаткових дій для цього робити не потрібно):

# Groupadd zabbix
# Useradd --home-dir / var / lib / zabbix --shell / bin / false --gid zabbix zabbix


Створюємо директорії для користувача zabbix і для файлів журналу подій:

# Mkdir -p / var / lib / zabbix
# Mkdir -p / var / log / zabbix


Копіюємо скрипт запуску сервера Zabbix з колекції заготовлених для прикладу сценаріїв в архіві вихідних кодів і коригуємо його відповідно до наших реалій:

# Cp ./misc/init.d/debian/zabbix-server /etc/init.d/


Або створюємо свій виконуваний скрипт приблизно такого змісту:

# Touch /etc/init.d/zabbix-server
# Chmod ugo + x /etc/init.d/zabbix-server

### BEGIN INIT INFO
# Provides: zabbix-server
# Required-Start: $ local_fs $ network
# Required-Stop: $ local_fs
# Default-Start: S
# Default-Stop: 0 6
# Short-Description: Start zabbix-server daemon
### END INIT INFO

DAEMON = "/ usr / local / sbin / zabbix_server"
NAME = "zabbix_server"
DESC = "Zabbix server daemon"
PID = "/ tmp / $ (NAME) .pid"

# Перевіряємо наявність виконуваного файлу запускається сервісу
test -f $ DAEMON || exit 0

# Про всяк випадок додаємо в змінну переліку шляхів пошуку ресурсів наші цільові
export PATH = "$ / usr / local / sbin: / usr / sbin: / sbin"

case "$ 1" in
start)
rm -f "$ PID"
echo "Starting $ DESC"
start-stop-daemon --oknodo --start --pidfile "$ PID" --exec "$ DAEMON"> / dev / null 2> 1
;;
stop)
echo "Stopping $ DESC"
start-stop-daemon --oknodo --stop --pidfile "$ PID" --exec "$ DAEMON"
;;
restart | force-reload)
$ 0 stop
sleep 2
$ 0 start
;;
*)
echo "Usage: $ 0"> 2
exit 1
;;
esac


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

# Update-rc.d zabbix-server start 10 2 3 4 5. stop 10 0 у середньому 1 6.


Вказуємо в конфігураційному файлі шлях до директорії журнальних файлів:

LogFile = / var / log / zabbix / zabbix_server.log
.
# Maximum size of log file in MB (automatic log rotation)
LogFileSize = 10


Вказуємо в конфігураційному файлі на місце розташування утиліти fping:


Необхідно поставити виконуваного файлу fping "suid" біт для того, щоб їм могли б скористатися непривілейованих користувачі:

# Chmod u + s / usr / bin / fping


alias fping = # 'fping -Sx.x.x.x #'
.


На даному етапі можна вважати, що установка виконуваної частини сервера моніторингу як такого пройшла успішно. Запускати сервер поки передчасно, так як СУБД, в якій будуть зберігається дані, не підготовлена.

Налаштуємо СУБД з якої буде працювати сервер Zabbix:

Перш за все зазначимо сервера Zabbix (в файлі конфігурації zabbix_server.conf) настройки підключення до СУБД:


Перевіримо, чи запущений сервер PostgreSQL:


Якщо сервер не запущений, то запустимо його:


Для початку "приборкаємо" СУБД і наводимо до єдиної системи аутентифікації. Це тимчасове рішення, для спрощеного доступу до налаштування СУБД - пару процедур і ми знову піднімемо планку аутентифікації.

Задамо користувачеві "postgres" (на рівні операційної системи - він використовується так само і СУБД) бажаний пароль:


Змінимо для користувача СУБД "postgres" метод аутентифікації на "trust" у файлі конфігурації "/etc/postgres/8.4/main/pg_hba.conf". Після цього користувач "postgres" зможе увійти без пароля. Перезапускаємо СУБД.

Входимо в консоль PostgreSQL від імені користувача "postgres":

# Psql -U postgres


Міняємо / встановлюємо користувачеві "postgres" довільний пароль за допомогою інтерактивної утиліти консолі:

# Postgres = # alter user postgres with password # '***** #';
# Postgres = # \ q


Встановлюємо для користувача "postgres" (і для всіх інших варіантів входу) в файлі конфігурації "/etc/postgres/8.4/main/pg_hba.conf" метод аутентифікації "md5". Перезапускаємо СУБД.

Створимо користувача від імені якого буде звертатися сервер Zabbix до СУБД. Користувач зможе створювати нові схеми (-d), нічого очікувати бути суперкористувачем (-S), не матиме можливості змінювати ролі і права користувачів (-R) і не матиме можливості змінювати паролі користувачів (-P):

# Createuser --username postgres --pwprompt -d -S -R -P zabbix

Enter password for new role: *****
Enter it again: *****
Password: *****


Зрозуміло, що вище спочатку двічі вводимо пароль для нового облікового запису СУБД, а в третій раз вказуємо пароль користувача "postgres", від імені якого ми виконуємо необхідні операції.

Якщо пізніше схаменувся, що пароль користувача нас не влаштовує, то в консолі psql можна буде його змінити за допомогою інтерактивної утиліти CLI СУБД:

# Psql -U postgres
# Postgres = # \ password zabbix
# Postgres = # \ q


Тепер, коли ми налагодили стосунки користувачів сервера моніторингу та СУБД, створимо схему (базу даних) з якої, в подальшому, будемо працювати, з примусовим зазначенням бажаної кодування:

# Createdb --username zabbix -E UTF8 zabbix


За допомогою наступної команди ми зможемо переконається в тому, що бажана схема з необхідними параметрами створена для певного користувача:

# Psql -U postgres -l


Висновок, щось на кшталт такого, покаже, що схема вдало створена:

List of databases
Name | Owner | Encoding
----------+----------+----------
postgres | postgres | UTF8
.
zabbix | zabbix | UTF8


Якщо інсталяція первинна, то необхідно створити набір таблиць з набором даних, що описує схему моніторингу "за замовчуванням". Для заповнення створеної раніше "бази даних" у дистрибутивному наборі є сценарії з відповідними наборами команд мови SQL - виконавши їх, заповнимо створену базу даних належної інформацією:

# Cd /usr/src/zabbix-2.0.5
# Cat ./database/postgresql/data.sql | psql --username zabbix zabbix
# Cat ./database/postgresql/images.sql | psql --username zabbix zabbix
# Cat ./database/postgresql/schema.sql | psql --username zabbix zabbix


Якщо ми оновлюємо вже працює раніше сервер моніторингу і в базі у нас велика кількість інформації, то слід пройти етапи коригування структури даних, для відповідності її нової версії системи моніторингу. Про це пропоную почитати в іншій замітці: Zabbix 1.8 => 2.0.

База даних системи моніторингу безперервно, дуже активно, оновлюється - маса записів створюється, не менша маса видаляється, залишаючи "порожнечі" в файлах СУБД, дуже сильно фрагментируя їх; з настройками "за замовчуванням" вже через півроку зафіксується істотне зниження продуктивності СУБД в цілому, що супроводжується, до того ж, нераціональним витратою місця в файлової системі сервера. Для компенсації цих проблем в PostgreSQL є підсистема "вакуумирования", про налаштування якої можна почитати тут: Zabbix + Housekeeper.

Тепер, після створення структури даних для свіжовстановленому системи моніторингу, або після конвертації наявних даних в новий формат, можна запустити або перезапустити (якщо він був раніше зупинений) сервер Zabbix:


Проконтролювати правильність запуску сервера Zabbix можна в журналі "/var/log/zabbix/zabbix_server.log".

Не хочу тут поширюватися про подальшу налаштування Zabbix, вже з web-інтерфейсу. Тема ця об'ємна, я все хочу їй зайнятися вже три роки як, та схоже що час це так і не прийде. Згадаю лише про декілька попередніх моментах настройки "сайту" Zabbix.

Якщо ми хочемо мати актуальний Zabbix-сервер з відповідною web-панеллю керування, то беремо таку з дистрибутивного набору з вихідними кодами - вона знаходиться в директорії "frontends":

Копіюємо вміст директорії "./frontends/php/" в те місце, де буде розташовуватися наш "сайт" - web-панель управління Zabbix.

Розписуємо конфігурацію цього "сайту" використовуваному нами web-серверу (Apache, Nginx). Забезпечуємо підтримку виконання сценаріїв PHP.

Забезпечуємо підтримку в мережі відповідного доменного імені.


Рекомендую запускати web-панель Zabbix під web-сервером Nginx. Знаю, що розробники описують в своєму керівництві по інсталяції налаштування для Apache, але на моїй практиці Ngix + FastCGI показують значно кращу продуктивність з меншим споживанням ресурсів. Про це можна почитати тут: Zabbix + Nginx.

Після того, як ми звернемося за допомогою web-браузера до панелі управління Zabbix, автоматично запуститься конфігуратор (зрозуміло, це відбудеться в разі, якщо панель управління ще не налаштована). Відразу ж потрібно встановити в налаштуваннях інтерпретатора PHP (php.ini) значення параметра "timezone" (беремо з системного файлу / etc / timezone) і максимальний час виконання скриптів не менше 300 (трьохсот) секунд. Задовольняємо його вимоги, на меншу Zabbix згоден:


date.timezone = Country / Town
max_execution_time = 300
.


Перезапускаємо web-сервер. Перевіряємо підключення до СУБД.

Конфігуратор запропонує нам ввести ім'я сервера і порт, на якому він буде приймати підключення клієнтів. Не будемо мудрувати і вносити плутанину - залишимо номер порту запропонованого розробниками: "10051".

Усе. Первісна настройка завершена. Ім'я адміністративного користувача для входу в систему за замовчуванням "Admin", пароль порожній або "zabbix".

Наостанок захищаємо ресурси сервера від доступу непривілейованих користувачів:

# Chown zabbix: zabbix /usr/local/etc/zabbix_server.conf
# Chmod o-rwx /usr/local/etc/zabbix_server.conf
# Chown -R zabbix: zabbix / var / lib / zabbix
# Chmod -R o-rwx / var / lib / zabbix
# Chown -R zabbix: zabbix / var / log / zabbix
# Chmod -R o-rwx / var / log / zabbix


[Вже відвідало: 14851] [поділиться: • • • • •]

Схожі статті