Zabbix, deel 1

Ingediend door Dirk Hornstra op 10-nov-2018 23:49

Op 30 oktober zijn mijn collega's van service, onze fanatieke en altijd vrolijke stagiair Jan Julius en ik langer blijven zitten op het werk, deze avond een "Zabbix"-avondje. 3 ouwe  servers en mijn oude laptop op de bureau's, Ubuntu Server installeren en vervolgens "even" Zabbix installeren. Het installeren van Ubuntu ging prima, de ventilatoren van de oude servers begonnen soms zo te blazen dat je even het gevoel had dat er een paar drones op het punt stonden op te stijgen. Maar toen de installatie van Zabbix. Na een korte zoek-actie kwamen we uit op deze pagina van ComputingForGeeks waar stap voor stap wordt uitgelegd wat je moet doen: link. Kwamen we toch nog wel wat problemen tegen, maar uiteindelijk opgelost en ook allemaal werkend. Daarna de Zabbix-Agent instellen zodat je ook bij een andere Zabbix-installatie kunt komen. Dat wilde op 1-of-andere manier toch niet werken, bij Anne en JJ uiteindelijk wel. Maar goed, daarna hadden we het allemaal druk, ik zat nog elke avond in de studieboeken, dus het vervolgavondje liet nog even op zich wachten. Het gaat er dus om dat je Zabbix op 2 locaties hebt draaien en dat je in je Zabbix-server de data kunt opvragen (of laten pushen?) door de Agent op de andere server. Nu had ik nog een Raspberry Pi 3 liggen, ik wilde dus wel eens kijken of ik daar Zabbix op kon installeren. Want dan zou ik vervolgens vanaf mijn laptop waar ik Zabbix ook draaiend op heb kunnen proberen te verbinden. Let's go.

Ik weet niet hoe ik de site gevonden heb, maar die Raspberry Pi 3 heb ik dus van SOS Solutions uit Eindhoven. Compleet pakket, dus nette behuizing, lader en een 8 GB SDHC kaartje, dat vind ik wat aan de lage kant, dus zelf nog een 32 GB kaartje aangeschaft. Stap 1 is dat je daar het besturingssysteem op gaat installeren. Op de officiële site van Raspberry naar de downloadpagina. Hier het zip-bestand van de Raspbian Stretch Lite gedownload, ik wil de installatie zo klein mogelijk houden, bij de pre-install voor Zabbix gaan we toch nog wel allemaal zaken toevoegen/installeren. Je hebt dan een ZIP-bestand van 351 MB. Hierna moet je de SD-kaart initialiseren met de inhoud van dit ZIP-bestand. Ik gebruikte bij mijn oude Raspberry een andere tool, maar de officiële installatie-handleiding raadt het gebruik van Etchy aan. Hier te downloaden: link. Blijk ik dat programma toch te kennen, want we hebben het gebruikt voor de installatie van Ubuntu op een USB-stick en daarmee de oude servers / mijn laptop van Ubuntu voorzien. 

USB geflashed, toetsenbord + beeldscherm aangesloten, opstarten maar. Na het inloggen (pi/raspberry) eerst passwd ingetypt. Daarmee pas je het standaard wachtwoord aan van gebruiker pi. Daarna sudo su en daarna nogmaals passwd. Ook even een eigen wachtwoord instellen voor de root-gebruiker, hebben we dat netjes afgeschermd. De raspberry pi 3 kan op WIFI werken, maar voor deze test laat ik alles even via de aangesloten LAN-kabel lopen. Zou je dat wel willen, dan moet je eerst nog even sudo raspi-config uitvoeren om je land in te stellen en daarmee de WIFI aan te zetten. Ook kun je daar zorgen dat je volledige SSD kaartje gebruikt wordt, bij de interfacing options SSH aanzetten, dus gewoon even starten en configureren.

Eerst de pakketten en dergelijke bijwerken:
sudo apt-get update
sudo apt-get upgrade

Hierna probeer ik dezelfde stappen te volgen als die we gedaan hebben op onze Ubuntu-installatie via het stappenplan van Computing for Geeks (link):
sudo apt install -y apache2

Dat werkt. Maar dan moet er meer ingetypt worden, dat wil ik liever copy-pasten. Even via SSH connectie maken (via ifconfig op de Raspberry uit te voeren had ik al gezien welk ip-adres deze heeft gekregen).



sudo sed -i "s/^ServerTokens OS$/ServerTokens Prod/" /etc/apache2/conf-enabled/security.conf
sudo sed -i "s/^ServerSignature On$/ServerSignature Off/" /etc/apache2/conf-enabled/security.conf
 

Hierna de .conf van Apache instellen, eerst met cd /etc/apache2/ naar de juiste map en vervolgens sudo vi apache2.conf aanpassen. Deze 2 regels onderaan toegevoegd:



ServerName zabbixpi
ServerAdmin mijnmailadres@mijndomein.nl
 

Hierna volgt de regel om allemaal onderdelen te installeren, bij Ubuntu liep dat toen vast, missend pakket en vervolgens met omwegen de boel bijwerken. Dat had volgens mij te maken met niet de juiste PHP versie o.i.d., op de Raspberry Pi lijkt het allemaal prima door te lopen!



sudo apt-get -y install php php-pear php-cgi php-common libapache2-mod-php php-mbstring php-net-socket php-gd php-xml-util php-mysql php-gettext php-bcmath
 

Mijn php -v geeft versie 7.0.30 terug, in het voorbeeld draaien ze al 7.2, maar ik ga het hiermee proberen. De paden die in het voorbeeld als 7.2 staan, pas ik in mijn geval dus aan naar 7.0.



