Hlavní navigace

Dohledový systém Zabbix

8. 8. 2006
Doba čtení: 7 minut

Sdílet

Dohledových systémů na koncové stanice nebo stav prvků v síti je spousta. Od velkých, komerčních až po malé, zdarma, nejlépe open-source. Nicméně to, že jsou zadarmo, neznamená, že nic neumí. V tomto článku se budeme věnovat jednomu dohledovému systému, který je šířen pod licenci GNU GPL. Jmenuje se Zabbix.

Jsen nadšenec a přiznám se, že jsem i hodně zvědavý a rád „zkoumám”, takže jsem zkoušel mnoho dohledových systémů, přesněji řečeno programů, které kontrolují funkčnost okolních objektů na síti. Tím nemyslím zrovna roboty, které zvědavě brouzdají po síti a hledají možnou, málo zabezpečenou oběť (dobrá, těch je v mém okolí určitě několik). Na mysli mám systémy, které kontrolují dostupnost cíle nebo cílů a popřípadě ještě funkčnost nebo nefunkčnost určité služby nebo služeb na zmíněném cíli. Čistě teoreticky stačí mít šikovné prsty, chytrou hlavu plnou nápadů, ASCII editor vim, znalost třeba i cronu a pro zasílání výsledků ze skriptíku e-mailovou adresu.

Ale na rovinu, komu se chce skriptíky tvořit nebo si představovat z výsledků skriptů v našem zajisté stále plném e-mailu, jak to asi je vyjádřeno graficky. Již před vznikem výtvoru, o kterém si dnes povíme, dali dobří a šikovní lidé hlavy dohromady a posléze svou práci zveřejnili a umožnili ostatním používat dle svobodné vůle. Některé jsou povedené, některé méně, umí víc nebo míň a vyhovují tomu či onomu uživateli. Každý je jiný. Osobně jsem vyzkoušel několik těchto projektů, jmenovitě projekty Nagios nebo Cacti . Odhodlal jsem se i ke zprovoznění dohledového systému Zabbix, o zážitky a poznatky bych se s vámi rád podělil.

Zabbix server stáhneme z domovské stránky projektu na odkazu na Zabbix server.

Po stáhnutí rozbalíme archiv například do adresáře /usr/local/src a změníme aktuální adresář do Zabbixu.

Příprava databáze pro Zabbix

Za první věc, kterou musíte udělat před vlastní konfigurací překladu a samotným překladem Zabbixu, bych považoval vytvoření databáze a uživatele, který bude mít plný přístup k této databázi. Databázi naplníme pomocí připravených MySQL, respektive PostgreSQL skriptů.

Připojíme se na mysql server pod root uživatelem, heslo napíšeme dodatečně a vytvoříme databázi jménem zabbix, založíme uživatele zabbix a databázi zabbix tomuto uživateli plně přidělíme dle potřeby:

mysql -u root -p
create database zabbix;
grant usage on zabbix.* TO zabbix@localhost
identified by "<heslo>";
grant select, insert, update, delete, create,
drop, index, alter, create temporary tables on `zabbix`.* TO zabbix@
localhost;

Databázi, uživatele a jeho heslo máme založené, nyní je třeba tuto databázi naplnit. Struktura této databáze je uložena v sql souboru create/mysql/schema.sql, data do této struktury nalezneme v create/data/data.sql. Pokračujeme dále v mysql, kde se aktivujeme do naší nově vytvořené databáze zabbix, vytvoříme její strukturu (tabulky) a následně je naplníme, vše z předpřipravených sql dotazů ve výše zmíněných souborech :

use zabbix;
source create/mysql/schema.sql;
source create/data/data.sql;
exit;

V tomto okamžiku máme připravenou databázi v mysql. Zabbix podporuje ještě PostgreSQL, případně s modulem Oracle, ale osobně si myslím, že většina z nás zajisté používá MySQL …

Kompilace a instalace Zabbixu

Nyní jsme asi v třetině instalace Zabbix serveru. Před samotnou kompilací je třeba připravit konfiguraci překladu. Žádný strach, vše jde samo. Jediné, co je třeba, jsou správné parametry konfigurátoru. Chceme přeložit Zabbix server s podporou SNMP, agenta Zabbixu, pro MySQL a též jako server. A při úspěšném dokončení i instalaci:

./configure --enable-server --enable-agent --with-mysql –with-net-snmp
make install

Kompilované binární soubory Zabbixu najdete, alespoň u mě je tomu tak, v adresáři  /usr/local/bin/.

No, tak hrozné to nebylo, že? Ale to nej nej teprve začne.

Konfigurace operačního systému

Operační systém není třeba moc nastavovat nebo upravovat. Tento krok je nepovinný, i když doporučený. TCP porty, které používá Zabbix, vyjmenujeme do seznamu portů.

Editujte soubor services v adresáři /etc. Třeba na konec tohoto souboru přidejte následující řádky a uložte:

zabbix_agent 10050/tcp
zabbix_trap 10051/tcp

Další z věcí, které je třeba v systému udělat, je zajištění automatického spouštění služby zabbix_server. Někteří z vás znalců, kteří se tak nudíte, že čtete tento článek, na moje řešení zděšeně vytřeštíte oči a přinejmenším týden hrůzou nebudete spát. Je jistě více řešení, kromě ručního spouštění při každém startu, já jsem se do toho dal pomocí xinetd.

Dle konfigurace xinetd založíme v adresáři, z kterého tento démonek načítá jednotlivé konfigurace jím pouštěných služeb. U mě je to adresář /etc/xinet.d/. V něm jsem založil soubor zabbix_server s následujícím obsahem:

