Aktionen

Zabbix Server + Agent unter Ubuntu 14.04 LTS installieren

Aus znilwiki

Warning.png
Warnung: Dieser Artikel wird nicht mehr gepflegt! Bitte die neuere Version verwenden: Zabbix Server + Agent unter Ubuntu 20.04 LTS installieren


Changelog:

  • 20.11.2014: Erste Version für Ubuntu Server 14.04 LTS + Zabbix 2.4.2
  • 21.01.2015: Root freischalten angepasst / ergänzt
  • 29.01.2015: LDAP Support hinzugefügt
  • 24.02.2015: an neue Version Zabbix 2.4.4 angepasst
  • 24.02.2015: XCache hinzugefügt
  • 20.03.2015: fehlendes Paket php5-ldap hinzugefügt (sonst funktioniert LDAP Authentifizierung nicht)
  • 26.03.2015: fehlendes Paket traceroute hinzugefügt (der Menüpunkt aus "Scripts" auf der Weboberfläche funktioniert sonst nicht)
  • 23.04.2015: an neue Version Zabbix 2.4.5 angepasst
  • 15.07.2015: fehlendes Paket snmptt hinzugefügt (wird für SNMP-Traps benötigt)
  • 23.11.2015: ipmitool aufgenommen, an Version 2.4.7 angepasst
  • 25.11.2015: MySQL Optimierung und Einrichtung in 2 Bereiche getrennt, Optimierungen so angepasst das keinerlei Fehlermeldungen beim Start von MySQL erscheinen.
  • 18.01.2016: Anpassung an Zabbix 3.0.0alpha6
  • 29.01.2016: Anpassung an Zabbix 3.0.0beta2
  • 05.02.2016: Anpassung an Zabbix 3.0.0rc1
  • 17.02.2016: Anpassung an Release Version Zabbix 3.0.0 LTS
  • 11.03.2016: Anpassung an Zabbix 3.0.1
  • 26.04.2016: Anpassung an Zabbix 3.0.2 / JMX - Optionen auch bei Zabbix Proxy
  • 06.06.2016: Anpassung an Zabbix 3.0.3
  • 20.06.2016: Anpassung Runlevel für Zabbix Server und Agent
  • 22.06.2016: Abschnitt für Datensicherung
  • 01.07.2016: Abschnitt für Zeit-Synchronisierung
  • 22.07.2016: Anpassung an Zabbix 3.0.4
  • 10.10.2016: Anlegen der Datenbank korrigiert
  • 27.09.2017: libevent-dev libpcre3-dev hinzugefügt (Zabbix 3.4)
  • 27.09.2017: Version 3.4.2 hinzugefügt (in Teilen)


Warning.png
Warnung: Dieser Artikel wird nicht mehr gepflegt! Bitte die neuere Version verwenden: Zabbix Server + Agent unter Ubuntu 20.04 LTS installieren



Installation Ubuntu Server 14.04.x LTS (Long Term Support)

Mit den anderen Versionen - auch und gerade den neueren - geht es natürlich genauso. Ich habe die LTS Version nun ... wegen dem Long Term Support gewählt - klang halt sinnvoll :-)



Grundinstallation

CD einlegen und los,
die Fragen beantwortet Ihr wie folgt (sind ggf. die Überschriften der Dialoge):

  • Deutsch
  • Ubuntu Server installieren
  • [!] Select a language: <Ja>
  • [!] Auswählen des Standorts: Deutschland
  • [!] Tastatur konfigurieren: <Nein>
  • [!] Tastatur konfigurieren: Deutsch
  • [!] Tastatur konfigurieren: Deutsch
  • [!] Netzwerk einrichten: zabbix-server.domain.local (Name nach Wahl!)
  • [!] Benutzer und Passwörter einrichten: installadmin (Benutzername nach Wahl)
  • [!] Benutzer und Passwörter einrichten: installdadmin
  • [!] Benutzer und Passwörter einrichten: test1234 (Kennwort nach Wahl)
  • [!] Benutzer und Passwörter einrichten: test1234
  • [!] Benutzer und Passwörter einrichten: <Nein>
  • [!] Uhr einstellen: <Ja>
  • [!!] Festplatten partitionieren: Geführt - gesamte Platte verwenden und LVM einrichten
  • [!!] Festplatten partitionieren: Return
  • [!!] Festplatten partitionieren: <Ja>
  • [!] Festplatten partitionieren: <Weiter>
  • [!] Festplatten partitionieren: <Ja>
  • [!] Paketmanager konfigurieren: ggf. Proxy angeben <Weiter>
  • [!] Konfiguriere tasksel: Keine automatischen Aktualisierungen
  • [!] Softwareauswahl
    • [*] OpenSSH Server
    • [*] LAMP server
    • <Weiter>
  • [!] Konfiguriere mysql-server-5.5: Passwort nach Wahl <Weiter>
  • [!] GRUB-Bootloader auf einer Festplatte installieren: <Ja>
  • [!!] Installation abschließen: <Weiter>
  • Bootet neu




root wieder freischalten

  • Mit Benutzer installadmin anmelden
sudo passwd root
  • Kennwort des Benutzer installadmin eintippen
  • neues Kennwort für "root" 2x eintippen
  • Lokal Anmelden kann man sich mit root nun - aber eine Anmeldung über SSH funktioniert dann immer noch nicht.
  • Damit diese auch funktioniert müsst ihr die sshd_config bearbeiten:
sudo nano /etc/ssh/sshd_config

sucht nach der Zeile (STRG + W ist Suchen) nach