sudo  a2enconf php7.0-cgi
sudo systemctl reload apache2
sudo sed -i "s/^;date.timezone =$/date.timezone = \"Europe\/Amsterdam\"/" /etc/php/7.0/apache2/php.ini
sudo systemctl restart apache2
 

Tot zover de PHP installatie, that looks good. Je moet hierna MariaDB installeren. Ik volg daarvoor deze link


sudo apt -y install software-properties-common dirmngr
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64] http://mirror.zol.co.zw/mariadb/repo/10.3/ubuntu xenial main'

Het laatste statement mislukt omdat er geen repo voor Raspbian/stretch beschikbaar is. Dan maar kijken of de installatie wel gaat werken.  Eerst een sudo apt-get update voegt geen zaken toe. 


sudo apt -y install mariadb-server mariadb-client

Na de tijd krijg ik geen scherm om het wachtwoord in te voeren. Maar goed, als ik sudo mysql -u root -p invoer kan ik vervolgens met mijn eerder ingestelde wachtwoord voor root inloggen. So far, so good, dus ik kan terug naar het computing for geeks blog. 


sudo mysql -u root -p
create database zabbix;
grant all privileges on zabbix.* to zabbix@'localhost' identified by 'St3RkW4cHtWRD';
FLUSH PRIVILEGES;

Dan moet de boel geïnstalleerd worden:


 

sudo wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+bionic_all.deb
sudo dpkg -i zabbix-release_4.0*
sudo apt update


sudo apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-agent

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

wachtwoord invoeren:
St3RkW4cHtWRD

Lukt niet, omdat het create.sql.gz bestand niet bestaat.

sudo wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+xenial_all.deb

sudo dpkg -i zabbix-release_4.0*

Het script voor Zabbix installeren wil niet zoals je hierboven ziet. Maar als ik daarna een ls /usr/share/doc/zabbix-server-mysql doe, dan staat daar een README.Debian.
Met een cat README.Debian zie ik dat ik het volgende moet doen:


zcat /usr/share/zabbix-server-mysql/schema.sql.gz | mysql -uzabbix -p zabbix
wachtwoord invoeren:
St3RkW4cHtWRD

zcat /usr/share/zabbix-server-mysql/images.sql.gz | mysql -uzabbix -p zabbix
wachtwoord invoeren:
St3RkW4cHtWRD

zcat /usr/share/zabbix-server-mysql/data.sql.gz | mysql -uzabbix -p zabbix
wachtwoord invoeren:
St3RkW4cHtWRD
 

Maar ook daar gaat wat fout, meteen al bij het schema. De melding is dat de specified key te lang is, maximum is 767 bytes.  Via een Google zoek-actie kwam ik uit bij deze pagina: link. Ik moet de database dus verwijderen en op de juiste manier aanmaken:


sudo mysql -u root -p
drop database zabbix;
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@'localhost' identified by 'St3RkW4cHtWRD';
FLUSH PRIVILEGES;

Hierna dus weer de 3 statements van schema, images en data uitgevoerd. Images moet je voor data uitvoeren!

sudo vi /etc/zabbix/zabbix_server.conf

Hier de regel DBPassword= actief maken (hekje weg halen en aanvullen met je wachtwoord).

Vervolgens probeer ik om de boel in te stellen, maar in /etc/apache2/conf-enabled staat geen zabbix.conf. Terug kijkend op de stappen zie ik dat de sudo dpka -i zabbix-release_4.0* een foutmelding gaf: "zabbix doesn't support armhf". Een Google-zoekactie geeft me terug dat Zabbix geen ondersteuning (meer) biedt aan ARM, dus de Raspberry Pi (link). Er staat tussendoor nog wel een tip voor de 3.5 versie. Dus deze stappen gevolgd:


sudo wget https://repo.zabbix.com/zabbix/3.5/raspbian/pool/main/z/zabbix-release/zabbix-release_3.5-1%2Bstretch_all.deb

sudo dpkg -i zabbix-release_3.5*
sudo apt update
sudo apt upgrade

Dit loopt goed door. Een aantal maal een vraag over een bestaand bestand, die maar overschrijven.  Uiteindelijk zijn we klaar. 

Vraag is wat ik nu moet doen, weer zaken terugzetten? Database droppen en opnieuw aanmaken? Dat kan later nog, ik probeer nu vanaf mijn andere pc (waar ik ook via Putty met SSH de commando's invoer) in de browser naar http://ipadres/zabbix te gaan. En yes, ik krijg beeld! Versie 4.0, terwijl ik nu de 3.5 geïnstalleerd heb. 

We gaan het proberen. Scherm pre-requisites, alle groene vinkjes. Volgende scherm geeft aan dat de database-inhoud verschilt met de front-end. Is natuurlijk ook raar dat ik in een 4.0 scherm zit en ik volgens mij 3.5 geïnstalleerd heb. Dus nogmaals de database droppen en aanmaken. Bij deze versie staat wel 1 SQL script op de eerder genoemde plaats:


zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Dit uitgevoerd en nogmaals geprobeerd. En ja, nu ga ik wel door naar het volgende scherm! Als ik wil inloggen, probeer ik in te loggen als admin/zabbix. Dat werkt niet. Via een andere pagina vind ik nog een update statement:

update zabbix.users set passwd=md5('zabbix') where alias='Admin';

En dan werkt het nog niet, maar dan zie ik de oorzaak al, het is Admin, met een hoofdletter A. En ja, dan werkt het wel! Even er doorheen bladeren, bij Monitoring, Latest Data even naar Available Memory, ik zie daar een mooi grafiekje. Het heeft wat haken en ogen, maar je kunt Zabbix dus werkend krijgen op een Raspberry Pi 3.