Po teoretickém úvodu z minulého dílu se pojďme podívat na praktickou část další části seriálu o dohledovém systému Zabbix. V dnešním díle postupnými kroky dojdeme k zprovoznění dohledového systému a ti nedočkaví mohou začít bez zábran experimentovat a pronikat do tajů všeho, co Zabbix nabízí.
26.2.2013 00:00 | Antonín Kolísek | přečteno 22673×
Před samotnou instalací dohledového systému je nutné zvážit několik hledisek. Nejprve si musíme zodpovědět několik základních otázek. Kolik, co a jak dlouho. Tedy první hledisko je přibližný odhad toho, kolik zařízení budeme sledovat a k tomu odpovídající počet testů na každé zařízení. Dále je nutné mít představu, jak dlouhou historii naměřených dat chceme uchovat. Zmiňované informace mají primární vliv na velikost požadovaných systémových prostředků. Jde především o velikost databáze společně s počtem sledovaných zařízení (čím víc zařízení, tím větší zatížení databáze), která určuje požadovaný fyzický výkon serveru. Na jednoduchém příkladu si nyní ukážeme, jakým způsobem lze alespoň přibližně vypočítat požadavky na velikost databáze a jak si počínat s výběrem hardwaru.
Pro odhad požadovaného diskového prostoru musíme znát veškeré informace o konkrétním hostu, počet hostů, počet testů a délku historie. Pokud budeme uvažovat 1000 zařízení u každého budeme sbírat 5 hodnot data budeme sbírat každých 60 vteřin a historii chceme uchovat 30 dnů, výpočet bude následující.
položky x hosté = počet hodnot
5 x 1000 = 5000 hodnot
5000 / 60 = 83 hodnot za vteřinu
dny x (položky / čas) x 24 x 3600 x bytů = objem dat
1 x (5000 / 60) x 24 x 3600 x 50 = 360 MB za den
(30 * 360) = 10.8 GB za 30 dnů
dny x (položky / 3600) x 24 x 3600 x bytů = objem dat
30 x (5000 / 3600) x 24 x 3600 x 128 = 460 MB za 30 dnů
dny x události x 24 x 3600 x bytů = objem dat
30 x 1 x 24 x 3600 x 130 = = 336960000 = 337 MB za 30 dnů
Nyní již můžeme vypočítat přibližnou hodnotu potřebného diskového prostoru za 30 dnů součtem Konfigurace + Historie + Trendy + Události to je 10 MB + 1080 MB + 460 MB + 337 MB = 1887 MB. Výpočet je pouze orientační. Musíme brát v úvahu, že v reálném nasazení není u všech hostů stejný počet sledovaných parametrů (tesů) a stejně i délka historie / trendů / událostí může být různá. Pro výpočet je nutné uvažovat vždy mezní hodnoty.
Výběr databáze závisí na mnoha faktorech. Z praktického hlediska záleží na robustnosti celého řešení, což závisí na velikosti a počtu sledovaných zařízení. Dále také na vlastních zkušenostech s konkrétním typem databáze. Nejpoužívanější databází pro Zabbix je dle zkušeností MySQL. Na tuto databázi se proto zaměříme i v našem seriálu. Pro velmi velké zatížení lze použít i databázi PostrgeSQL V případě výběru jiné databáze je možné vybírat z následujících:
Návrh hardwaru pro Zabbix je velmi závislý na velikosti monitorované infrastruktury, tj. na počtu zařízení. Jiné požadavky budou po sledování řádově desítek až stovek zařízení a jiné požadavky pro tisíce a více hostů. Následující tabulka znázorňuje alespoň základní doporučení.
Při větším počtu hostů dochází k většímu zatížení databáze. V takovém případě je vhodné použít pro datové úložiště velmi rychlé disky, např. s rozhraním RAID10. V případě velkého zatížení databáze a velmi velkého počtu sledovaných zařízení (řádově tisíce) je vhodné rozložit provoz na nezávislé servery a oddělit fyzicky databázi, Zabbix server a webový server. V reálném nasazení, kdy je potřeba sledovat rozsáhlou infrastrukturu, je vhodné a často přímo nutné přikročit k distribuovanému monitoringu a využít režimu proxy nebo nodů.
K provozování Zabbixu je nutné připravit operační systém tak, aby obsahoval potřebné programové vybavení. V našem případě se zaměřím na použití distribuce CentOS. Všechny kroky jsou platné pro RHEL GNU/Linux (Red Hat Enterprise Linux) který je v komerční sféře zřejmě nejvíce zastoupený. U jiných distrubucí by se postupovalo obdobnými kroky, jen by bylo použito jiného správce balíčků a jiných repozitářů pro instalaci programů. Názvy požadovaných aplikací jsou obdobné většinou ve všech distribucích GNU/Linux, proto nebude obtížné zužitkovat následující informace v jakékoli jiné distribuci. Odpovídající verze požadovaných aplikací je vhodné vždy kontrolovat s aktuálními požadavky viz dokumentace. Nebudu zde proto uvádět čísla verzí, ale jen názvy požadovaných aplikací viz následující výčet.
Výše uvedené balíčky jsou nutné pro úspěšné provozování dohledového systému Zabbix. Dále následuje seznam doporučených aplikací, které nejsou pro základní provoz nezbytně vyžadované. Pokud chceme, aby Zabbix nabízel i pokročilejší metody monitoringu (SNMP, IPMI, SSH,Web monitoring ...), bude nutné zajistit přítomnost také následujících balíčků:
Veškeré *-devel balíčky nainstalujeme jen v případě, že budeme Zabbix kompilovat ze zdrojových souborů, s čímž v našem případě počítáme. Ukážeme si zde všechny způsoby instalace. Instalaci / aktualizaci požadovaných součástí provedeme podle následujících kroků. Je možné, že pro splnění závislostí bude nutné instalovat i jiné balíčky, o což se postará nástroj pro správu balíčků.
shell> yum install httpd php gd php-bcmath php-mbstring php-gd php-mysql mysql mysql-libs mysql-server libssh2 libcurl net-snmp-* ntpdate curl curl-libs gettext gettext-libs libxml2 OpenIPMI-libs libssh2
V případě, že budeme kompilovat Zabbix ze zdrojových kódů, nainstalujeme potřebné devel balíčky a kompilační nástroje. Z hlediska bezpečnosti je někdy nežádoucí, aby produkční server obsahoval kompilační nástroje. V takovém případě je možné, s ohledem na bezpečnost a máme-li tuto možnost, sestavit balíček na jiném serveru. Případně můžeme použít již připravené balíčky z externích repozitářu. Pro náš případ, kdy chci názorně popsat i manuální sestavení a instalaci Zabbixu, můžeme zmíněné "malé" bezpečnostní riziko akceptovat. Kompilátor jazyka C, nástroje pro kompilaci a devel balíčky nainstalujeme následovně.
shell> yum install mysql-devel zlib-devel glibc-devel curl-devel net-snmp-devel gnutls-dev libssh2-devel gcc automake make libidn-devel openssl-devel OpenIPMI-devel
Pokud chceme, aby byl Zabbix s podporou notifikace pomocí služby Jabber, bude nutné naistalaovat balíky iksemel iksemel-devel, které je nutné instalovat z EPEL repozitáře.
Zabbix využívá rozšířenou verzi programu ping. Program fping nemusí být obsažen v některých distribucích. Stejně jak to je i v našem případě při použití CentOS. Je nutné proto aplikaci nainstalovat do systému ručně, případně použít externí repozitář EPEL. Pro manuální instalaci balíčku budeme postupovat následovně.
shell> rpm -Uvh ftp://ftp.univie.ac.at/systems/linux/dag/redhat/el6/en/x86_64/dag/RPMS/fping-3.4-1.el6.rf.x86_64.rpm
Po instalaci nastavíme oprávnění. V tomto kroku je nutné založit i uživatele a skupinu.
shell> chmod 4710 /usr/sbin/fping
shell> groupadd zabbix
shell> useradd -g zabbix zabbix
shell> chgrp zabbix /usr/sbin/fping
Sledovaná data by byla k ničemu, kdyby neodpovídala skutečnosti. Je proto nutné zajistit přesný čas na serveru, na kterém provozujeme Zabbix. O čas se stará démon ntpd, kterého je proto nutné natsavit. Je možné použít alternativní způsob nástrojem ntp-date a přidat do plánovače úloh cron následující řádek:
00 12 * * * /sbin/ntpdate tik.cesnet.cz > /dev/null
Zabbix potřebuje pro svoji činost otevřené porty 10051, dále pak port 80 pro webové rozhraní. Dále je v některých případech nutné upravit nastavení SELinux pokud jej konkrétní distribuce používá nebo úplně v krajním případě deaktivovat.
shell> echo "zabbix_agent 10050/tcp" >> /etc/services
shell> echo "zabbix_server 10051/tcp" >> /etc/services
shell> iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
shell> iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 10051 -j ACCEPT
shell> service iptables save
shell> yum install policycoreutils-python
shell> semanage port -a -t http_port_t -p tcp 10051
module zabbix_fping 1.0; require { type initrc_tmp_t; type ping_t; class file read; } allow ping_t initrc_tmp_t:file read;
shell> checkmodule -M -m -o zabbix_fping.mod zabbix_fping
shell> semodule_package -o zabbix_fping.pp -m zabbix_fping.mod
shell> semodule -i zabbix_fping.pp
Možností jak nainstalovat Zabbix je několik. V případě použití balíčku se nemusíme starat o instalaci dalších programů pro splnění závislosti a o základní nastavení systému. Další výhodou je automatická aktualizace a úprava konfiguračních souborů. Administrátor se tak nemusí téměř o nic starat. My si ukážeme také možnost sestavit Zabbix ze zdrojových kódů, což je vhodné například v případě, kdy repozitáře nenabízí konkrétní verzi a nebo dohledový systém nenabízí vůbec. Nicméně i zde se budeme držet předpokladu, že používáme CentOS/RHEL.
Nejednodušší možností je použít již sestavených balíčku pro danou architekturu (i386 / x86_64) a odpovídající verzi distribuce. V takovém případě máme dvě možnosti. Můžeme použít repozitáře EPEL nebo ZabbixZone. V žádném případě nekombinujeme oba repozitáře. V případě, že potřebujeme mít v systéme nastavené oba dva, je nutné použít priorit případně Zabbix v EPEL repozitáři zakázat.
shell> rpm -Uvh http://mirror.karneval.cz/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
shell> yum install zabbix20 zabbix20-agent zabbix20-server zabbix20-server-mysql zabbix20-web zabbix20-web-mysql
shell> rpm --import http://repo.zabbixzone.com/centos/RPM-GPG-KEY-zabbixzone
shell> rpm -Uv http://repo.zabbixzone.com/centos/zabbixzone-release-0.0-1.noarch.rpm
shell> yum install zabbix zabbix-agent zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql
Manuální instalace není příliš žádoucí v případě distribuce založené na balíčcích. Někdy to je ale jediná možnost, jak konkrétní nástroj provozovat. Je možné také RPM balíček vytvořit ručně, tím se tento seriál nebude zabývat, protože by byl překročen rámec seriálu. Pro lepší orientaci a administraci dohledového systému Zabbix uvádím možnost ruční instalace. Celý proces se skládá z několika kroků.
shell> cd /tmp
shell> wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.0.4/zabbix-2.0.4.tar.gz
shell> tar -xzf zabbix-2.0.4.tar.gz
shell> cd /tmp/zabbix-2.0.4
shell> ./configure --sysconfdir=/etc/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-openipmi --with-ssh2
shell> make
shell> make install
- pokud jsme ještě nezaložili skupinu a oprávnění je na to správná doba
shell> groupadd zabbix
shell> useradd -g zabbix zabbix
shell> mkdir /etc/zabbix /etc/zabbix/externalscripts
shell> chown -R zabbix /etc/zabbix
shell> chgrp zabbix /usr/sbin/fping
shell> cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
shell> cp misc/init.d/fedora/core/zabbix_server /etc/init.d/
BASEDIR=/usr/local
FULLPATH=$BASEDIR/sbin/$BINARY_NAME
shell> chkconfig --add zabbix_server
shell> chkconfig --add zabbix_agentd
shell> chkconfig --level 345 zabbix_server on
shell> chkconfig --level 345 zabbix_agentd on
shell> chkconfig --level 345 httpd on
shell> chkconfig --level 345 mysqld on
Založení databáze je stejné pro všechny metody instalace. Databázi je nutné nastavit ručně i v případě použití instalačních balíčku. Předpokládejme, že máme databázi (v našem případě MySQL) funkční a známe uživatele root. V případě, že se jedná o čistou instalaci, je nutné nejprve při prvním spuštění MySQL založit uživatele root.
shell> /usr/bin/mysqladmin -u root password 'new-password'
shell> service mysqld start
V případě běžící MySQL databáze pokračujeme v tvorbě databáze pro Zabbix.
shell> mysql -u<username> -p<password>
mysql> CREATE database zabbix character set utf8;
mysql> GRANT DROP,INDEX,CREATE,SELECT,INSERT,UPDATE,ALTER,DELETE ON zabbix.* TO zabbix@localhost IDENTIFIED BY "password";
mysql> quit;
shell> mysql -u zabbix -p <password> zabbix < database/mysql/schema.sql
shell> mysql -u zabbix -p <password> zabbix < database/mysql/images.sql
shell> mysql -u zabbix -p <password> zabbix < database/mysql/data.sql
V případě použití balíčku dojde k nastavení webového serveru (Apache) automaticky. Je důležité dát jen pozor na umístění webového frontendu, který se nachází v /usr/share/zabbix. Pokud instalujeme Zabbix ručně, umístíme frontend dle vlastního nastavení webserveru. Pokud se jedná o čistou instalaci a webový server není ještě nastavený, konfigurace může být následující.
shell> cp -r frontends/php /var/www/html/zabbix
shell> chown -R apache:apache /var/www/html/zabbix/conf
Vytvoříme /etc/httpd/conf.d/zabbix.conf s následujícím obsahem:
Alias /zabbix /var/www/html/zabbix <Directory "/var/www/html/zabbix"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all php_value max_execution_time 600 php_value memory_limit 256M php_value post_max_size 64M php_value upload_max_filesize 10M php_value max_input_time 600 php_value date.timezone Europe/Prague php_value mbstring.func_overload 7 </Directory> <Directory "/var/www/html/zabbix/conf"> Order deny,allow Deny from all <files *.php> Order deny,allow Deny from all </files> </Directory> <Directory "/var/www/html/zabbix/api"> Order deny,allow Deny from all <files *.php> Order deny,allow Deny from all </files> </Directory> <Directory "/var/www/html/zabbix/include"> Order deny,allow Deny from all <files *.php> Order deny,allow Deny from all </files> </Directory> <Directory "/var/www/html/zabbix/include/classes"> Order deny,allow Deny from all <files *.php> Order deny,allow Deny from all </files> </Directory>
Především hodnoty pro nastavení PHP (php_value) jsou nutné pro úspěšný provoz Zabbixu. Nyní můžeme restartovat webový server a pokračovat v instalaci.
shell> services httpd restart
Editujeme konfigurační soubory zabbix_server.conf a zabbix_agentd.conf. My jsme zvolili umístění konfiguračních souboru při sestavování zdrojových kódů volbou --sysconfdir=/etc/zabbix. Při instalaci z balíčků nebo ponecháním výchozí cesty nalezneme konfigurační soubory v /usr/local/etc/zabbix.
Server=127.0.0.1
DebugLevel=2
ExternalScripts=/etc/zabbix/externalscripts
DebugLevel=2
FpingLocation=/usr/sbin/fping
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=password
DBSocket=/var/lib/mysql/mysql.sock
shell> service zabbix_server start && service zabbix_agentd start
shell> ps -A | grep zabbix
Posledním krokem instalačního procesu je instalace webového rozhraní. Všechny kroky probíhají přes libovolný webový prohlížeč. Celý proces je velmi jednoduchý viz následující obrazovky.
V dnešní části seriálu jsme se úspěšně dostali do stavu, kdy můžeme začít experimentovat s dohledovým systémem Zabbix. Veškeré nastavení je pouze základní. Pro reálné nasazení je nutné často velmi zdlouhavého ručního ladění parametrů a to jak databáze, tak serverového procesu. V příštím díle se podíváme na základní popis prostředí, aby bylo možné pomalými kroky pronikat do tajů monitoringu.
1. Zabbix domovské stránky : http://www.zabbix.com
2. Zabbix dokumentace : http://www.zabbix.com/documentation.php
3. Zabbix - Požadavky : https://www.zabbix.com/documentation/2.0/manual/installation/requirements
4. Zabbix - Instalace : https://www.zabbix.com/documentation/2.0/manual/installation/install
5. EPEL : http://fedoraproject.org/wiki/EPEL
6. ZabbixZone : http://repo.zabbixzone.com