PermitRootLogin without-password

und setzt ein # davor:

#PermitRootLogin without-password

Speichert die Datei und startet den ssh Dienst neu:

sudo service ssh restart

Ab dann klappt es auch mit dem SSH-Login für den Benutzer root, z.B. über puTTY
Jetzt

logout

eintippen - der (eingeschränkte) Benutzer installadmin hat sich somit abgemeldet


Feste IP-Adresse vergeben

  • Als root anmelden
  • Feste IP vergeben:
nano /etc/network/interfaces

In der Datei den Abschnitt für eth0 wie folgt ändern (mit euren Daten natürlich):

auto eth0
iface eth0 inet static
        address 192.168.1.81
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-search znil.local
        dns-nameservers 192.168.1.1
  • mehrere DNS-Server werden einfach durch Leerzeichen getrennt angegeben
  • Speichern STRG + x, danach j und den Dateinamen mit Enter bestätigen
reboot

eintipppen und den Server damit wieder neu starten - wenn ihr alles rictig gemacht habt hört dieser nun auf die neue IP-Adresse,
wenn er beim Booten zickt und hängt habt ihr wahrscheinlich bei der IP etwas falsch eingetippt - nochmal vergleichen!



Updates einspielen

  • wieder anmelden als "root" - ggf. per puTTY - dann können wir schön die nachfolgenden Befehle per Copy&Paste einfügen.
  • Updates suchen für Betriebssystem: (aktualisiert den Katalog aus den Update-Quellen)
apt-get update
  • Updates einspielen:
apt-get dist-upgrade
  • Nach Update überflüssige Pakete entfernen:
apt-get autoremove




Benötigte Programme für Zabbix installieren

Ich habe hier einige Sachen drin die Ihr nicht unbedingt braucht - aber damit lässt sich auch die aktuelle 2.4.x oder 3.0.x installieren und alle möglichen Features nutzen.

  • Vorbereiten für Zabbix Installation:
apt-get install make gcc libc6-dev libmysqlclient-dev libcurl4-openssl-dev libssh2-1-dev libsnmp-dev libiksemel-dev mysql-server libopenipmi-dev fping php5-gd snmp libsnmp-base openjdk-6-jdk unixodbc unixodbc-dev libxml2 libxml2-dev snmp-mibs-downloader snmpd snmptt python-pywbem php5-ldap traceroute ipmitool libevent-dev libpcre3-dev
Face-wink.png
Tipp: Zum kopieren der oberen Zeile mit der Maus vor das apt-get gehen und doppelklicken. Ggf. mehrmals versuchen - bis die ganze Zeile markiert ist. Diese kann dann so in z.B. PuTTY eingefügt werden


Des weiteren hier noch ein paar zusätzliche Pakete für Features die ich oft nutze, z.B. htop oder nslookup:

apt-get install dnsutils htop




Zabbix Server installieren

Mit Absicht installiere ich hier Zabbix an die Standardorte ... spätestens wenn ihr mehrere Installationen habt und jede einen anderen Ort habt kommt man doch ins schleudern ...
Die Versionsnummern müsst ihr an euere Version anpassen.



Zabbix herunterladen und entpacken

cd /usr/src

Für die Version 2.4.7

wget "http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.7/zabbix-2.4.7.tar.gz"
  • Entpacken:
tar xzf zabbix-2.4.7.tar.gz
cd zabbix-2.4.7/



Für die Version 3.0.x LTS

wget "http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.4/zabbix-3.0.4.tar.gz"
  • Entpacken:
tar xzf zabbix-3.0.4.tar.gz
cd zabbix-3.0.4/



Für die Version 3.4.2

wget "http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.2/zabbix-3.4.2.tar.gz"
  • Entpacken:
tar xzf zabbix-3.4.2.tar.gz
cd zabbix-3.4.2/




Zabbix konfigurieren

Die Installation der ausführbaren Dateien erfolgt bei allen Varianten nach /usr/local/sbin !



Als Server

Version 2.4.x mit VMware-Unterstützung, IPv6, Java-Gateway, Datenbankabfragen und Jabber:

./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --with-libxml2 --enable-ipv6 --enable-java --with-jabber --with-unixodbc --with-ldap



Version 3.0.x LTS mit OpenSSL-Verschlüsselung, VMware-Unterstützung, IPv6, Java-Gateway, Datenbankabfragen und Jabber:

./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --with-libxml2 --enable-ipv6 --enable-java --with-jabber --with-unixodbc --with-ldap --with-openssl




Als Proxy

Version 2.4.x mit VMware-Unterstützung

./configure --enable-proxy --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --with-libxml2 --enable-ipv6 --with-unixodbc



Version 3.2.x / 3.4.x mit OpenSSL, VMware und Java-Gateway Unterstützung

./configure --enable-proxy --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --with-libxml2 --enable-ipv6 --with-unixodbc --with-openssl --enable-java




Zabbix installieren

Mit dem Konfigurieren ist Zabbix noch nicht installiert. Wenn die Konfiguration erfolgreich war müsste es ein Meldung wie diese geben:

***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************

Nun geben wir die folgende Befehle ein:

make
make install

JETZT ist Zabbix installiert - funktioniert aber noch nicht!


Zabbix Benutzer anlegen

Zabbix läuft - aus Sicherheitsgründen - nicht als Benutzer root - wenn es startet versucht es automatisch auf einen Benutzer zabbix zu wechseln.
Bei Windows würde man es den Benutzer nennen unter dem der Dienst läuft.
Diesen legen wir nun an:

