Jelikož spravuji poněkud přehnané množství Mikrotiků, rozhodl jsem se, že si pořídím nějaký jednoduchý dohledový systém, který by mi z nich tahal informace o stavu. Kontinuální monitoring síťových zařízení sice nemám nasmlouvaný s žádným z mých klientů, nicméně to jim nebrání v tom, aby se tu a tam někdo zeptal jaký je ping na zařízení v Horní Dolní.
Přírodní výběr
Monitorovacích systémů je kýbl. Já potřeboval něco, co bezproblémově zvládá SNMP, má klikací rozhraní jak pro konfiguraci, tak i pro čtení, umí posílat maily v případě, že se některá z hodnot dostane daleko za hranici použitelnosti a lezou z toho grafy prezentovatelné klientovi. Na druhou stranu nemonitoruju bůhvíjak složité aplikace, takže mi stačí „něco malého“. I přesto, že Nagios potkávám téměř denně, nikdy jsem se s ním nesžil. Xymon sice vypadá, jakoby jej někdo vytáhl z prostředku devadesátých let, ale pro můj účel by zřejmě stačil. Nicméně jeho konfigurace a vůbec celý systém mi připadají nekoherentní. Tak jsem si projel dokumentace k pár dalším (Cacti, Icinga) a nakonec si ze srandy nainstaloval Zabbix. Nikdy předtím jsem s ním nepracoval, ale hned jsem si ho zamiloval. Jelikož s ním v současné době přebíhám mezi virtuálkami, odložím si tu návod k instalaci k pozdějšímu použití.
Instalace
Zabbix server samotný i s webovým rozhraním je k nalezení v základních repozitářích Ubuntu. Mám na výběr MySQL nebo PostgreSQL backend. Sice jsem říkal, že nemonitoruju složité nebo kritické aplikace, ale MySQL bych si na takovou věc za střízliva dobrovolně nenainstaloval (Doufám, že MariaDB za pár let vyroste do krásy). Mimo jiné potřebuju nainstalovat i balík MIB definic pro snadnou práci se SNMP objekty.
# apt-get install zabbix-server-pgsql zabbix-frontend-php snmp-mibs-downloader
Protože výchozí nastavení oprávnění PostgreSQL je takové zvláštně restriktivní vůči lokálním uživatelům, doporučuji v souboru pg_hba.conf změnit nastavení tak, aby se jakýkoliv lokální uživatel byl schopen skrze unix socket přihlásit na jakéhokoliv databázového uživatele. Tedy samozřejmě za předpokladu, že zná jeho přihlašovací údaje.
# cat <<EOF >/etc/postgresql/9.3/main/pg_hba.conf
local all postgres peer
local all all md5
EOF
# service postgresql restart
Nastavení backendu
Pro běh Zabbix serveru je potřeba vytvořit databázového uživatele a databázi, kterou následně naplníte dodanými SQL dumpy s nastavením a vzorovými daty.
# su - postgres -c 'createdb zabbix_database'
# su - postgres -c 'createuser -P zabbix_user'
# zcat /usr/share/zabbix-server-pgsql/{schema,images,data}.sql.gz | psql zabbix_database zabbix_user
Pak tytéž údaje nasypete do souboru /etc/zabbix/zabbix_server.conf. Direktiva DBHost musí být nastavena na prázdný řetězec, protože jedině tak se Zabbix k PostgreSQL bude připojovat skrze unix socket.
DBHost=
DBName=zabbix_database
DBUser=zabbix_user
DBPassword=zabbix_password
Nakonec v konfiguráku /etc/default/zabbix-serversdělíte init skriptu, že Zabbix startovacím příkazem jako opravdu chcete nastartovat. A nastartujete.
# sed -i 's/START=no/START=yes/' /etc/default/zabbix-server
# service zabbix-server start
V případě, že si nejste jisti, zda jste vše nastavili korektně a zda se Zabbix server bez problémů spustil, koukněte do logu /var/log/zabbix-server/zabbix_server.log.
Nastavení frontendu
K tomu abyste mohli vesele klikat a koukat na grafy, je třeba nastavit i PHP frontend. Nejprve tedy symlinkněnte konfiguraci Apache dodanou k Zabbixu do Apachových sites-enabled.
# ln -s /usr/share/doc/zabbix-frontend-php/examples/apache.conf /etc/apache2/sites-enabled/zabbix.conf
Dále je záhodno nastavit několik direktiv v konfiguraci PHP, bez kterých na vás Zabbix bude prskat. Konkrétně pak maximální velikost dat v POST, maximální dobu běhu skriptu, maximální dobu ke zpracování vstupních dat a časové pásmo. Otevřete tedy /etc/php5/apache2/php.ini a změňte následující.
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Europe/Prague
Poté zkopírujte konfigurační soubor k samotnému PHP frontendu Zabbixu
# cp /usr/share/doc/zabbix-frontend-php/examples/zabbix.conf.php.example /etc/zabbix/zabbix.conf.php
A nastavte v něm opět údaje k databázi.
$DB["TYPE"] = 'POSTGRESQL';
$DB["SERVER"] = '';
$DB["PORT"] = '';
$DB["DATABASE"] = 'zabbix_database';
$DB["USER"] = 'zabbix_user';
$DB["PASSWORD"] = 'zabbix_password';
Nakonec restartujte Apache.
# service apache2 reload
V prohlížeči pak přejděte na http://<IP_nebo_hostname>/zabbix. Výchozí přihlašovací jméno je Admin (s velkým „A“) a heslo je zabbix.