# Popis:
# Zabbix server
#
# zabbix_trap je služba, kterou jsme definovali v „/etc/services“
service zabbix_trap
{
        socket_type             = stream
        protocol                = tcp
        wait                    = no
        user                    = root                          ##může však běžet i pod jiným uživatelem
        server                  = /usr/local/bin/zabbix_server  ##zkontrolujte cestu k zabbix_server
        disable                 = no
}

Až budeme mít Zabbix server nakonfigurovaný, restartujeme xinetd démona. Nyní by to ještě nemělo smysl, jelikož náš Zabbixík na spuštění není připravený.

Konfigurace Zabbix serveru

Nyní přichází to nejlepší, co jsem měl na mysli. Tedy část toho nejlepšího. Když si člověk řádně přečte manuál Zabbixu z jeho stránek dokumentace, je vše jednodušší.

Vzorové konfigurace najdeme ve zdrojovém adresáři Zabbixu, kde jsme ho kompilovali, v podadresáři misc/conf/. V adresáři /etc/ vytvoříme adresář zabbix a soubory z misc/conf/  do něj nakopírujeme. Abych nebyl narčen zbytečným plýtváním místem na disku, raději rovnou oznámím, že pro službu zabbix_server stačí mít pouze soubor zabbix_server.conf. A nyní se tomuto souboru podíváme na zoubek.

Formát souboru je jak jinak než čistě textový. Jednotlivé nastavení je dobře komentováno. Já jsem dělal následující změny oproti defaultnímu nastavení, opět nechávám komentáře z conf souboru:

# Name of PID file
PidFile=/var/tmp/zabbix_server.pid      ##PID bych rád měl na tomto místě

# Name of log file
# If not set, syslog is used
LogFile=/var/log/zabbix_server.log      ##LOG poblíž
# Database host name
# Default is localhost
DBHost=localhost                        ##server, kde běží MySQL

# Database name
DBName=zabbix                           ##jméno databáze

# Database user
DBUser=zabbix                           ##uživatel databáze

# Database password
# Comment this line if no password used
DBPassword="supertajne_heslo :)"        ##heslo uživatele

# Connect to MySQL using Unix socket?

#DBSocket=/tmp/mysql.sock
DBSocket=/var/lib/mysql/mysql.sock      ##dále je možné i s MySQL komunikovat přes socket

Pokud mě má paměť neklame a neselhal REFRESH, z konfigurace Zabbix serveru by to bylo vše. Určitě si ještě pamatujete text asi o půl stránky výše, který říkal, že restart xinetd démona neměl smysl, jelikož služba zabbix_server není ještě připravena. Nyní již připravena je, a tak můžeme restartovat xinetd démona. Zkontrolujeme systémový log, jestli je tam vše v pořádku a na důkaz toho se zkusíme telnetem připojit na localhost na port zabbix_serveru, což je 10051. Náš příkaz bude znít takto:

telnet localhost 10051

Pokud nám Zabbix server běží, zobrazí se nám:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'

Tak, a máme druhou třetinu za sebou.

Frontend Zabbixu

Doteď jsme si hráli v textovém režimu, cvičili si znalosti práce v našem oblíbeném textovém ASCII editoru, nyní nastává pomalu čas se pokusit vzpomenout na práci s hlodavcem u vašeho PC (neee, nemyslím Bertíka, co se po vysilujícím běhu v kolotoči unavil a zahrabává se v hoblinách). I když, ruku na srdce, prstíky na klávesnici budou sem tam potřeba …

Frontend Zabbixu je řešen pomocí HTML, přesněji PHP s MySQL, tedy je nutno mít spuštěný web server. Všechny potřebné soubory jsou opět přiloženy u instalace Zabbixu, najdeme je u něj v podadresáři frontends/php/. V adresáři, který je „DocumentRoot” našeho web serveru, vytvoříme adresář zabbix a obsah frontends/php/ do něj nakopírujeme. Adresářová cesta tedy může vypadat třeba  /srv/www/htdocs/private/admin/zabbix.

Opět sáhneme po našem oblíbeném ASCII editoru, přepneme aktuální adresář do adresáře frontendu Zabbixu a zde začneme s úpravami jeho konfigurace. Opět udělám jen výtah konfigurace, části, které je potřeba proti defaultnímu nastavení změnit:

$DB_TYPE        ="MYSQL";
$DB_SERVER      ="localhost";                   ##MySQL server běží na tomto serveru
$DB_DATABASE    ="zabbix";                      ##jméno databáze
$DB_USER        ="zabbix";                      ##uživatel databáze
$DB_PASSWORD    ="supertajné_heslo :)";         ##a jeho heslíčko

Z konfigurace frontendu Zabbixu by to mělo být vše, dokonce celá instalace a konfigurace Zabbixu jako server je hotová, máme tedy pro dnešek splněno na 100%.

CS24_early

Pro ověření funkčnosti a natěšení se na příští část si pusťte oblíbený www prohlížeč a do řádků odkazů http dejte adresu, která odpovídá cestě frontendu Zabbix serveru. Tedy například, je-li cesta taková, jakou jsem uvedl u kopírování PHP souborů o několik řádků výše, může být http adresa následující: http://www.server.cz/private/admin/zabbix  – na té adrese se nám zjeví Zabbix.

Zabbix

V tomto díle jsme si ukázali, jak Zabbix nainstalovat, respektive jeho serverovou část. K tomu, aby to bylo zcela kompletní a mohli jsme monitorovat i jinak než přes SNMP, je třeba na monitorovaných stanicích nainstalovat a pustit Zabbix agenty a nakonfigurovat je v Zabbix serveru. Na to se podíváme příště a zároveň bych k tomu přidal něco omáčky a ukázal bych též, jak si nastavit něco podobného, jako je na screenshotech na domovské stránce Zabbixu.

Používáte dohledový systém?

Byl pro vás článek přínosný?