adduser --system --home /usr/local/sbin --no-create-home zabbix

falls wir einen anderen Ordner für die Installation genommen haben müssen wir den Pfad natürlich anpassen!



MySQL Datenbank optimieren

Important.png
Hinweis:Es funktioniert auch alles ohne diese Optimierungen! Diese kann man machen wenn der Server etwas größer wird weil wir hunderte von Servern und Geräten überwachen! In diesem Fall sollte auch der Festplattenplatz entsprechend dimensoniert sein!
Für einen einfachen Server könnt Ihr das hier auch überspringen!


Die Einrichtung wird auch hier beschrieben - allerdings etwas knapp: https://www.zabbix.com/documentation/2.4/manual/appendix/install/db_scripts

Die Zabbix-Datenbank kann recht groß werden - wir passen MySQL deshalb aus Performance-Gründe einmal an (diesen Tipp habe ich schamlos von Das 4. Labor übernommen.

  • MySQL Einstellungen bearbeiten:
nano /etc/mysql/my.cnf

und unterhalb von

[mysqld]

Diese Zeilen einfügen:

# Nicht alle Tabellen in einer großen Datei speichern sondern jede Tabelle in einer eigenen Datei
innodb_file_per_table
# Größe der Logdatei statt 10MB
innodb_log_file_size = 512M
# Transaktionswerte nach Möglichkeit nicht in den Doublewritebuffer schreiben
innodb_doublewrite = 0
# Transaktionen schon bestätigen sobald diese im Cache stehen:
innodb_flush_log_at_trx_commit = 2
# Wieviel Hauptspeicher soll zum Puffern verwendet werden? Nehmt die Hälfte des vorhandenen Speichers (bei 4GB RAM also 2G, bei 1G also 512M)
innodb_buffer_pool_size = 1G
# Langsame SQL-Abfragen in ein Log schreiben, hier alle Abfragen über 30 Sekunden
# long_query_time=30
# log-slow-queries=/var/log/mysql/mysql-slow-queries.log
# 2-Phasesn Übertragung ausschalten
innodb_support_xa = No

mit STRG + x den nano verlassen und speichern bestätigen j + Enter)

Warning.png
Warnung: Prüft unbedingt den Wert von innodb_buffer_pool_size!!! Dieser Wert darf nicht größer sein als der tatsächlich vorhandene RAM, sonst startet MySQL nicht


Prüft ggf. ob diese Zeilen dann nicht doppelt vorkommen!
Des weiteren ändert folgenden Zeilen:

key_buffer              = 16M
myisam-recover          = BACKUP

in

key_buffer_size         = 16M
myisam-recover-options  = BACKUP

Er meckert sonst das diese Keyword abgekündigt ist und man gefälligts die lange Schreibweise nehmen soll.

Wenn Ihr später immer mehr Poller, Pinger und andere Zabbix-Prozesse startet müsst Ihr auch die Anzahl der möglichen Verbindungen zu MySQL Datenbank erhöhen.
Auch jeder Nutzer der auf dem Webinterface arbeitet verbraucht Verbindungen. Im zabbix_server.log steht dann eine Meldung mit "too many connection".

Sucht die Zeile

#max_connections        = 100

und ändert diese auf

max_connections        = 300


Da es die Systemdatenbanken schon gibt - aber nicht so wie wir die haben wollen - löschen wir die alten Datenbanken einmal:

service mysql stop
rm -R /var/lib/mysql/*

und erstellen diese gleich wieder neu:

mysql_install_db

Danach den mysql Dienst neu starten:

service mysql start

Dabei könnt Ihr sehen das er noch mal eben die Log-Dateien etc. erstellt.

Warning.png
Warnung: Denn Sie wissen nicht was Sie tun: Wenn ihr das ganze auf einen schon bestehenden Server macht und dort MySQL schon nutzt könnt Ihr natürlich NICHT einfach so die Datenbank löschen! Diese Anleitung gilt für Neuinstallationen mit einem frisch aufgesetzten Linux


Wie im Kommentar beschrieben macht er nun nicht eine große Monsterdatei sondern für jede Tabelle eine einzelne ... Komisch, bei Microsoft-SQL war es gerade der Vorteil alle in einer Datei zu haben ...

Nun müssen wir den mysql Server einmal neu starten:

service mysql restart


Ob Ihr alles richtig gemacht habt könnt Ihr im Log kontrollieren:

cat /var/log/mysql/error.log

Die Ausgabe sollte dann etwa so aussehen:

151125 11:56:35 [Note] Plugin 'FEDERATED' is disabled.
151125 11:56:35 InnoDB: The InnoDB memory heap is disabled
151125 11:56:35 InnoDB: Mutexes and rw_locks use GCC atomic builtins
151125 11:56:35 InnoDB: Compressed tables use zlib 1.2.8
151125 11:56:35 InnoDB: Using Linux native AIO
151125 11:56:35 InnoDB: Initializing buffer pool, size = 512.0M
151125 11:56:35 InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
151125 11:56:35  InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
151125 11:56:35  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 512 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500
151125 11:56:42  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 512 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: 127 rollback segment(s) active.
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
151125 11:56:49  InnoDB: Waiting for the background threads to start
151125 11:56:50 InnoDB: 5.5.46 started; log sequence number 0
151125 11:56:50 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
151125 11:56:50 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
151125 11:56:50 [Note] Server socket created on IP: '127.0.0.1'.
151125 11:56:50 [Note] Event Scheduler: Loaded 0 events
151125 11:56:50 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.46-0ubuntu0.14.04.2-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)

Wichtig ist immer die letzte Zeile - da muss der Port auftauchen auf dem der Server lauscht, in der Regel 3306



MySQL Datenbank einrichten

Warning.png
Warnung: In dieser Anleitung war lange ein "Fehler" beim anlegen der Datenbank - UTF8 wurde nicht explizit angegeben. Jetzt hing es vom der Voreinstellung des jeweiligen Systemes ab was genommen wurde. Dies kann zu Problemen bei doppelten Item oder Triggernamen führen. Wie Ihr prüft ob eure Datenbank richtig angelegt ist und für die Konvertierung der Datenbank nach UTF8 gibt es am Ende des Artikels einen eigenen Abschnitt


  • Zabbix Datenbank anlegen:
  • Hinweis: er wird nach einem Password fragen - das ist das was sie beim Setup dem MySQL root Benutzer gegeben haben!
  • Habt Ihr kein Kennwort vergeben müsst Ihr trotzdem Enter drücken!
mysql -u root -p -e "create database zabbix character set utf8 collate utf8_bin"
mysql -u root -p -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'"

Er fragt nach einem Kennwort - das ist entweder das Kennwort was Ihr beim Setup für den MySQL-Root Benutzer angebenen habt - oder falls ihr wie zuvor beschrieben die Datenbank einmal gelöscht habt - ist es leer, also einfach Return/Enter drücken.

  • nun die Datenbanktabellen anlegen - das geschieht nun unter dem Datenbankbenutzer "zabbix" der das Passwort "zabbix" hat - wenn er also nach einem Passwort fragt nun dieses eingeben. Falls das jemand für unsicher hält - nun der MySQL Server sollte - wenn man es nicht ändert - eh nur lokale Anfragen erlauben, sprich von extern komme ich gar nicht ran.
Important.png
Hinweis: Hinschauen! Hier folgen 2 unterschiedliche Wege für Server oder Proxy!


  • Bei einem Server:


Server Version 2.4.7

mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-2.4.7/database/mysql/schema.sql
mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-2.4.7/database/mysql/images.sql
mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-2.4.7/database/mysql/data.sql



Server Version 3.0.3

mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-3.0.3/database/mysql/schema.sql
mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-3.0.3/database/mysql/images.sql
mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-3.0.3/database/mysql/data.sql



Server Version 3.4.2

mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-3.4.2/database/mysql/schema.sql
mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-3.4.2/database/mysql/images.sql
mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-3.4.2/database/mysql/data.sql



  • Bei einem Proxy:

Auf einem Proxy darf nur die Schema.sql importiert werden!!!!
Solltet Ihr aus versehen alle Schema importiert haben so löscht die Datenbank noch einmal und fangt vonr vorn an! Der Proxy funktioniert nicht wenn er alle Schemas hat!

Proxy Version 2.4.7

mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-2.4.7/database/mysql/schema.sql



Proxy Version 3.0.x

mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-3.0.3/database/mysql/schema.sql




Konfigurationsdateien anpassen

Nun die Konfigurationsdatei bearbeiten:

  • für einen Server:
nano /usr/local/etc/zabbix_server.conf
  • folgende Zeilen finden und auf diese Werte ändern, ggf. den # davor entfernen, STRG + W ist suchen!
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
 
StartVMwareCollectors=5
StartPingers=10
StartPollersUnreachable=5
StartIPMIPollers=5
Timeout=30

#Werte ggf. an den vorhandenen Arbeitsspeicher anpassen!
VMwareCacheSize=64M
CacheSize=64M
HistoryCacheSize=64M
TrendCacheSize=64M
ValueCacheSize=64M

AlertScriptsPath=/usr/local/share/zabbix/alertscripts
ExternalScripts=/usr/local/share/zabbix/externalscripts

FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
  • speichern und verlassen



  • Bei einem Proxy:
nano /usr/local/etc/zabbix_proxy.conf
  • folgende Zeilen finden und auf diese Werte ändern, ggf. den # davor entfernen, STRG + W ist suchen!
ProxyMode=0

Server=IP oder DNS Name des Zabbix-Servers an den gemeldet werden soll

ServerPort=10051

# Hostname -> unter diesem Namen müssen wir den Proxy auch auf dem Hauptserver anlegen!
Hostname=zabbixproxy

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

Timeout=30

StartVMwareCollectors=5

ExternalScripts=/usr/local/share/zabbix/externalscripts
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6




Automatischen Start beim Booten einrichten

Dazu müssen wir die Start/Stop Scripte hinterlegen. Aus persönlicher Neigung - und weil es beim Befehl service mit dem Tab nicht immer klappte - mache ich es hier auf die Debian-Methode. Starten kann man die Dienste hinter trotzdem mit dem service Befehl:
Nicht vergessen die Versionsnummern ggf. anzupassen!

  • Auf einem Server


Server Version 2.4.7

cp /usr/src/zabbix-2.4.7/misc/init.d/debian/zabbix-* /etc/init.d/



Server Version 3.0.x

cp /usr/src/zabbix-3.0.4/misc/init.d/debian/zabbix-* /etc/init.d/



Danach die Skripte in den Systemstart aufnehmen:>br>

update-rc.d zabbix-agent defaults 99
update-rc.d zabbix-server start 99 2 3 4 5 . stop 5 0 1 6 .



  • Auf einem Proxy


Proxy Version 2.4.7

cp /usr/src/zabbix-2.4.7/misc/init.d/debian/zabbix-* /etc/init.d/



Proxy Version 3.0.x

cp /usr/src/zabbix-3.0.4/misc/init.d/debian/zabbix-* /etc/init.d/



und danach:

mv /etc/init.d/zabbix-server /etc/init.d/zabbix-proxy
nano /etc/init.d/zabbix-proxy

und die Zeile

NAME=zabbix_server
DESC="Zabbix server daemon"

in

NAME=zabbix_proxy 
DESC="Zabbix proxy daemon"

ändern
Danach die Skripte in den Systemstart aufnehmen:>br>

update-rc.d zabbix-agent defaults 99
update-rc.d zabbix-proxy start 99 2 3 4 5 . stop 5 0 1 6 .




Start von Zabbix testen

Nun müsste man den Zabbix Server wie andere Dienste auch über die init-Scripte starten können

service zabbix-server start
oder
/etc/init.d/zabbix-server start

bzw. beim Proxy:

service zabbix-proxy start
oder
/etc/init.d/zabbix-proxy start

Den Agenten dazu starten wir mit

service zabbix-agent start
oder
/etc/init.d/zabbix-agent start



Ob alle ok ist sehen wir mit

ps aux|grep zabbix

Die Ausgabe sollte etwa so sein:

zabbix   19179  0.1  0.1 228876  3420 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19181  0.0  0.0 228876  1740 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19182  0.0  0.0 228876  1972 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19183  0.0  0.0 231916  2884 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19184  0.0  0.0 231916  2884 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server 
zabbix   19185  0.0  0.0 231916  2884 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19186  0.0  0.0 231916  2884 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19187  0.0  0.0 231916  2884 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19188  0.0  0.0 231916  2884 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19189  0.0  0.0 228876  1972 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19190  0.0  0.0 228876  1972 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19191  0.0  0.0 228876  1972 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19192  0.0  0.0 228876  1972 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19195  0.0  0.0 228876  1972 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19196  0.0  0.0 229152  1972 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19197  0.0  0.0 228876  1972 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19204  0.0  0.0 228876  2044 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19205  0.0  0.0 228876  1972 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19206  0.0  0.0 228876  1972 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19211  0.0  0.0 231916  2880 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19215  0.0  0.0 228876  1968 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19217  0.0  0.0 228876  1968 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19218  0.0  0.0 228876  1968 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19219  0.0  0.0 228876  1968 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19220  0.0  0.0 228876  1968 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19221  0.0  0.0 228876  1968 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
zabbix   19222  0.0  0.0 228876  1740 ?        S    14:57   0:00 /usr/local/sbin/zabbix_server
  • wenn da nur ein Pozess läuft, Ihr also nur eine Zeile habt, gab es wohl Fehler, mit
more /tmp/zabbix_server.log

können wir uns das Logfile ja mal ansehen - die neuesten Sachen stehen unten! Da müsste ein Block wie folgt sein,
wenn alles geklappt steht er gleich am Anfang:

19179:20130903:145759.708 Starting Zabbix Server. Zabbix 2.4.2 (revision 38017).
19179:20130903:145759.708 ****** Enabled features ******
19179:20130903:145759.708 SNMP monitoring:           YES
19179:20130903:145759.708 IPMI monitoring:           YES
19179:20130903:145759.708 WEB monitoring:            YES
19179:20130903:145759.708 Jabber notifications:      YES
19179:20130903:145759.709 Ez Texting notifications:  YES
19179:20130903:145759.709 ODBC:                      YES
19179:20130903:145759.709 SSH2 support:              YES
19179:20130903:145759.709 IPv6 support:              YES
19179:20130903:145759.709 ******************************
19181:20130903:145759.716 server #1 started [configuration syncer #1]
19182:20130903:145759.716 server #2 started [db watchdog #1]
19183:20130903:145759.719 server #3 started [poller #1]

Ansonsten steht da der Fehler - in der Regel die Datenbankanbindung oder der Benutzer zabbix

Bei einem Proxy kann es noch folgende Fehlermeldung geben:

failed to update local proxy configuration copy: Can't open JSON object or array ""failed"}"


Naja, wir müssen den Proxy auf unserem Haupt-Zabbix-Server unter

Administration - GM - Proxies

noch anlegen - und zwar bitte genau mit dem gleichen Namen wie in der zabbix_proxy.conf unter Hostname= angegeben - dann ist der Fehler weg.

Bei Erfolg sollte das dann so aussehen:

RaspberryPi-als-Zabbix-Proxy-001.png

An den Sekunden unter 'Last seen (age)' sehen wir die letzte Kontaktaufnahme.
Wenn da überhaupt etwas steht hatten wir Erfolg!


Webinterface installieren (nur Server)

  • Wenn wir es mit den üblichen Anleitungen machen finden wir später die Weboberfläche unter http://servername/zabbix
  • wenn man halt keinen Unterordner /var/www/zabbix erstellt sondern die index.html löscht und die Zabbix Dateien direkt da reinkopiert reicht auch später der Servername ohne Verzeichnisangabe. Alternativ baut man da einen Refresh (Seitenumleitung) ein.
  • Ich installiere hier so das man den Server später nur mit http://servername aufrufen kann
rm /var/www/html/index.html

Kopieren:


Auf einem Server 2.4.7

cp -r -f /usr/src/zabbix-2.4.7/frontends/php/* /var/www/html
chown -R www-data:www-data /var/www/html/*



Auf einem Server 3.0.x

cp -r -f /usr/src/zabbix-3.0.4/frontends/php/* /var/www/html
chown -R www-data:www-data /var/www/html/*



Auf einem Server 3.4.2

cp -r -f /usr/src/zabbix-3.4.2/frontends/php/* /var/www/html
chown -R www-data:www-data /var/www/html/*




In der Datei /etc/php5/apache2/php.ini

nano /etc/php5/apache2/php.ini

folgendes anpassen: (STRG + W war Suchen!)

date.timezone = Europe/Berlin
max_execution_time = 600
post_max_size = 32M
memory_limit = 256M
mbstring.func_overload = 0
upload_max_filesize = 16M
max_input_time = 600

Danach Webserver neu starten:

service apache2 restart
oder
/etc/init.d/apache2 restart


Nun auf die Weboberfläche gehen, die sollte unter http://IP-Adresse oder http://DNS-Name verfügbar sein.
Anmerkung: So ein Linux trägt sich nicht von allein in den DNS Server ein, ggf. müsst Ihr den da von Hand nachtragen.



Webinterface beschleunigen

Die Reaktionszeiten der Webseite und der Darstellung lassen sich mit einem PHP-Beschleuniger / Cacher spürbar beschleunigen:

apt-get install php5-xcache

und danach den Apache neu starten:

service apache2 restart


Wer sehen ob der auch richtig arbeitet macht folgendes:

mkdir /var/www/html/xcache
cp -a /usr/share/xcache/htdocs/* /var/www/html/xcache
chown -R www-data:www-data /var/www/html/xcache/

Dann noch die Anmeldung abschalten:

nano /etc/php5/mods-available/xcache.ini

und die folgen Zeilen finden:

[xcache.admin]
xcache.admin.enable_auth = On

ändern in

[xcache.admin]
xcache.admin.enable_auth = Off

und den Apache noch einmal neu starten:

service apache2 restart


Nun könnt Ihr unter:

http://IP-Zabbix-Server/xcache

die Wirksamkeit beobachten. Gerade neu installiert ist da natürlich noch nicht viel im Cache.



Zeitserver setzen

Damit die Uhrzeit des Zabbix-Servers auch immer genau ist kann dieser die Uhrzeit mit dem Internet abgleichen.
Dazu benötigten wir das Paket ntp:

apt-get install ntp


Wer die voreingestellten Zeitserver nutzen will muss nichts mehr tun.
Wer eigene Zeitserver für die Abfrage nutzen will muss die Konfigurationsdatei bearbeiten:

nano /etc/ntp.conf

und danach den Service neu starten:

service ntp restart


Die Synchronisation lässt sich per Befehl kontrollieren:

ntpq -p

Ausgabe:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 beastie.deuza.n 195.83.222.27    2 u   24   64    1    0.501    9.552   0.000
 ns1.kashra.com  .PPS.            1 u   23   64    1   29.484    9.128   0.000
 fr1.tomhek.net  163.172.41.83    3 u   22   64    1    0.685   12.810   0.000
 ip139.ip-5-196- 10.21.137.1      2 u   21   64    1    0.581    8.332   0.000
 golem.canonical 193.79.237.14    2 u   20   64    1    8.674   13.075   0.000




VMware Tools installieren

Wenn euer Zabbix-Server auch eine virtuelle Maschine ist dürfen die VMware Tools nicht fehlen!
VMware selbst empfiehlt inzwischen die Installation der Open-VM-Tools, unter vSphere 6 gibt der Installer eine entsprechende Meldung aus und bricht die Installation ab.

Die Tools installiert Ihr einfach mit:

apt-get install open-vm-tools



Wollt Ihr - Warum auch immer - die VMware-Tools von vSphere installieren so geht wie folgt vor:

  • CD im vCenter / ESX Server per vSphere Client einlegen
  • CD Mounten:
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
  • Entpacken (Versionsnnummer eurer Tools anpassen)
tar xzvf /mnt/cdrom/VMwareTools-10.0.0-3000743.tar.gz -C /tmp/
  • Installieren
cd /tmp/vmware-tools-distrib/
./vmware-install.pl -d
  • Schalter -d heisst er gleich durchrauscht ohne nachzufragen und die Standard-Verzeichnisse nimmt.
  • Falls er hier mit den Hinweis auf die Open-VM-Tools abbricht:
./vmware-install.pl
und von Hand weiter machen. Alle Fragen ggf. einfach nur mit Enter bzw, Return bestätigen.
  • netter weise wirft er die CD auch gleich wieder raus
  • Fertig!




Agent konfigurieren (nur Proxy)

Wir wollen natürlich unseren 'Zabbix Proxy' gleich mit überwachen!
Wenn es ein Server ist, ist dieser gleich automatisch mit drin (ist der erste Host der schon in der Liste steht, muss nur aktiviert werden) Bearbeiten wir zunächst die Konfigurationsdatei:

nano /usr/local/etc/zabbix_agentd.conf

und ändert folgende Zeile:

Hostname=zabbixproxy.domain.local

Den Namen passt Ihr natürlich an eure Bedürfnisse an - wichtig ist nur das Ihr den Host auf dem Zabbix-Server unter exakt dem gleichen Namen anlegt!

Important.png
Hinweis: Ihr wollt die zabbix_agentd.conf ändern, NICHT die zabbix_agent.conf - man beachte den feinen Unterschied!



Das Start-Skript haben wir vorhin schon kopiert.
Am besten bootet Ihr euren Zabbix Proxy nun einmal durch und prüft hinterher ob die Prozesse für den Agenten und den Server laufen.



Windows-Freigabe für Agenten-Dateien einrichten

Zabbix Proxys setzen wir irgendwo außerhalb in anderen Netzerwerken ein ... und nun wollte ich dort auch zentral eine Freigabe haben in der die Dateien für den Windows-Agenten liegen.
Zudem wollte ich eine eigene Freigabe für mein Zabbix-Agenten-Autoupdate-Projekt.

Ja, ich richte hier eine "Jeder Vollzugriff" - Freigabe ein - meinen AgentAutoUpdate lasse ich am liebsten mit SYSTEM Rechten laufen (wegen UAC-Kontrolle) - und so gibt es kein Problem mit den Zugriffsberechtigungen

Wenn die Installation nachträglich erfolgt - erst einmal Updaten!

apt-get update
apt-get upgrade


Nun installieren wir Samba - damit erstellt man Windows-Freigaben unter Linux:

apt-get install samba samba-common-bin

das dauert einen Moment - und danach können wir Samba konfigurieren.

Inzwischen gibt es Samba 4 (naja schon eine ganze Weile) und bei neuen Ubuntu 14.04. Installationen wird diese nun aus den Paket-Quellen installiert.

Welche Samba Version Ihr habt könnt Ihr mit dem Befehl

samba -V
Ausgabe: Version 4.1.6-Ubuntu

feststellen. Gibt es de Befehl nicht habt Ihr Samba 3 !



Samba 3

Warning.png
Warnung: Dieser Abschnitt nur nutzen wenn Ihr Samba 3 installiert habt! Siehe Text im Abschnitt vorher!


Konfiguration erfolgt über ein zentrale Datei:

nano /etc/samba/smb.conf

In dieser ändern wie folgende Zeilen (wie immer: mit STRG + W kann man in nano suchen)

workgroup = ZNIL         ; NetBIOS Domänenname in euerer Umgebung, könnt Ihr auch auf WORKGROUP lassen
wins support = no
wins server = 192.168.1.1 ; Falls es einen WINS-Server bei euch im Netzwerk gibt, geben wir diesen hier an
map to guest = bad user

ganz am Schluss fügen wir folgende Zeilen hinzu:

[Zabbix-Agent]
path = /media/zabbix-agent
public = yes
writeable = yes
guest ok = yes
available = yes
read only = no

dann speichern und verlassen.
Nun müssen wir den Ordner noch anlegen:

mkdir /media/zabbix-agent
chmod 777 /media/zabbix-agent/

und den Dienst von Samba neu starten:

service smbd restart && service nmbd restart


Ab jetzt können wir über

\\IP-Adresse-Zabbix-Proxy\Zabbix-Agent

von Windows aus auf die Freigabe zugreifen und die Dateien dort ablegen.

Important.png
Hinweis: Wenn Ihr statt der IP-Adresse einen Namen verwenden wollt müsst Ihr diesen Namen auf euren DNS Server anlegen



Wenn Ihr im Abschnitt der Freigabe auch noch die Zeile

browseable = no

angebt habt ihr eine versteckte Freigabe - wenn man direkt den Pfad angibt geht es noch.



Samba 4

Warning.png
Warnung: Dieser Abschnitt nur nutzen wenn Ihr Samba 4 installiert habt! Siehe Text im Abschnitt vorher!


Konfiguration erfolgt über ein zentrale Datei:

nano /etc/samba/smb.conf

In dieser ändern wie folgende Zeilen (wie immer: mit STRG + W kann man in nano suchen)

workgroup = ZNIL         ; NetBIOS Domänenname in euerer Umgebung, könnt Ihr auch auf WORKGROUP lassen
wins support = no
wins server = 192.168.1.1 ; Falls es einen WINS-Server bei euch im Netzwerk gibt, geben wir diesen hier an

ganz am Schluss fügen wir folgende Zeilen hinzu:

[Agent]
comment = Zabbix Agents
path = /media/agent
guest ok = yes
read only = no

dann speichern und verlassen.
Nun müssen wir den Ordner noch anlegen:

mkdir /media/agent
chmod 777 /media/agent/

und den Dienst von Samba neu starten:

service smbd restart && service nmbd restart


Ab jetzt können wir über

\\IP-Adresse-Zabbix-Proxy\Agent

von Windows aus auf die Freigabe zugreifen und die Dateien dort ablegen.

Important.png
Hinweis: Wenn Ihr statt der IP-Adresse einen Namen verwenden wollt müsst Ihr diesen Namen auf euren DNS Server anlegen





Es poppt ständig ein Anmeldefenster beim Zugriff auf die Freigabe auf

Falls Ihr beim Zugriff auf die Freigabe immer ein Anmeldefenster bekommt (obwohl ja eigentlich der Zugriff ohne Passwort ist) so könnt Ihr dort einen beliebigen Buchstaben als Benutzernamen eingeben und die Anmeldung wegdrücken.
Dauerhaft weg bekommt Ihr die Anmeldung wenn Ihr in puTTY noch mal ein

pdbedit -x administrator
service smbd restart && service nmbd restart

eingebt.
Der Grund ist nämlich das Ihr unter Windows unter dem gleichen Benutzernamen arbeitet den Ihr auch als Installationsbenutzer bei der Installation von Ubuntu angelegt habt (auch wenn Ihr jetzt als root arbeitet). Dann habt Ihr nämlich bei der Installation von Linux den Benutzer "administrator" unter Linux angelegt und Samba hat ihn sich kopiert. Mit obigen Befehl ist er aus Samba wieder gelöscht worden.


Proxy/Server mit in Windows-Domäne aufnehmen

In manchen Domänen hatte ich nun das "Problem" das immer ein Fenster mit Benutzername / Passwort aufgeht - es ist dabei völlig egal was man eintippt, man kommt an die Freigabe. War aber nervig.
Lösung: Wir nehmen den ZabbixProxy mit in die Domäne auf und Ruhe ist!

Important.png
Hinweis: Ich hatte es jetzt bei einem Kunden da war es genau umgekehrt! Macht diesen Tipp nur wenn ihr das beschriebene Problem habt!


Also noch mal

nano /etc/samba/smb.conf

und dann wie folgt ändern:

security = domain
workgroup = ZNIL

Workgroup MUSS dabei euren NetBIOS Domänen-Namen entsprechen.
Dann Speichern und die Dienste neu starten:

service smbd restart && service nmbd restart

und mit folgendem Befehl der Domäne beitreten:

net rpc join -S <Domänencontroller> -U Administrator

<Domänencontroller> ersetzt ihr dabei durch den Namen eures primärem Dömencontroller, also dem Rolleninhaber
Er fragt dann nach dem Kennwort und ist dann Domänenmitglied - was Ihr gerne im AD kontrollieren könnt (landet unter Computers)
Ab nun "rauscht" der Zugriff auf die Freigabe immer durch.




Datensicherung des Zabbix-Servers

Bevorzugt installiere ich Zabbix-Server als Virtuelle Maschinen / VM's.
Die Backup-Software sichert am besten einfach die gesamte VM.
Eigentlich jede Backup-Software macht hierzu während der Sicherung einen Snapshot, sichert die Festplattendaten und löstt dann den Snapshot wieder auf.
Wer dabei sicher gehen will das die Datenbank in einem konsistenten Zustand gesichert wird kann folgendes tun:

  • Wir halten den Zabbix-Server und die Datenbank vor einem Snapshot an
  • wir machen den Snapshot
  • Wir starten die Datenbank und den Zabbix-Server wieder


Unter VMware funktioniert das mit 2 Skripten die wir wie folgt anlegen:

nano /usr/sbin/pre-freeze-script

mit folgendem Inhalt:

#!/bin/sh
echo "$(date) pre-freeze" >> /tmp/snapshot.log
service zabbix-server stop
service mysql stop


und

nano /usr/sbin/post-thaw-script


#!/bin/sh
echo "$(date) post-thaw" >> /tmp/snapshot.log
service mysql start
service zabbix-server start


Jetzt müssen wir die beiden Skripte noch ausführbar machen und dem root zuordnen:

chmod 0700 /usr/sbin/pre-freeze-script
chmod 0700 /usr/sbin/post-thaw-script
chown root:root /usr/sbin/pre-freeze-script
chown root:root /usr/sbin/post-thaw-script


Voraussetzung ist das die VMware-Tools installiert sind! Nun können wir die Skripts testen indem wir einen Snapshot mit den folgenden Einstellungen erstellen:

Pre-and-Post-Scripts-001.png


Wenn wir uns die Logs ansehen sollte

  • Ein Eintrag in die Datei /tmp/snapshot.log vorgenommen
  • Der Zabbix-Server gestoppt
  • Der MySQL-Server gestoppt
  • Wieder ein Eintrag in die Datei /tmp/snapshot.log geschrieben
  • Der MySQL-Server wieder gestartet
  • Der Zabbix-Server wieder gestartet

werden.



Datenbank nach UTF8 konvertieren

1. Testen wie die die Datenbank angelegt wurde:

mysql -rroot -p
show create database zabbix;

Wenn die Ausgabe wie folgt ist:

+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| zabbix   | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.03 sec)

Das haben wir das Problem - da MUSS UTF8 stehen.
Nun habe ich einige Kunden die nun seit vielen Jahren auf "latin1" stehen - ohne Probleme.
Wer trotzdem die Datenbank umwandeln will:

MACHT EIN BACKUP!

Ich habe in meiner VM vorher halt einfach einen Snapshot gemacht - bei ausgeschalteter VM.

Dann Zabbix Server anhalten:

service zabbix-server stop

Und dann den folgenden Einzeiler ausführen:

DB="zabbix"; ( echo 'ALTER DATABASE `'"$DB"'` CHARACTER SET utf8 COLLATE utf8_bin;'; mysql "$DB" -e "SHOW TABLES" --batch --skip-column-names | xargs -I{} echo 'ALTER TABLE `'{}'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;' ) | mysql "$DB"

Der funktioniert wenn der root-Benutzer keine Passwort hat.
Ansonsten diese Variante nutzen:

DB="zabbix"; USERN="root"; PASSW="test1234"; ( echo 'ALTER DATABASE `'"$DB"'` CHARACTER SET utf8 COLLATE utf8_bin;'; mysql -u$USERN -p$PASSW "$DB" -e "SHOW TABLES" --batch --skip-column-names | xargs -I{} echo 'ALTER TABLE `'{}'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;' ) | mysql "$DB" -u$USERN -p$PASSW

und am Anfang Benutzernamen/Passwort anpassen.
Danach sollte das so aussehen:
mysql> show create database zabbix;

+----------+----------------------------------------------------------------------------------+
| Database | Create Database                                                                  |
+----------+----------------------------------------------------------------------------------+
| zabbix   | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)




Kommentare

Warning.png
Warnung: Dieser Artikel wird nicht mehr gepflegt! Bitte die neuere Version verwenden: Zabbix Server + Agent unter Ubuntu 20.04 LTS installieren


Loading comments...
Warning.png
Warnung: Dieser Artikel wird nicht mehr gepflegt! Bitte die neuere Version verwenden: Zabbix Server + Agent unter Ubuntu 20.04 LTS installieren