Beschreibung: E:\MyWorks\Daten\RPW\logos\rpwlogo150x16.png

 

 

 

 

 

 

 

 

 

Beschreibung: Zabbix

 

 

ZABBIX Version 1.8.12

 

 

 

 

 

 

Anleitung zur Einrichtung

 

auf Ubuntu 10.10 Server

 

 

Dokument Version 1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Letzte Änderung von RealPowerWork am 03.05.2012

 

Copyright © 2012 by RealPowerWork


Inhaltsverzeichnis

Grundlegendes. 6

Zabbix Allgemein.. 6

Hardware Anforderungen.. 7

Datenbank Größe. 7

Software Anforderungen.. 8

Zeitsynchronisation (Time synchronization) 9

Installation von Ubuntu Server 10.10. 10

Update und Upgrade der installierte Software durchführen.. 16

Installation und Kontrolle installierte Software.. 17

Installation von „net-smp-5.7.1“. 18

Installation der notwendigen Pakte für Zabbix. 18

Installation optionaler Pakete. 19

Postfix Installation. 20

Fehler bei der Installation von Ubuntu Server 10.10. 20

Fehler beim Ausführen vom “sudo aptitude install” kommt “Das Netzwerk ist nicht erreichbar”. 20

Fehler beim starten vom Apache2 Server kommt 20

Fehler sehr viele “vhost_combined” Meldungen im Appache2 “other_vhost_access.log”. 21

Fehler beim Ausführen vom “make” bei “net-snmp” kommt “cannot find -lperl”. 21

Aktivierung der „Uncomplicated Firewall“ (UFW) 21

Zeitzone und Zeitbasis einstellen.. 22

MySQL Datenbankserver.. 23

MySQL Server auf Einzeldateien („innodb_file_per_table“) umstellen. 23

Erstellen einer neuen Zabbix Datenbank auf MySQL. 23

Fehler: „ ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) “. 23

Fehler: MySQL Server bringt beim Starten mit „/etc/init.d/mysql start“: 23

Installation von Zabbix.. 26

Installation von Zabbix Server 1.8.12. 26

Paketauflistung notwendiger Pakete. 26

Anpassung der Linux Konfiguration für Zabbix. 26

Installation der Zabbix Programmdateien. 27

Fehler bei der Zabbix Server Installation. 29

Fehler: „configure: error: Not found MySQL library“. 29

Fehler:  “checking for curl-config” „configure: error:  Not found Curl library“. 29

Fehler:  „checking for  main in –lnetsnmp… no“ configure: error:  Not found NET-SNMP library“. 30

Fehler:  „Can not find “/usr/include/net-snmp/net-snmp-config.h”. The net-snmp development files seems to be missing. Exiting Checking for main in –lnetsnmp … no configure: error:  Not found NET-SNMP library“. 30

Fehler beim Ausführen vom “./configure” für “net-snmp” kommt “configure: error:”. 30

Fehler bei “./configure” mit “--with-jabber” kommt “Jabber Library not found”. 30

Fehler bei “./configure” mit “--with-openipmi” kommt “Invalid OPEMIPMI directory”. 30

Fehler bei „./configure“ mit „--with-ssh2“ kommt „SSH2 library not found“. 31

Fehler Zabbix Server wird nach einigen Minuten wieder beendet (Zabbix Server crash after startup) 32

Update auf Zabbix Server 1.8.12. 32

Durchführung der Upgrade Installation Zabbix Server. 32

Ugrade Patches für Zabbix. 34

Fehler bei der Upgrade Installation Zabbix Server. 35

Fehler beim Upgrade Patch kommt “Duplicate entry '0-9-system.uname-192.168.0.4-10050' for key 2”. 35

Fehler bei kopieren der Zabbix-Frontend Dateien kommt “cp: Verzeichnis… ausgelassen”. 36

Installation Zabbix Agenten (am Server) 36

Installation vom Zabbix Web-Frontend (am Server) 37

Fehler:  „Time Zone for PHP ist not set. Please set „date.timezone“ option in php.ini“. 37

Neu Kompilierung eines Zabbix Linux Agenten. 37

Einrichtung eines Zabbix Linux Agenten. 38

Sicherung/Rücksicherung der Zabbix Datenbank.. 39

Sicherung und Rücksicherung unter MySQL. 39

Datenbankhändling (Optimierung, Verkleinerung) 40

1. Versuch mit Optimierung. 40

1. Versuch mit Sicherung (Dump) und Rücksicherung in neue MySQL Instanz. 41

Fehler: Bei Rücksicherung der Datenbank kommt folgende Meldung. 42

Fehler: Undefined index: show_events_status[/var/www/tr_status.php:199] 42

Installation von einem Zabbix Proxy.. 43

Kopieren der ausführbaren Dateien auf andere Linux Stationen. 43

Installation der Zabbix Agenten.. 45

Installation Zabbix Windows Agenten (GUI Installation) 45

Fehler: Unter „Show details“ steht „Registering zabbix agent in windows services.. „Agent install failed…“. 48

Arbeiten mit Zabbix (Web-Frontend) 49

Erster Start vom Zabbix Web-Frontend.. 49

Anlegen eines neuen Benutzers (Users) 54

Anlage oder Import/Export von Vorlagen (Template) 54

Anlegen eines neuen Systems (Host) 55

Anlegen neuer Elemente (Item) 57

Linux Template. 57

Windows Template. 57

Erstellen einer Applikation um eigene Elemente (Items) zu testen. 58

Anlegen neuer Auslöser (Triggger) 58

Auslöser für unser vorher erstellte Applikation (siehe unter Elemente) erstellen. 59

Test des eigenen Auslöser 60

Systeme (Host) mit Ping überprüfen. 60

Beispiel eines Items und Trigger für „Ping“. 61

Fehler: „icmpping“ welcher als „Einfache Prüfung“ (Simple Check) in den Elementen (Item) angelegt wurde wird nicht ausgeführt. 61

Anlegen neuer Aktionen (Actions) 61

Anlegen neuer Graphen (Graphs) 63

Anlegen neuer Pläne (Maps) 63

Anlegen neuer Symbole. 65

Anlegen eines neue geographischen Plans. 65

Hintergrundbild anlegen. 65

Geographischen Plan anlegen. 66

Anlegen neuer Übersichtstafeln (Screens) 67

Fehler im Zabbix Webfrontend.. 68

Fehler: Anzeige im Dashboard (Last 20 issues) „Server zabbix.company.com is unreachable“. 68

Fehler:“ZABBIX is temorary unavailable!“ oder „mysql_pconnect()..: Can’t connect to local MySSQL server through socket..“  68

Fehler: Fehler beim starten vom Zabbix-Webfrontend „It is not safe to rely on the system timzone settings“. 69

Fehler: Im Status wird “Zabbix Server ist aktiviert“ mit Wert „Nein“ angezeigt 69

Fehler: “Processor load is too high on HOST-1”. 70

Fehler: Zuteilung einer vorhandene „Applikationen“ (Applications) unter „Elemente“ (Items) nicht möglich. 70

Grundlagen zu Elementen (Items) 71

So sammelt und speichert Zabbix die Daten.. 71

Der generelle Aufbau von Items. 71

Itemname und die Datenquelle. 71

Der Item-Key. 72

Datentypen und Einheiten. 73

Update interval 74

Historische Daten speichern. 75

Differenzbildung und Werte-Mapping. 75

Items gruppieren, klonen und deaktivieren. 76

Anlage neuer Elemente (Items) 76

Durchführung sogenannter “Simple checks” (ohne Agent) 76

“Timeout” Verarbeitung. 78

ICMP-Pings. 78

Kalkulierte Elemente (Calculated items) 79

Beispiel 1. 80

Beispiel 2. 80

Beispiel 3. 81

Beispiel 4. 81

Beispiel 5. 81

Beispiel 6. 81

Einsatz von SSH und Telnet Checks. 81

Authentifizierung. 82

Item anlegen. 82

Nützliche Kommandos. 83

Telnet-Checks. 84

SSH-Checks. 84

Fehler bei SSH oder Telnet Checks. 85

Fehler bei SSH Check ist Status oder im Log „Not Supported“. 85

Praxisbeispiel für Elemente (Items) und Auslöser (Trigger) 86

Monitoring VMware ESXi Host on HP DL Server.. 86

Fehler bei Installation „./vmware-install.pl“ kommt Meldung „libxml-libxml-perl …not installed…“. 89

Fehler bei Installation „./vmware-install.pl“ kommt Meldung „Please install Perldoc“. 89

Fehler die Installation bringt keinen Fehler aber die vSphere Scripte werden nicht installiert 89

Fehler bei „sudo ./vmware-install.pl“ kommt „CPAN not able to install…“ mit „UUID“. 90

Fehler beim Ausführen „sudo cpan UUID“. 90

Erklärungen zum Hardware Monitoring. 91

Fehler beim Ausführen vom „zabbix_wbem_vmware.pl“ kommt „Defekter Interpreter“. 93

Fehler beim „wbemcli“ Test kommmt „CIM_ERR_INVALID_NAMESPACE“. 94

Fehler beim „wbemcli“ Test kommmt „Usage: wbemcli…“. 94

Abfragen vom Status bei ESXi 5.0 über Python.. 94

Zabbix ESX-Server per Common Information Model CIM ueberwachen.. 94

ESX CIM-API 94

CIM-API mit Zabbix abfragen. 95

Python pywbem installieren. 95

User im ESX- oder ESXi-Server einrichten. 95

Externes Skript installieren. 96

Den HealthState interpretieren. 98

Informationen gezielt abfragen und bündeln. 99

Items einrichten. 99

Trigger einrichten. 100

Links. 101

Beim Ausführen vom „./cim.esx..“ kommt „No Module named pywbem“. 101

Fehler bei Installation von „python-pywbem“ kommt „Versuche, /usr/bin/wbemcli zu überschreiben…“. 101

Praxisbeispiel für Elemente und Auslöser.. 102

Windows Server (Clients) Prüfungen.. 102

Windows Ereignisprotokoll (Event Logs) Abfragen. 102

Praxisbeispiel: Überprüfung Backup Exec auf erfolgreiche Sicherung. 102

Praxisbeispiel: Überprüfung Antivirus Definition Status. 102

Praxisbeispiel: Überprüfung Security Patches. 102

Anpassung vom Zabbix-Webfrontend.. 103

Eigene Firmenlogo hinter Zabbix Logo anzeigen. 103

Einrichtung von dynamischen PDF Reports in Zabbix.. 104

Fehler auf der Website Screen kommt „Unable to login“. 105

Fehler nach klicken auf „Generate“ kommt „ERROR: Zabbix has received an incorrect request“. 106

Allgemeine Fehler bei Zabbix.. 107

Fehler im Zabbix-Frontend. 107

Fehler: Im Frontend „Lack of free swap space on ZABBIX Server“. Danach bleibt der Server komplett hängen und führt nach einiger Zeit einen Notrestart durch. 107

Fehler: “Cannot connect to [xxx.xxx.xxx.xxx:10050] [Connection refused]” wird unter Konfiguration – Systeme im Frontend angezeigt. 108

Fehler: "Availabilitiy" wird “Unknow” im Frontend angezeigt obwohl Zabbix Agent auf Host installiert und gestartet ist. 109

Fehler: “Cannot connect to [xxx.xxx.xxx: 10050] [Interrupted system call]” wird unter Konfiguration - Systeme im Frontend angezeigt. 109

Fehler: "Unable to get value for functionid". 109

Fehler im „/var/log/messages“ wird die Meldung „zabbix -- MARK –„ alle 20 Minuten angezeigt. 110

Fehler im Zabbix Frontend kommt „reset() expect parameter 1 to be array, null given [include/blocks.inc.php:908]“. 110

Grundlagen SNMP und WMIC.. 111

Verwendung von SNMP. 111

Prüfung der SNMP Verfügbarkeit 111

Fehler bei SNMP.. 111

Fehler: “Timeout while connecting to [dr-zentrale-wimmer:161]” wenn einem Drucker das Template “ Template_HP_LaserJet“ zugewiesen wird. 111

Fehler: “Error: OID not increasing: .1.3.6.1.2.1.7.5.1.2.10.254.222.224.123 >= .1.3.6.1.2.1.7.5.1.1.10.254.222.224.161”. 111

Windows WMIC Management.. 112

Zabbix unter VMWare als Zabbix-Proxy.. 114

Installation auf der Verwaltungsstation.. 114

Installation auf den Zabbix-Proxy Zielsystem... 114

Zabbix Appliance.. 115

Zabbix Appliance VMware.. 115

Benutzen Sie eine statische IP Adresse. 115

Andere Änderungen. 115

Zabbix configuration. 115

Passwords. 116

Datei Verzeichnisse. 116

Änderungen in der Zabbix Konfiguration. 116

Sicherung der Konfiguration. 116

Frontend Zugriff 116

Firewall 117

Monitoring capabilities. 117

Aufruf vom Zabbix Server und Agenten. 117

Vordefinierte Skripte. 118

Zabbix Appliance für Xen.. 118

 


Grundlegendes

 

ZABBIX wurde erstellt von Alexei Vladishev, und wird im Moment aktiv Weiterentwickelt und Supported von ZABBIX SIA. Zabbix ist eine registrierte Marke von ZABBIX SIA.

 

Homepage: http://www.zabbix.com/index.php

 

 

ZABBIX ist eine Unternehmens fähig Open Source Software Lösung für Monitoring.

 

ZABBIX ist eine Monitoring Software, welche eine Vielzahl von Parametern eines Netzwerkes oder von Servern erfassen kann, und somit die Funktion und Integrität dieser sicherstellt.

ZABBIX benutzt flexiblen Informationsmechanismen, die je nach Konfiguration, die Benutzer per Email über aufgetretene Ereignisse warnen können. Das erlaubt eine schnelle Reaktion auf Server oder Netzwerk Komponenten Probleme.

ZABBIX bietet ein exzellentes Reporting und eine Visualisierung von Daten anhand von gespeicherten Daten. Das macht ZABBIX ideal für Kapazitätsplanungen.

 

ZABBIX unterstützt dabei sowohl Abfragen (Polling)sowie Mitteilungen (Trapping). Alle ZABBIX Reports und Statistiken, sowie alle Konfigurationsparameter können über ein Web-Frontend abgefragt und verändert werden.

Ein Web basierendes Frontend garantiert, dass der Status des Netzwerke oder eines Servern unabhängig von der Lokation ermittelt werden kann. Richtig konfiguriert kann ZABBIX eine sehr wichtige Rolle im Monitoring der IT Infrastruktur übernehmen. Dies ist gleich wichtig für kleine Organisationen mit wenigen Servern, wie auch für große Firmen mit einer Vielzahl an Servern.

 

ZABBIX ist frei von Kosten (Open Source). ZABBIX ist geschrieben und wird vertrieben unter  der „GPL General Public License version 2“. Das bedeutet dass der Quellcode frei verteilt werden kann und verfügbar für alle ist.

 

Für ZABBIX ist ein freier Support über Foren oder ein kommerzieller Support von ZABBIX Firmen möglich. [http://www.zabbix.com/support.php]

 

Zabbix Allgemein

Das System besteht aus drei voneinander unabhängigen Komponenten. Das Herz stellt der Zabbix-Server dar. Dieser überwacht alle angemeldeten Clients, startet zugeordnete Aktionen und sammelt ständig alle verfügbaren Daten der Clients, die er in einer Datenbank speichert. Versorgt wird der Server durch simple Anfragen (PING, FTP, http, etc.) durch SNMP, SSH, eterne Skripte oder durch Zabbix-Agenten, die jeweils auf den zu überwachenden Systemen installiert werden.

 

Die Zabbix-Agenten teilen den Zabbix-Server in periodischen Abständen den Status des Systems mit. Die Kommunikation des Zabbix-Servers erfolgt über Port 10051 und die der Agenten über den Port 10050 (auf Firewalls freischalten). Für die Visualisierung der Systemressourcen und die Konfiguration des Servers ist dagegen die Web-Komponente das Frontend zuständig. Das Frontend kann auf einem dedizierten System installiert werden und auf die Daten des Servers zugreifen.

 

Die eigentliche Überwachung findet über sogenannte Auslöser (Trigger) statt. Diese machen nichts anderes, als beim Eintreten einer bestimmten Situation eine definierte Aktion auszuführen. Sie sind in Gruppen festgelegt und in der Grundkonfiguration schon zahlreich vorhanden, können aber bei Bedarf von Administrator durch weitere Auslöser erweitert oder geändert werden. Um die Verwaltung zu erleichtern sind alle Auslöser in Gruppen unterteilt und könne so für spezielle Hardwarekomponenten oder Betriebssysteme festgelegt werden.

 

Die Elemente (Items) ermitteln die Daten, welche ein Auslöser (Trigger) benötigt um eine festgelegte Bedingung abzuprüfen. Die Elemente werden durch den sogenannte „Discovery“ Dienst vom Zabbix-Server ermittelt. Auch die Elemente sind in Gruppen zusammengefasst. Sie können individuell an die Bedürfnisse der Systeme angepasst werden. Durch Änderung oder Erstellung von neuen Elementen kann die Funktionalität zur Ermittlung der Daten flexible erweitert und somit auch neue Auslöser festgelegt werden.

 

Hardware Anforderungen

x RAM Speicher (Memory): mind. 256MB
Anmerkung: Je mehr RAM Speicher vorhanden ist desto schneller wird die MySQL Datenbank (und somit auch ZABBIX) laufen.

 

x Festplattenplatz (Hardisk free): mind. 256MB
Die Größe des Festplattenplatzes ist abhängig von der Anzahl der Systeme und der Parameter die Überwacht werden. Für die Planung einer Langzeit-Historie der zu überwachenden Systeme, sollten Sie schon einige Gigabyte an Festplattenspeicher vorsehen.

 

Die Tabelle zeigt verschiedene Hardware Konfigurationen:

Name

Platform

CPU/Memory

Database

Monitored host

Small

Ubuntu

Linux

PII 350MHz

256MB

MySQL MyISAM

20

Medium

Ubuntu

Linux 64 bit

AMD Athlon

3200+

2GB

MySQL InnoDB

500

Large

Ubuntu

Linux 64 bit

Intel Dual

Core 6400

4GB

RAID10

MySQL InnoDB

or

PostgreSQL

>1000

Very Large

RedHat

Enterprise

Intel Xeon

2xCPU

8GB

Fast RAID10

MySQL InnoDB

or

PostgreSQL

>10000

 

Anmerkung: Für sehr große Installation wird empfohlen die Datenbank auf einen separaten Rechner laufen zu lassen.

Datenbank Größe

Die ZABBIX Konfigurationsdaten benötigen eine fixe Größe von Festplattenplatz und wachsen danach nur mehr wenig.

Die ZABBIX Datenbank Größe ist von diesen Parametern welche die Größe und die Historischen Daten festlegen abhängig:

x Anzahl der Prozesse pro Sekunde
Das ist die Durchschnittliche Anzahl von neuen Werten welche ZABBIX Server in einer Sekunde empfängt. Zum Beispiel, wenn 3000 Elemente (Items) mit einer Aktualisierungsrate von 60 Sekunden überwacht werden, wird die Anzahl der Werte berechnet mit 3000/60 = 50
Das bedeutet das 50 neue Werte vom ZABBIX Server pro Sekunde erfasst werden.

x Aufbewahrungsfrist (Housekeeper) für den Verlauf (Historie)
ZABBIX behält die Werte für eine vorgegebene fixe Periode von Wochen oder Monaten. Jeder neue Wert benötigt eine bestimmte Größe vom Festplattenplatz für Daten und Index.
Wenn wir  z.B. Werte für 30 Tage in der Historie behalten wolle und pro Sekunden 50 Werten empfangen so ergibt dies eine Größe von: (
30*24*3600)*50 = 129.600.000, oder über 130M von Werten.
Anhängig vom Typ der empfangenen Werte (Integer, Floats, Strings, Log files, etc), kann der Festplattenplatz für einzelne Werte von 40 Byte bis zu hunderten Bytes ausmachen. Normal sind durchschnittlich 50 Byte pro Wert.
In unseren Beispiel bedeutet dies, dass 130M von Werten werden verbrauchen 130M * 50 Bytes =
6.5GB vom Festplattenplatz.

x Aufbewahrungsfrist (Housekeeper) für Trends
ZABBIX behält 1 Stunde  max/min/avg/count Statistiken für alle Elemente in der Tabelle
Trends. Die Daten werden benutzt für Trendanalysen oder Langzeit Graphen.
Die Größe in Bytes für Trends ist abhängig von der Datenbank, verbraucht ca. 128 Byte für die Summen.
Angenommen wir wollen Trend Daten mit 3000 Werten für 5 Jahre aufbewahren, so ergibt dies: (3000/1800)*(24*3600*
365)*128 = 6.3GB pro Jahr, oder 31.5GB für die 5 Jahre.

x Aufbewahrungsfrist (Housekeeper) für Ereignisse (Events)
Jedes ZABBIX Ereignis benötigt ca. 130 Bytes vom Festplattenplatz. Schwieriger ist die Anzahl der Ereignisse die ZABBIX generiert vorherzusehen. In „worst case” Szenarios, nehmen wir an das ZABBIX pro Sekunden ein Ereignis generiert.
Das bedeutet dass, für eine Aufbewahrung für 3 Jahre
3*365*24*3600*130 = 11GB benötigt wird

 

 

The table contains formulas that can be used to calculate disk space required for ZABBIX system:

Parameter

Formel zur Berechnung Festplattenplatz (in Bytes)

ZABBIX Konfiguration

Fixe Größe von: Normal10MB oder wenige

Verlauf (History)

Tage*(Elemente/Aktualisierungsrate)*24*3600*Bytes

Elemente: Anzahl von Elementen (Items)

Tage: Anzahl der Tage der Aufbewahrung des Verlauf

Aktualisierungsrate: Durchschnittliche Aktualisier-ungsrate von Elementen

Bytes: Anzahl von Bytes um die Werte zu speichern, normal 50 Bytes.

Trends

Tage*(Elemente/1800)*24*3600*Bytes

Elemente: Anzahl von Elementen (Items)

Tage: Anzahl der Tage der Aufbewahrung der Trends

Bytes: Anzahl von Bytes um die Werte zu speichern, normal 128 Bytes.

Ereignisse (Events)

Tage*Ereignisse*24*3600*Bytes

Ereignisse: Anzahl der Ereignisse pro Sekunde.

Ein (1) Ereignis pro Sekunden in „worst case“

Szenario.

Tage: Anzahl der Tage der Aufbewahrung der Ereignisse

Bytes: Anzahl von Bytes um die Werte zu speichern, normal 130 Bytes.

 

Der gesamte zu reservierende Festplattenplatz berechnet sich aus:

Konfiguration + Historie + Trends + Ereignisse

 

ANMERKUNG: Der benötigte Festplattenplatz für verteilte ZABBIX Systeme ist abhängig von den Zabbix-Proxy (Child-Nodes) welche mit einem Zabbix-Server (Parent-Node) verbunden sind.

 

Software Anforderungen

Als Betriebsystem können folgende verwendet werden: Linux, AIX, FreeBSD, HP-UX, Mac OS/X, NetBSD, OpenBSD oder SCO Open.

 

Wir verwenden für unser Installation „Ubuntu Server 10.10“ in der 32-bit oder 64-Bit Version

 

Die folgende Software Liste zeigt die notwendigen Versionen für ZABBIX:

Software

Version

Comments

Apache

1.3.12 oder höher

 

PHP

5.0 oder höher

 

PHP modules:

php-gd

GD 5.0 oder höher

PHP GD Module müssen PNG Grafiken unterstützen.

php-bcmath

 

php-bcmath, –enable-bcmath

PHP XML support

 

php-xml, if provided as a separate package by the distributor

PHP socket support

 

php-net-socket, –enable-sockets. Required for user script support

OpenIPMI

2.0.13 oder höher

Required for IPMI support

MySQL

php-mysql

3.22 oder höher

Notwendig wenn MySQL von ZABBIX als Back-End Datenbank verwendet wird.

Oracle

php-oci8

9.2.0.4 oder höher

Notwendig wenn Oracle von ZABBIX als Back-End Datenbank verwendet wird.

PostgreSQL

php-pgsql

7.0.2 oder höher

Notwendig wenn PostgreSQL von ZABBIX als Back-End Datenbank verwendet wird.

 

Wählen Sie PostgreSQL 8.x oder höher wenn Sie höher Datenbank Perfomrance benötigen.

SQLite

php-sqlite3

3.3.5 oder höher

Notwendig wenn SQLite von ZABBIX als Back-End Datenbank verwendet wird.

 

Die oben Versionsnummern werden von neuen Linux-Distributionen immer erfüllt.

Zeitsynchronisation (Time synchronization)

Eine funktionierende Zeitsynchronisation ist sehr wichtig für einem laufenden ZABBIX Server damit alle Elemente von den Systemen auch zeitgenau erfasst werden können.

Für Europa muss als Zeitzone in der Datei „/etc/php5/apache2/php.ini“ die Option:

„date.timezone = Europe/Vienna“ eingetragen werden.

 

user@zabbix-1:~$ sudo nano /etc/php5/apache2/php.ini


Installation von Ubuntu Server 10.10

 

WICHTIG! Wenn Sie während der Installation gleich eine fixe IP-Adresse vergeben wollen, so schließen Sie jetzt das Netzwerkkabel vom System ab! Bei virtuellen Maschinen (VM) die Netzwerkkarte deaktivieren. Bei virtuellen PCs stellen Sie die Netzwerkkarte auf „Netzwerkbrücke“ ein.

 

1.    Stellen Sie im BIOS ein, dass ein CD/DVD Laufwerk als Startlaufwerk verwendet werden kann.

2.    CD oder DVD in Laufwerk einlegen und System starten.

3.    Wenn Sie das Netzwerkkabel abgeschlossen oder die Netzwerkkarte in einer VM deaktiviert haben sollten Sie folgende Meldung sehen. Klicken Sie auf „Weiter“.



4.    Wählen Sie danach „Netzwerk manuell einrichten“ aus.



5.    Danach geben Sie die gewünschte IP-Adresse z.B. „10.0.0.145“ ein und dann mit Tabulator Taste auf „Weiter“.



6.    Bestätigen Sie die Subnet Maske wenn diese wie vorgeschlagen stimmt mit Tabulator „Weiter“.



7.    Geben Sie Gatway Adresse von diesem Netzwerk ein. Bei xDSL ist die meist die IP-Adresse „10.0.0.138“. Mit Tabulator auf „Weiter“.



8.    Geben Sie die IP-Adresse für den Namenserver (DNS Server) ein hier ist das auch wieder der xDSL Router „10.0.0.138“. Mit  Tabulator auf „Weiter“.



9.    Geben Sie den Rechnernamen (Hostnamen) ein z.B. „Zabbix“. Mit  Tabulator auf „Weiter“.



10.  Geben Sie den Domänennamen (DNS Suffix) für das Netzwerk ein z.B. „realpowerwork.com“.
WICHTIG! Vor der Auswahl von „Weiter“ und <Enter> jetzt das Netzwerkkabel wieder anstecken oder die Netzwerkkarte in der VM wieder aktivieren damit Internetzugriff besteht!
Mit  Tabulator auf „Weiter“.



11.  Bestimmung des Zeitservers wird durchgeführt (Netzwerkkabel sollte angesteckt sein).
Bestätigen Sie die Einstellung wie hier z.B. „Europa/Vienna“ mit „Ja“.



12.  Partitionsmethode: „Geführt – verwende vollständige Festplatte“ mit Enter auswählen.



13.  Bestätigen Sie die Meldung das die gefunden Fesplatte verwendet wird und ALLE DATEN ÜBERSCHRIEBEN WERDEN mit <Enter>.



14.  Bestätigen Sie den  Vorschlag der Partitionstabelle mit „1 Partition als ext4“ und „2 Partition als Swap“mit Tabulatur und „Ja“,



15.  Voller Name des neuen Benutzers: „Zabbix Benutzer“ ein. Mit Tabulator auf „Weiter“.



16.  Beim Benutzername für Ihr Konto gebn Sie „zabbix“ ein. Mit Tabulator auf „Weiter“.



17.  Geben Sie das Passwort für den neuen Benutzer zweimal hintereinander ein.

18.  Bestätgien Sie „Nein“ mit <Enter> wenn Sie Ihre Festplatte nich verschlüsseln wollen.



19.  Wenn Sie keinen HTTP-Proxy in Ihrem Netzwerk besitzen, lassen das Feld für den Proxy leer. Mit Tabulator auf „Weiter“.



20.  Wählen Sie die Software welche Sie installieren wollen aus (mit der <space> Taste):
* LAMP Server
* OpenSSH Server
Auswahl bestätigen mit Tabulator und <Enter>.
Anmerkung: Wenn Sie PostgreSQL verwenden wollen, wählen Sie dies zusätzlich aus.



21.  Neues Passwort für den MySQL „root“ Benutzer eingeben und im nächsten Fenster nochmals bestätigen. Mit Tabulator auf „Weiter“.



22.  Warten Sie bis die Installation der Dateien beendet ist und bestätigen Sie die Installation vom „GRUB-Bootloader“ mit „Ja“.



23.  Sie könnten jetzt noch den Hinweis bekommen, dass die Systemuhren normalerweise auf UTC eingestellt werden, und dass das Betriebsystem diese in die lokale Zeitzone umrechnet. Bestätigen Sie jetzt ob die Sytemzeit auf „UTC“ gesetzt werden sollmit „Ja“.



24.  Die DVD wird jetzt ausgeworfen und Sie erhalten die Mledung das die Installation abgeschlossen wurde. Geben Sie <Enter> ein um den Computer neu zu starten.



25.  Warten Sie bis das System neu gestartet wurde.

Update und Upgrade der installierte Software durchführen

Update und Upgrade  von installiertne Paketen mit „aptitude“ ausführen. Siehe Befehlsliste:

 

$ sudo aptitude update à downladen der Liste von „Upgradeable“ Paketen

$ sudo aptitude safe-upgrade à Upgrade von installieren Pakten ausführen

 

Anmerkung: Kontrollieren Sie in der Datei „/etc/apt/apt.conf“ ob die Proxyeinstellungen stimmen.


 

Installation und Kontrolle installierte Software

 

Zusätzlich zu installierende Paket werden mit „aptitude“ installiert Siehe Befehlsliste:

$ sudo aptitude search <Paketname> à suche nach Paket und zeige Status

$ sudo aptitude install <Paketname> à Installation oder Update vom Paket

$ sudo aptitude remove <Paketname> à Entferne Paket

$ sudo aptitude clean à löscht die downgeladenen Paketdateien

$ sudo aptitude autoclean à löscht alte downgeladenen Paketdateien

 

Anmerkung: Sie können natürlich auch „apt-get“ verwenden, wenn Sie diesen bevorzugen. Sie sollten nur nicht zwischen „apt-get“ und „aptitude“ mischen, sondern sich für einen Installer entscheiden.

 

Überprüfung von installierter PHP Software:

$ sudo aptitude search gcc

[sudo] password for zabbix:

$i   gcc-4.2-base                                                               - The GNU Compiler Collection (base package)

$ sudo aptitude search apache

i   apache2                                                                    - Next generation, scalable, extendable web server

v   apache2-mpm                                                                -

i   apache2-mpm-prefork                                                        - Traditional model for Apache HTTPD

i   apache2-utils                                                              - utility programs for webservers

i   apache2.2-common                                                           - Next generation, scalable, extendable web server

i   libapache2-mod-php5                                                        - server-side, HTML-embedded scripting language (apache 2 module)

$ sudo aptitude search mysql

i   libdbd-mysql-perl                                                          - A Perl5 database interface to the MySQL database

i   libmysqlclient15off                                                        - MySQL database client library

v   mysql-client                                                               -

i   mysql-client-5.0                                                           - MySQL database client binaries

i   mysql-common                                                               - MySQL database common files

v   mysql-community-client-5.0                                                 -

v   mysql-community-server-5.0                                                 -

i   mysql-server                                                               - MySQL database server (meta package depending on the latest version)

i   mysql-server-5.0                                                           - MySQL database server binaries

i   php5-mysql                                                                 - MySQL module for php5

v   virtual-mysql-client                                                       -

v   virtual-mysql-server                                                       -

$ sudo aptitude search php

i   libapache2-mod-php5                                                        - server-side, HTML-embedded scripting language (apache 2 module)

i   php5-common                                                                - Common files for packages built from the php5 source

v   php5-json                                                                  -

i   php5-mysql                                                                 - MySQL module for php5

v   phpapi-20060613+lfs                                                        -

$ sudo aptitude search curl

i   libcurl3-gnutls                                                            - Multi-protocol file transfer library (GnuTLS)

$ sudo aptitude search gnutls

i   libcurl3-gnutls                                                            - Multi-protocol file transfer library (GnuTLS)

i   libgnutls13                                                                - the GNU TLS library - runtime library

 

Erklärung (der Kurzel am Anfang der Zeile):

i à bedeutet, dass diese Pakete installiert sind

p à bedeutet “purged” oder auch “nicht installiert”

A à steht für “Automatic”, diese werden bei Bedarf automatisch installiert.

v à steht für eine virtuelles Paket, diese Pakete sind in anderen Paketen enthalten.

H à steht für Teilweise installiert

 

Zusammenfassung notwendiger Pakte für Zabbix Grundsystem:

Es wird für MySQL das Paket: „libmysqlclient15-dev“ benötigt.

 

Die obige Ausgabe zeigt das für PHP “php5-gd”, und „php5-curl“ nicht installiert ist.

 

Für das Web-Monitoring fehlt das Paket „curl“, „libcurl-dev

 

Für SNMP werden die Pakete „Net-SNMP“ benötigt hier „net-snmp-5.7.1.tar.gz“
Download
http://www.net-snmp.org/download.html

Installation von „net-smp-5.7.1“

Kopieren Sie das Paket „net-snmp-5.7.1.tar.gz“ auf den Server und führen Sie folgende Befehle aus.

 

$ sudo aptitude install gcc

$ tar xvf net-snmp-5.7.1.tar.gz

$ cd net-snmp-5.7.1.tar.gz

$ ./configure

         ************** Configuration Section **************

 

        You are about to be prompted with a series of questions.  Answer

them carefully, as they determine how the SNMP agent and related

applications are to function.

 

        After the configure script finishes, you can browse the newly

created net-snmp-config.h file for further - less important - parameters to

modify.  Be careful if you re-run configure though, since net-snmp-config.h

will be overwritten.

 

-Press return to continue-

Default Version SNMP: 3

System Contact Information (zabbix@): webmaster@realpowerwork.com

System Lokation (Unknow): Austria

Location to write logfile (/var/log/snmp.log):

Location to write persistent information (/var/net-snmp):

 

---------------------------------------------------------

            Net-SNMP configuration summary:

---------------------------------------------------------

 

  SNMP Versions Supported:    1 2c 3

  Net-SNMP Version:           5.4.4

  Building for:               linux

  Network transport support:  Callback Unix TCP UDP

  SNMPv3 Security Modules:     usm

  Agent MIB code:             default_modules =>  snmpv3mibs mibII ucd_snmp notification notification-log-mib target age

nt_mibs agentx disman/event disman/schedule utilities host

  Embedded Perl support:      disabled

  SNMP Perl modules:          building -- not embeddable

  SNMP Python modules:        disabled

  Authentication support:     MD5

  Encryption support:

 

---------------------------------------------------------

 

$ make

$ sudo make install

 

Für normale Ping mit ICMPPING wird das Paket „fping“ benötigt.

Für den Email Versand wird das Paket „postfix“ benötigt.                         

Installation der notwendigen Pakte für Zabbix

$ sudo aptitude install libmysqlclient15-dev

$ sudo aptitude install php5-gd

$ sudo aptitude install php5-curl

$ sudo aptitude install curl

$ sudo aptitude install libcurl-dev

$ sudo aptitude install libcurl4-gnutl-dev

$ sudo aptitude install libcurl-openssl-dev

$ sudo aptitude install fping

$ sudo aptitude install postfix

$ sudo aptitude install traceroute

 

WICHTIG! Installation von “php5-gd” und „php5-curl“ war nur mit aktivierter Internetverbindung möglich.

Installation optionaler Pakete

Für die Verwendung vom  „SSH Agent“ wird „libssh2-1-dev“ und „libssh2-php“ gebraucht.

 

$ sudo aptitude install libssh2-1-dev

$ sudo aptitude install libssh2-php

 

Für das Auslesen von Hardwareinformationen bei Servern über IPMI, muss das Paket „ipmptool“ installiert werden.

 

$ sudo aptitude install ipmitool

Richte ipmitool ein (1.8.11-2ubuntu3) ...

ipmievd: using pidfile /var/run/ipmievd.pid0

Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory

Unable to open interface

invoke-rc.d: initscript ipmievd, action "start" failed.

Unable to start ipmievd during installation.  Trying to disable.

$ sudo aptitude install libopenipmi-dev

 

Wenn Sie einen Jabber Server (Instant Messaging Server) unter Zabbix verwenden wollen installieren Sie noch das Paket „jabberd2“.

 

$ sudo aptitude install jabberd2

Richte libpq5 ein (8.4.11-0ubuntu0.10.10) ...

Richte libudns0 ein (0.0.9-3) ...

Richte jabberd2 ein (2.2.8-2ubuntu4.0.10.10.1) ...

Starting Jabber services: router sm s2s c2s.

Verarbeite Trigger für libc-bin ...

ldconfig deferred processing now taking place

$ sudo aptitude install libiksemel-dev

Richte libiksemel-dev ein (1.2-4build1) ...

Ignoring install-info called from maintainer script

The package libiksemel-dev should be rebuilt with new debhelper to get trigger support

 


 

Postfix Installation

 

Als Postfix Konfiguration wird „Internet-Site“ verwendet.

 

 

Als „System-E-Mail-Name“ geben Sie den FQDN Ihres Server ein  z.B: „zabbix.realpowerwork.com“.

 

Fehler bei der Installation von Ubuntu Server 10.10

Fehler beim Ausführen vom “sudo aptitude install” kommt “Das Netzwerk ist nicht erreichbar”

 


Feh http://de.archive.ubuntu.com maverick-updates/universe amd64 Packages

  Verbindung mit de.archive.ubuntu.com:80 kann nicht aufgebaut werden (141.30.13.30). - connect (101: Das Netzwerk ist nicht erreichbar) [IP: 141.30.13.30 80]

Feh http://de.archive.ubuntu.com maverick-updates/multiverse amd64 Packages

  Verbindung mit de.archive.ubuntu.com:80 kann nicht aufgebaut werden (141.30.13.30). - connect (101: Das Netzwerk ist nicht erreichbar) [IP: 141.30.13.30 80]

 

Behebung:

Hier hatte sich  durch eine DHCP Installation und spätere Umstellung der IP Adresse ein Fehler im Routing (“route –n”) eingestellt, welche nich mehr entfernt werden konnte.
Es war ein Routing Eintrag für “*” (oder “0.0.0.0”) auf die IP-Adresse “10.0.0.0” vorhanden welcher auf keine Host zeigte, auch ein manelles hinzufügen von Routings änderte nichts.

Da auf dem System noch nichts instakkiert war, wurde die Installation neu durchgeführt.

 

Fehler beim starten vom Apache2 Server kommt

 

zabbix@cca-zabbix-1:~/zabbix-1.8.12$ /etc/init.d/apache2 start

 * Starting web server apache2                                                                                          (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80

no listening sockets available, shutting down

Unable to open logs

Action 'start' failed.

The Apache error log may have more information.

 

Behebung

Führen Sie den Befehl als “root” Benutzer mit “sudo” aus:
“$ sudo /etc/init.d/apache2 start

 

Fehler sehr viele “vhost_combined” Meldungen im Appache2 “other_vhost_access.log”

Im Apache2 „access.log“ (/var/log/apache2/access.log) erscheint fortlaufend die Meldung „vhost_combined“.

 

Behebung:

Öffnen Sie die Konfigurationsdatei für die virtuellen Host z.B. „realpowerwork.com.conf“ und schreiben sie in jede eine eigen Zeile für die „CustomLog“ Datei hinein:
„CustomLog /var/log/apache2/realpowerwork.com_access.log combined“

Starten Sie danach den Apach Server neu mit „sudo /etc/init.d/apache2 reload“.

Fehler beim Ausführen vom “make” bei “net-snmp” kommt “cannot find -lperl”

 

/usr/bin/ld: cannot find -lperl

collect2: ld returned 1 exit status

make[1]: *** [libnetsnmpagent.la] Fehler 1

make[1]: Verlasse Verzeichnis '/home/zabbix/net-snmp-5.7.1/agent'

make: *** [subdirs] Fehler 1

 

oder

 

/usr/bin/ld: cannot find -lperl

collect2: ld returned 1 exit status

make[1]: *** [libnetsnmpagent.la] Fehler 1

make[1]: Verlasse Verzeichnis '/home/zabbix/net-snmp-5.7.1/agent'

make: *** [installsubdirlibs] Fehler 1

zabbix@zabbix:~/net-snmp-5.7.1$

 

Behebung:

Sie haben den “make install” nicht mit den vorangestellen “sudo” als “Sudoer” ausgeführt und daher keine Rechte die Dateien zu installieren. Jetzt sollte der Fehler nicht mehr auftreten.

 

 

Aktivierung der „Uncomplicated Firewall“ (UFW)

Die Aktivierung der Firewall erfolgt mit folgendem Kommando:

 

$ sudo ufw enable

 

Um neue Erlaubnisregel für SSH und Zabbix Server zu erstellen, geben Sie folgendes ein:

 

$ sudo ufw allow 22/tcp

$ sudo ufw allow 25/tcp

$ sudo ufw allow 80/tcp

$ sudo ufw allow 10051/tcp

 

Status der Firewall sollte so aussehen

$ sudo ufw status

$

To                         Action  From

--                         ------  ----

22:tcp                     ALLOW   Anywhere

10051:tcp               ALLOW   Anywhere

80:tcp                     ALLOW   Anywhere

25:tcp                     ALLOW   Anywhere

 

 

Das Firewall Logging kann mit folgendem Befehl abgeschaltet werden:

$ sudo ufw logging off

 

Zeitzone und Zeitbasis einstellen

 

Zeitzone einstellen:

$ sudo dpkg-reconfigure tzdata

Current default timezone: 'Europe/Vienna'

Local time is now:      Tue Jan 26 17:05:53 CET 2010.

Universal Time is now:  Tue Jan 26 16:05:53 UTC 2010.

 

Hardware Uhrzeit Einstellen

$ sudo hwclock –show

Die 26 Jän 2010 16:50:10 CET  -0.875051 seconds

$ sudo hwclock --set --date="01/26/2010 16:57:05"

$ sudo hwclock --hctosys

 

Parameter für „hwclock“:

Parameter

Beschreibung

--show

Zeigt den Stand der Hardware-Uhr in lokaler Zeitzone (auch wenn die Hardware-Uhr nach UTC läuft)

--set –date“3/22/2012 10:00:00“

Stelle die Hardware-Uhr auf den 22.3.2012 10:00:00 Lokalzeit

--hctosys

Stellt die Systemzeit nach der Hardware-Uhr.

--systohc

Stellt die Hardware-Uhr nach der momentanen Systemzeit.

 

Wenn die BIOS-Zeit die lokale Uhrzeit sein soll, folgendes eingeben:

 

$ sudo nano etc/default/rcS

UTF=no

 


 

MySQL Datenbankserver

MySQL Server auf Einzeldateien („innodb_file_per_table“) umstellen

 

In der Konfigurationsdatei „/etc/mysql/my.cnf“ folgendes ändern:

 

$ sudo nano /etc/mysql/my.cnf

[mysqld]

user            = mysql

socket          = /var/run/mysqld/mysqld.sock

port            = 3306

basedir         = /usr

datadir         = /var/lib/mysql

tmpdir          = /tmp

skip-external-locking

skip-innodb

innodb_file_per_table = 1

#

# Instead of skip-networking the default is now to listen only on

# localhost which is more compatible and is not less secure.

$ sudo /etc/init.d/mysql restart

 

Erstellen einer neuen Zabbix Datenbank auf MySQL

Geben Sie folgenden Befehle für die Erstellung einer neuen Zabbix MySQL Datenebank ein:

 

zabbix@zabbix:~$ mysql -u<username> -p<password>

mysql> create database zabbix character set utf8;

mysql> quit;

zabbix@zabbix:~$ cd zabbix-1.8.12

zabbix@zabbix:~/zabbix-1.8.12$ cd create/schema

zabbix@zabbix:~/zabbix-1.8.12/create/data$ cat mysql.sql | mysql -u<username> -p<password> zabbix

zabbix@zabbix:~/zabbix-1.8.12/create/data$  cd ../data                              

zabbix@zabbix:~/zabbix-1.8.12/create$ cat data.sql | mysql -u<username> -p<password> zabbix

zabbix@zabbix:~/zabbix-1.8.12/create$ cat images_mysql.sql | mysql -u<username> -p<password> zabbix

 

Es wird hier die Zabbix Datenbank mit den Namen “zabbix” erstellt und die Schema Dateien für die Datenbank werden gleich importiert. Ersetzen Sie <username> und <passoword> durch die Zugangsdaten für Ihren MySQL Server.

 

Hinweis: Die Anlage der Zabbix Datenbank wird im Kapitel “Installation von Zabbix” nochmals beschrieben.

 

Fehler: „ ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) “

Ursache: Falscher Benutzername oder falsches Passwort für MySQL
Abhilfe: Der MySQL  „root“ Benutzer muss nicht das gleiche Passwort wie der System „root“ Benutzer besitzen. Kontrollieren Sie Ihre MySQL Installation welches Passwort Sie den „root“ Benutzer gegeben haben.

 

Fehler: MySQL Server bringt beim Starten mit „/etc/init.d/mysql start“:

 

* Starting MySQL database server mysqld                                                                         [fail]

 

oder im “/var/log/syslog” steht folgendes

 

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: stored checksum 0, prior-to-4.0.14-form stored checksum 0

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: Page lsn 0 0, low 4 bytes of lsn at page end 0

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: Page number (if stored to page already) 0,

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0

Nov 24 13:04:20 zabbix mysqld[4982]: 081124 13:04:20InnoDB: Error: trying to access a stray pointer 0x35a27ff8

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: buf pool start is at 0xb5a18000, end at 0xb6218000

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: Probable reason is database corruption or memory

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: corruption. If this happens in an InnoDB database recovery, see

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: how to force recovery.

Nov 24 13:04:20 zabbix mysqld[4982]: 081124 13:04:20InnoDB: Assertion failure in thread 3082700480 in file ./../include/buf0buf.ic line 268

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: We intentionally generate a memory trap.

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: Submit a detailed bug report to http://bugs.mysql.com.

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: If you get repeated assertion failures or crashes, even

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: immediately after the mysqld startup, there may be

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: corruption in the InnoDB tablespace. Please refer to

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html

Nov 24 13:04:20 zabbix mysqld[4982]: InnoDB: about forcing recovery.

Nov 24 13:04:20 zabbix mysqld[4982]: 081124 13:04:20 - mysqld got signal 11;

Nov 24 13:04:20 zabbix mysqld[4982]: This could be because you hit a bug. It is also possible that this binary

Nov 24 13:04:20 zabbix mysqld[4982]: or one of the libraries it was linked against is corrupt, improperly built,

Nov 24 13:04:20 zabbix mysqld[4982]: or misconfigured. This error can also be caused by malfunctioning hardware.

Nov 24 13:04:20 zabbix mysqld[4982]: We will try our best to scrape up some info that will hopefully help diagnose

Nov 24 13:04:20 zabbix mysqld[4982]: the problem, but since we have already crashed, something is definitely wrong

Nov 24 13:04:20 zabbix mysqld[4982]: and this may fail.

Nov 24 13:04:20 zabbix mysqld[4982]:

Nov 24 13:04:20 zabbix mysqld[4982]: key_buffer_size=0

Nov 24 13:04:20 zabbix mysqld[4982]: read_buffer_size=131072

Nov 24 13:04:20 zabbix mysqld[4982]: max_used_connections=0

Nov 24 13:04:20 zabbix mysqld[4982]: max_connections=100

Nov 24 13:04:20 zabbix mysqld[4982]: threads_connected=0

Nov 24 13:04:20 zabbix mysqld[4982]: It is possible that mysqld could use up to

Nov 24 13:04:20 zabbix mysqld[4982]: key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 217599 K

Nov 24 13:04:20 zabbix mysqld[4982]: bytes of memory

Nov 24 13:04:20 zabbix mysqld[4982]: Hope that's ok; if not, decrease some variables in the equation.

Nov 24 13:04:20 zabbix mysqld[4982]:

Nov 24 13:04:20 zabbix mysqld[4982]: thd=(nil)

Nov 24 13:04:20 zabbix mysqld[4982]: Attempting backtrace. You can use the following information to find out

Nov 24 13:04:20 zabbix mysqld[4982]: where mysqld died. If you see no messages after this, something went

Nov 24 13:04:20 zabbix mysqld[4982]: terribly wrong...

Nov 24 13:04:20 zabbix mysqld[4982]: Cannot determine thread, fp=0xbffc6a28, backtrace may not be correct.

Nov 24 13:04:20 zabbix mysqld[4982]: Stack range sanity check OK, backtrace follows:

Nov 24 13:04:20 zabbix mysqld[4982]: 0x81f22d3

Nov 24 13:04:20 zabbix mysqld[4982]: 0x8429588

Nov 24 13:04:20 zabbix mysqld[4982]: 0x83a0824

Nov 24 13:04:20 zabbix mysqld[4982]: 0x83aa896

Nov 24 13:04:20 zabbix mysqld[4982]: 0x834c98d

Nov 24 13:04:20 zabbix mysqld[4982]: 0x834e422

Nov 24 13:04:20 zabbix mysqld[4982]: 0x833dd04

Nov 24 13:04:20 zabbix mysqld[4982]: 0x833b3da

Nov 24 13:04:20 zabbix mysqld[4982]: 0x82b6ee0

Nov 24 13:04:20 zabbix mysqld[4982]: 0x82aba42

Nov 24 13:04:20 zabbix mysqld[4982]: 0x81f123b

Nov 24 13:04:20 zabbix mysqld[4982]: 0x81f350a

Nov 24 13:04:20 zabbix mysqld[4982]: 0xb7bfc450

Nov 24 13:04:20 zabbix mysqld[4982]: 0x8164821

Nov 24 13:04:20 zabbix mysqld[4982]: New value of fp=(nil) failed sanity check, terminating stack trace!

Nov 24 13:04:20 zabbix mysqld[4982]: Please read http://dev.mysql.com/doc/mysql/en/using-stack-trace.html and follow instructions on how to resolve the stack trace. Resolved

Nov 24 13:04:20 zabbix mysqld[4982]: stack trace is much more helpful in diagnosing the problem, so please do

Nov 24 13:04:20 zabbix mysqld[4982]: resolve it

Nov 24 13:04:20 zabbix mysqld[4982]: The manual page at http://www.mysql.com/doc/en/Crashing.html contains

Nov 24 13:04:20 zabbix mysqld[4982]: information that should help you find out what is causing the crash.

Nov 24 13:04:20 zabbix mysqld_safe[4988]: ended

Nov 24 13:04:33 zabbix /etc/init.d/mysql[5138]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in

Nov 24 13:04:33 zabbix /etc/init.d/mysql[5138]: ^G/usr/bin/mysqladmin: connect to server at 'localhost' failed

Nov 24 13:04:33 zabbix /etc/init.d/mysql[5138]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

Nov 24 13:04:33 zabbix /etc/init.d/mysql[5138]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Nov 24 13:04:33 zabbix /etc/init.d/mysql[5138]:

 

Behebung:

Wenn Sie den MySQL Server mit InnoDB im Modus „innodb_file_per_table = 1 (siehe „/etc/mysql/my.cnf“) konfiguriert haben, so muss der in der Konfigurationsdatei der InnoDB Check „skip-innodb“ durch entfernen von der Raute „#“ deaktiviert werden. Damit sollte der MySQL Server wieder korrekt starten.

 

Sie könnten auch die Datei „ibdata1“ aus dem Verzeichnis „/var/lib/mysql/“ löschen, wenn Sie den Server im „innodb_file_per_table = 1 betreiben. Diese wird automatisch wieder generiert.

 

WARNUNG! Lösche Sie diese Datei nur, wenn „innodb_file_per_table = 1 eingeschaltet unnd aktiviert ist. Ansonsten befinden sich auch alle Datenbank und Tabelle in dieser Datei und Sie verlieren damit alle Daten.

 

Sie können nach dem Start von MySQL Server einen Check der Datenbanken ausführen:

 

$ sudo /etc/init.d/mysql start

$ sudo mysqlcheck -u root -p --repair --all-databases

 


 

Installation von Zabbix

Installation von Zabbix Server 1.8.12

Paketauflistung notwendiger Pakete

Um Zabbix mit allen Grundfunktionen unter Ubuntu zu nutzen, sollten noch einige Module vor der Kompilierung von Zabbix installiert werden. Wenn Sie bei der Ubuntu Installation schon das Paket LAMP (Apache, MySQL, PHP) installiert haben sind „apache2“ und „libapache2-mod-php5“ schon installiert.

 

Die hier angeführten Pakete sind zusätzlich notwendig:

 

Für die Komplierung von Zabbix:
* GNU C-Combiler àgcc“, „make

Je nach gewünschter Speicherart SQLite, MySQL, Oracle oder PostgresSQL. Hier MySQL:
* MySQL àlibmysqlclient15-dev

Für PHP wird installiert:
* PHP5 àphp5-gd”, und „php5-curl“ („php-bcmath“ ist bei bei PHP5.2 schon inkludiert)

 

Für SNMP Abfragen von Hosts installieren Sie:
* NET-SNMP ànet-snmp-5.7.1.tar.gz“ (die „libsnmp9-dev“ ist jetzt ein virtuelles Paket)

 

Für das Web-Monitoring:

* Libcurl àcurl“, „libcurl-dev“ und „libcurl4-gnutls-dev (und „libcurl-openssl-dev”)

 

Für Ping mit ICMPPING wird das Paket „fping“ benötigt:
* FPING
àfping

 

Für ein Traceroute aus dem Zabbix Frontend wird das Paket „traceroute“ benötigt:
* TRACEROUTE
àtraceroute

 

Für den Email Versand von Ereignissen wird „postfix“ benötigt:
* POSTFIX
àpostfix

 

Hinweis: Die hier angegebenen Pakte sind für die Grundfunktionen vom Zabbix Server nowendig. Wenn Sie vorhaben den „SSH Agent“, IPMI Abfragen, etc. zu verwenden, müssen Sie für diese noch zusätzliche Pakete installieren und diese bei der Kompilierung hinzufügen.

Anpassung der Linux Konfiguration für Zabbix

Änderung von PHP Parameter:

 

$ sudo nano /etc/php5/apache2/php.ini

 

Wichtige Befehle in “nano” (texteditor unter Ubuntu):

Suchen von Texten in „nano“ mit <Strg>+W

Beenden der Eingabe mit <Strg>+X und <Enter>.

 

Führen Sie folgende Änderungen durch und speicher Sie die Datei ab:

 

max_execution_time = 30 ß mindestens auf 300 setzen

memory_limit = 8MB ß mindestens auf 128MB setzen

post_max_size = 8MB ß mindestens auf 16MB setzen

date.timezone = Europe/Vienna ß entfernen Sie das führende “;”, Eingabe “Europe/Vienna”

 

Danach Anpassung für „fping“ durchführen damit Zabbix darauf zugreifen kann:

 

$ sudo chown root:zabbix /usr/bin/fping

$ sudo chmod 770 /usr/bin/fping

$ sudo chmod ug+s /usr/bin/fping

 

Installation der Zabbix Programmdateien

Verzeichnisse für Zabbix vorbereiten:

 

$ sudo mkdir /opt/zabbix

$ sudo mkdir /etc/zabbix

$ sudo mkdir /var/log/zabbix

 

Download vom Zabbix Tarball

 

$ wget  http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/1.8.12/zabbix-1.8.12.tar.gz/download

 

Entpacken von Zabbix

 

$ tar xvf zabbix-1.8.12.tar.gz

 

Wechseln Sie in das neu erstellte Verzeichnis „zabbix-1.8.12“. Rufen Sie das „configure“-Skript mit folgenden Informationen für MySQL Datenbank, SNMP Unterstützung und Web‑Monitoring („libcurl“) auf:

 

$ ./configure --prefix=/opt/zabbix  --enable-server --with-mysql --enable-agent --with-net-snmp --with-libcurl

Configuration:

 

  Detected OS:           linux-gnu

  Install path:          /opt/zabbix

  Compilation arch:      linux

 

  Compiler:              gcc

  Compiler flags:        -g -O2   -I/usr/include/mysql -DBIG_JOINS=1 -fPIC     -I/usr/local/include -I/usr/lib/perl/5.8/CORE -I. -I/usr/local/include

 

  Enable server:         yes

  With database:         MySQL

  WEB Monitoring via:    cURL

  Native Jabber:         no

  SNMP:                  net-snmp

  IPMI:                  no

  Linker flags:                 -L/usr/lib/mysql    -lcurl -lgssapi_krb5  -L/usr/local/lib -lnetsnmp -lcrypto  -L/usr/local/lib -lnetsnmp -lcrypto

  Libraries:             -lm -lresolv     -lmysqlclient    -lcurl  -lnetsnmp

 

  Enable proxy:          no

 

  Enable agent:          yes

  Linker flags:

  Libraries:             -lm -lresolv

 

  LDAP support:          no

  IPv6 support:          no

 

***********************************************************

*            Now run 'make install'                       *

*                                                         *

*            Thank you for using ZABBIX!                  *

*              <http://www.zabbix.com>                    *

***********************************************************

 

Parameter:

Prefix à gibt  an in welchen Pfad Zabbix installiert werden soll.

 

Wenn Sie alle Feature installieren wollen, starten Sie das „configure“ wie folgt:

$ ./configure --prefix=/opt/zabbix  --enable-server --with-mysql --enable-agent --with-net-snmp --with-libcurl --with-jabber --with-ipmi --with-ssh2

Configuration:

 

  Detected OS:           linux-gnu

  Install path:          /opt/zabbix

  Compilation arch:      linux

 

  Compiler:              gcc

  Compiler flags:        -g -O2  -I/usr/include/mysql  -DBIG_JOINS=1  -fno-strict-aliasing   -DUNIV_LINUX -DUNIV_LINUX       -I/usr/local/include -I/usr/lib/perl/5.10/CORE -I. -I/usr/local/include  -I/usr/include -I/usr/include

 

  Enable server:         yes

  Server details:

    With database:         MySQL

    WEB Monitoring via:    cURL

    Native Jabber:         yes

    SNMP:                  net-snmp

    IPMI:                  openipmi

    SSH:                   yes

    Linker flags:          -rdynamic      -L/usr/lib/mysql       -L/usr/local/lib  -L/usr/local/lib -L/usr/lib -L/usr/lib

    Libraries:             -lm  -lresolv    -lmysqlclient     -liksemel  -lcurl  -lnetsnmp -lcrypto -lm -lcrypto  -lnetsnmp -lcrypto -lm -lcrypto -lssh2 -lOpenIPMI -lOpenIPMIposix

 

  Enable proxy:          no

 

  Enable agent:          yes

  Agent details:

    Linker flags:          -rdynamic

    Libraries:             -lm  -lresolv

 

  LDAP support:          no

  IPv6 support:          no

 

***********************************************************

*            Now run 'make install'                       *

*                                                         *

*            Thank you for using Zabbix!                  *

*              <http://www.zabbix.com>                    *

***********************************************************

 

Beim letzten „configure“ wird zusätzlich noch Jabber, IPMI und SSH2 Unterstützung installiert.

Jabber ist ein Instant Messenger Programm. IPMI (Intelligent Plattform Management Interface) ist eine Schnittstelle in Computern, welche zur Wartung und Verwaltung verwendet wird. Mit dem SSH2 können Sie SSH-Skripte auf überwachten Computern ausführen.

 

Wenn die Konfiguration abgeschlossen ist, und keine Fehler aufgetreten sind, kann die Software kompiliert und installiert werden:

 

$ sudo make install

 

Datenbank und Datenbankstruktur für Zabbix erstellen (wenn nicht schon vorhanden).
Wechseln Sie vorher in das Installationsverzeichnis von Zabbix z.B. „zabbix-1.8.12“:

 

$ cd zabbix-1.8.12

$ sudo mysql –uroot -p

mysql > create database zabbix character set utf8;

mysql > quit

$ cd create/schema

$ sudo cat mysql.sql | mysql -uroot -p zabbix

$ cd ../data

$ sudo cat data.sql | mysql –uroot -p zabbix

$ sudo cat images_mysql.sql | mysql -uroot -p zabbix

 

Konfigurationsdatei für Zabbix von Server-Beispielkonfiguration kopieren.

Wechseln Sie vorher in das Installationsverzeichnis von Zabbix z.B. „zabbix-1.8.12“ zurück:

$ cd zabbix-1.8.12

$ sudo mkdir /etc/zabbix

$ sudo cp misc/conf/zabbix_server.conf /etc/zabbix

 

Änderung  an Datenbankeinstellungen und Pfaden in der Konfiguration durchführen:

$ sudo mkdir /var/log/zabbix

$ sudo chown zabbix:zabbix /var/log/zabbix

$ sudo nano /etc/zabbix/zabbix /zabbix_server.conf

LogFile=/var/log/zabbix/zabbix_server.log

DBHost=localhost

DBUser=root

DBPasswort=<passwort2>

 

Ersetzen Sie <passwort2> durch Ihr MySQL Passwort für den „root“ Benutzer von MySQL.

 

Automatischen Start vom Zabbix Server bei jedem Systemstart erstellen.

Wechseln Sie vorher in das Installationsverzeichnis von Zabbix z.B. „zabbix-1.8.12“:

$ cd zabbix-1.8.12

$ sudo cp misc/init.d/debian/zabbix-server /etc/init.d

$ sudo cp misc/init.d/debian/zabbix-agent /etc/init.d

$ sudo chmod 755 /etc/init.d/zabbix-server

$ sudo chmod 755 /etc/init.d/zabbix-agent

$ sudo nano /etc/init.d/zabbix-server

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/zabbix/sbin

DAEMON=/opt/zabbix/sbin/${NAME}

 

Automatischen Start von Zabbix Server beim Systemstart einrichten:

 

$ sudo update-rc.d -f zabbix-server defaults

 

Die Server Konfiguration ist damit abgeschlossen.

 

Jetzt können Sie den Zabbix Server manuell starten mit:

$ /etc/init.d/zabbix-server start

$ ps -ef | grep zabbix

 

Mit dem „ps“ Befehl kontrollieren wir ob der Zabbix Server auch läuft.

 

Fehler bei der Zabbix Server Installation

Fehler: „configure: error: Not found MySQL library“

Ursache: Könnte vielfältig sein, die einfachste das Modul „libmysqlclient15-dev“ wurde nicht installiert.
Abhilfe: Installieren Sie unter Ubunut das Modul „.libmysqlclient15-dev“, unter SUSE das Modul “mysql-devel”

Fehler:
“checking for curl-config”
„configure: error:  Not found Curl library“

Ursache: Fehler die Datei „curl-config“ konnte nicht gefunden werden.

Abhilfe: Installieren Sie unter Ubuntu das Paket “libcurl4-gnutl-dev“, unter SUSE das Paket „curl-devel“

Fehler:
„checking for  main in –lnetsnmp… no“
configure: error:  Not found NET-SNMP library“

Ursache: Noch nicht gefunden. Die Pakete „net-snmp“ und „net-snmp-devel“ sind installiert
Abhilfe: Das Paket „net-snmb-5.7.1“ wurde nicht installiert.

 

Fehler:
„Can not find “/usr/include/net-snmp/net-snmp-config.h”. The net-snmp development files seems to be missing. Exiting
Checking for main in –lnetsnmp … no
configure: error:  Not found NET-SNMP library“

Ursache: Noch nicht gefunden.
Abhilfe: “. Unter Ubuntu muss dass Paket „libsnmp9-dev“ muss installiert sein, damit das „configure“-Skript mit dem Parameter „—with-net-snmp“ ausgeführt werden kann.

Unter SUSE installaiert man die Pakete „net-snmp“ und „net-snmp-devel“.

 

Fehler beim Ausführen vom “./configure” für “net-snmp” kommt “configure: error:”

 

..

checking for gcc... no

checking for cc... no

checking for cl.exe... no

configure: error: in `/home/zabbix/net-snmp-5.7.1':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details

 

Behebung:
Installieren Sie den C Kompiler mit “sudo aptitude install gcc”.

 

Fehler bei “./configure” mit “--with-jabber” kommt “Jabber Library not found”

 

..

checking for IKSEMEL... no

configure: error: Jabber library not found

 

Behebung

Für die Einbindung von Jabber sind die Pakete “libiksemel-dev” und “jabberd2” notwendig.

 

Fehler bei “./configure” mit “--with-openipmi” kommt “Invalid OPEMIPMI directory”

 

..

checking for OPENIPMI support... no

configure: error: Invalid OPENIPMI directory - unable to find ipmiif.h

 

Behebung

Installieren Sie das Paket “libopenipmi-dev” zusätzlich zu “ipmitool”.

 

Fehler bei „./configure“ mit „--with-ssh2“ kommt „SSH2 library not found“

 

checking for SSH2 support... no

configure: error: SSH2 library not found

 

Behebung

Prüfen Sie zuerst ob SSH2 überhaupt auf dem Rechner installiert ist mit „aptitude“ oder „apt-get“.

                                  

zabbix@zabbix-1:~$ aptitude search ssh2

p   libganymed-ssh2-java                                - pure Java implementation of the SSH-2 protocol

p   libnet-ssh2-perl                                    - Perl module for the SSH 2 protocol

p   libnet-ssh2-ruby                                    - Ruby implementation of the SSH2 client protocol

p   libnet-ssh2-ruby1.8                                 - Ruby implementation of the SSH2 client protocol

p   libnet-ssh2-ruby1.9.1                               - Ruby implementation of the SSH2 client protocol

p   libssh2-1                                           - Client-seitige SSH2-Bibliothek

p   libssh2-1-dbg                                       - SSH2 client-side library (debug package)

p   libssh2-1-dev                                       - SSH2 client-side library (development headers)

p   libssh2-php                                         - PHP Bindings for libssh2

p   libtrilead-ssh2-java                                - Java SSH libarary

p   python-libssh2                                      - Python binding for libssh2 library

v   python2.6-libssh2                                   -

zabbix@cca-zabbix-1:~/zabbix-1.8.12$

 

Führen Sie die Installation der Pakete für SSH2 durch:

 

zabbix@zabbix-1:~$ sudo aptitude install libssh2-1-dev libssh2-php

Die folgenden NEUEN Pakete werden zusätzlich installiert:

  libssh2-1{a} libssh2-1-dev libssh2-php

0 Pakete aktualisiert, 3 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.

Muss 488kB an Archiven herunterladen. Nach dem Entpacken werden 1.708kB zusätzlich belegt sein.

Wollen Sie fortsetzen? [Y/n/?]

Hole:1 http://de.archive.ubuntu.com/ubuntu/ maverick/universe libssh2-1 amd64 1.2.6-1 [81,0kB]

Hole:2 http://de.archive.ubuntu.com/ubuntu/ maverick/universe libssh2-1-dev amd64 1.2.6-1 [378kB]

Hole:3 http://de.archive.ubuntu.com/ubuntu/ maverick/universe libssh2-php amd64 0.11.0-2.1 [28,3kB]

488kB wurden in 2 s heruntergeladen (175kB/s)

Wähle vormals abgewähltes Paket libssh2-1.

(Lese Datenbank ... 52437 Dateien und Verzeichnisse sind derzeit installiert.)

Entpacke libssh2-1 (aus .../libssh2-1_1.2.6-1_amd64.deb) ...

Wähle vormals abgewähltes Paket libssh2-1-dev.

Entpacke libssh2-1-dev (aus .../libssh2-1-dev_1.2.6-1_amd64.deb) ...

Wähle vormals abgewähltes Paket libssh2-php.

Entpacke libssh2-php (aus .../libssh2-php_0.11.0-2.1_amd64.deb) ...

Verarbeite Trigger für man-db ...

Richte libssh2-1 ein (1.2.6-1) ...

Richte libssh2-1-dev ein (1.2.6-1) ...

Richte libssh2-php ein (0.11.0-2.1) ...

 

Creating config file /etc/php5/conf.d/ssh2.ini with new version

Verarbeite Trigger für libc-bin ...

ldconfig deferred processing now taking place

zabbix@zabbix-1:~$ aptitude search ssh2

p   libganymed-ssh2-java                                - pure Java implementation of the SSH-2 protocol

p   libnet-ssh2-perl                                    - Perl module for the SSH 2 protocol

p   libnet-ssh2-ruby                                    - Ruby implementation of the SSH2 client protocol

p   libnet-ssh2-ruby1.8                                 - Ruby implementation of the SSH2 client protocol

p   libnet-ssh2-ruby1.9.1                               - Ruby implementation of the SSH2 client protocol

i A libssh2-1                                           - Client-seitige SSH2-Bibliothek

p   libssh2-1-dbg                                       - SSH2 client-side library (debug package)

i   libssh2-1-dev                                       - SSH2 client-side library (development headers)

i   libssh2-php                                         - PHP Bindings for libssh2

p   libtrilead-ssh2-java                                - Java SSH libarary

p   python-libssh2                                      - Python binding for libssh2 library

v   python2.6-libssh2                                   -

 

Fehler Zabbix Server wird nach einigen Minuten wieder beendet (Zabbix Server crash after startup)

Nach dem Starten vom Zabbix Server mit „sudo /etc/init.d/zabbix-server start“ wird dieser wieder von sselbst beendet. Dies tritt bei der Zabbix Version 1.8.7 und 1.8.8 auf. In der zabbix Log-Datei (/var/log/zabbix/zabbix_server.log) steht dazu folgendes:

 

8523:20110902:084805.586 ================================

  8523:20110902:084805.586 Please consider attaching a disassembly listing to your bug report.

   8523:20110902:084805.586 This listing can be produced with, e.g., objdump -DSswx zabbix_server.

   8523:20110902:084805.586 ================================

  8477:20110902:084805.587 One child process died (PID:8523,exitcode/signal:255). Exiting ...

   8477:20110902:084807.712 Syncing history data...

  8477:20110902:084809.416 Syncing history data... done.

  8477:20110902:084809.417 Syncing trends data...

  8477:20110902:084817.027 Syncing trends data... done.

  8477:20110902:084817.027 Zabbix Server stopped. Zabbix 1.8.7 (revision 21394).

 

Ursache

Siehe Zabbix Bugs: https://support.zabbix.com/browse/ZBX-4099

Wurde in der Zabbix Version v1.8.8rc2 gefixt.

 

Behebung

Wechseln Sie auf eine neuere Zabbix Version z.B. 1.8.9 oder 1.8.12. Mit diesen Versionen sollte der Fehler nicht mehr auftreten.

 

 

Update auf Zabbix Server 1.8.12

Neue Version von Zabbix-Server von einer vorhandener Version 1.6.x oder 1.7 updaten.

 

Ältere Zabbix-Agenten von Zabbix 1.6.x können zusammen mit dem Zabbix-Server 1.8.12 verwendet werden. Es sind keine Änderungen auf der Agenten Seite notwendig.

 

WARNUNG! Ältere Zabbix-Proxy Versionen wie 1.6.x können nicht mit dem Zabbix-Server V1.8.12 verwendet werden. Diese müssen mit dem Server gleichzeitig upgedatet werden.

 

Durchführung der Upgrade Installation Zabbix Server

 

Den Zabbix Server vor dem Update stoppen.

 

zabbix@zabbix:~$ /etc/init.d/zabbix-server stop

Stopping Zabbix server daemon: zabbix_server

zabbix@zabbix:~$ /etc/init.d/zabbix-agent stop

Stopping Zabbix agent deamon: zabbix_agentd

 

WICHTIG! Backup der vorhandenen Zabbix Datenbank

Dies ist ein sehr wichtiger Punkt. Stellen Sie sicher dass Sie ein Backup der vorhandenen Datenbank zur Verfügung haben. Dies hilft falls die Upgrade Prozedur auf einen Fehler läuft (zu wenig Festplattenplatz, Stromausfall, oder andere unvorhergesehene Probleme).

Siehe Kapitel „Sicherung/Rücksicherung der Zabbix Datenbank“.

 

WICHTIG! Backup der Konfigurationsdateien, der PHP Dateien und der Zabbix Ausführbaren Dateien. Machen Sie dazu eine Kopie aller dieser Dateien in ein separates Verzeichnis.

 

Download der neuen Version vom Internen FTP Server

 

zabbix@zabbix:~$ wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/1.8.12/zabbix-1.8.12.tar.gz/download

--12:43:18--  http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/1.8.12/zabbix-1.8.12.tar.gz/download

           => `zabbix-1.8.12.tar.gz.1'

Resolving ...

Connecting …|:80... connected.

Logging in as anonymous ... Logged in!

==> SYST ... done.    ==> PWD ... done.

==> TYPE I ... done.  ==> CWD /zabbix ... done.

==> PASV ... done.    ==> RETR zabbix-1.8.12.tar.gz ... done.

Length: 8,326,175 (7.9M) (unauthoritative)

 

100%[============================================================================>] 8,326,175      8.11M/s

 

12:43:19 (8.10 MB/s) - `zabbix-1.8.12.tar.gz.1' saved [8326175]

 

Entpacken des neue Zabbix Server Paktes.

 

zabbix@zabbix:~$ tar xvf zabbix-1.8.12.tar.gz

 

Konfiguration der neuen Version durchführen.

 

zabbix@zabbix:~$ cd zabbix-1.8.12

zabbix@zabbix:~/zabbix-1.8.12/ sudo ./configure --prefix=/opt/zabbix  --enable-server --with-mysql --enable-agent --with-net-snmp --with-libcurl

 

Hinweis: Je nach Ihrer Konfiguration des Zabbix Server (mit IMPI, SSH2, etc.) können die oben angezeigten Optionen auch Anders aussehen.

 

Installation der neuen Zabbix Version auf  dem Server.

 

zabbix@zabbix:~/zabbix-1.8.12/  sudo make install

 

Vor dem Start des Zabbix-Servers muss noch eine Upgrade der Datenbank durchführt werden. Dazu müssen zuerst einige alte Indexe entfernt werden, und danach wird ein Upgrade Script aufgerufen.

 

Alte Index entfernen für eine MySQL Datenbank:

alter table dhosts drop index dhosts_1;

alter table dservices drop index dservices_1;

alter table httptest drop index httptest_2;

alter table httptest drop index httptest_3;

alter table history_log drop index history_log_2;

alter table history_text drop index history_text_2;

alter table actions drop index actions_1;

alter table escalations drop index escalations_2;

alter table graphs_items drop index graphs_items_1;

alter table graphs_items drop index graphs_items_2;

alter table services drop index services_1;

 

Alte Indexe entfernen für eine Oracle oder PostgreSQL Datenbank:

drop index dhosts_1;

drop index dservices_1;

drop index httptest_2;

drop index httptest_3;

drop index history_log_2;

drop index history_text_2;

drop index actions_1;

drop index escalations_2;

drop index graphs_items_1;

drop index graphs_items_2;

drop index services_1;

 

WICHTIG! Ignorieren Sie alle Warnungen über nicht vorhandene Indexe!

 

Zur Verbesserung der Synchronisation der Konfiguration führen Sie folgendes aus.

Bei einer MySQL Datenbank:

 

zabbix@zabbix:~$ mysql –uroot –p

mysql> use zabbix

mysql> DROP INDEX node_cksum_1 ON node_cksum;
mysql> CREATE INDEX node_cksum_1 on node_cksum (nodeid,cksumtype,tablename,recordid);

mysql> quit

 

Die neuen Zabbix Frontend Module auf den Apache Server kopieren.

 

zabbix@zabbix:~/zabbix-1.8.12/ sudo cp –pr frontends/php/* /var/www/

 

Zabbix Server und Agenten wieder starten.

 

zabbix@zabbix:~$ sudo /etc/init.d/zabbix-server start

zabbix@zabbix:~$ sudo /etc/init.d/zabbix-agent start

 

Ugrade Patches für Zabbix

 

Dies sind dann notwendig wenn Sie von einer früheren Zabbix Version 1.6 oder 1.7 auf die 1.8 Version wechseln.

 

WICHTIG! Der Zabbix Server und Agent sollte vorher noch nicht gestartet werden.

 

Das Datenbank Upgrade Script befindet sich im Verzeichnis „upgrades/dbpatches/1.8/<db engine>“:

 

■ MySQL: upgrades/dbpatches/1.8/mysql/patch.sql

■ Oracle: upgrades/dbpatches/1.8/oracle/patch.sql

■ PostgreSQL: upgrades/dbpatches/1.8/postgresql/patch.sql

 

Der Upgrade von der Datenbank kann ca. 10-15 Minuten dauern. Für PostgreSQL kann dies mehrere Stunden oder mehr benötigen, weil eine Konvertierung vorhandene Historischer Daten vorgenommen wird. Es wird empfohlen die Upgrade Prozedur auf einem nicht produktiven System zu testen.

 

Die Ausführung des Upgrade Patches könnte so aussehen:

zabbix@zabbix:~/zabbix-1.8.12/upgrades/dbpatches/1.8/mysql$ sudo mysql zabbix < patch.sql -uroot -p -f

Enter password:

ERROR 1061 (42000) at line 1: Duplicate key name 'actions_1'

ERROR 1050 (42S01) at line 2: Table 'auditlog_details' already exists

ERROR 1061 (42000) at line 11: Duplicate key name 'auditlog_details_1'

ERROR 1060 (42S21) at line 12: Duplicate column name 'ip'

ERROR 1060 (42S21) at line 13: Duplicate column name 'resourceid'

ERROR 1060 (42S21) at line 14: Duplicate column name 'resourcename'

ERROR 1050 (42S01) at line 15: Table 'autoreg_host' already exists

ERROR 1061 (42000) at line 21: Duplicate key name 'autoreg_host_1'

ERROR 1060 (42S21) at line 22: Duplicate column name 'dropdown_first_entry'

ERROR 1060 (42S21) at line 23: Duplicate column name 'dropdown_first_remember'

ERROR 1060 (42S21) at line 24: Duplicate column name 'discovery_groupid'

ERROR 1060 (42S21) at line 25: Duplicate column name 'max_in_table'

ERROR 1060 (42S21) at line 26: Duplicate column name 'search_limit'

ERROR 1060 (42S21) at line 27: Duplicate column name 'snmpv3_securityname'

ERROR 1060 (42S21) at line 28: Duplicate column name 'snmpv3_securitylevel'

ERROR 1060 (42S21) at line 29: Duplicate column name 'snmpv3_authpassphrase'

ERROR 1060 (42S21) at line 30: Duplicate column name 'snmpv3_privpassphrase'

ERROR 1061 (42000) at line 32: Duplicate key name 'dchecks_1'

ERROR 1060 (42S21) at line 33: Duplicate column name 'dcheckid'

ERROR 1060 (42S21) at line 34: Duplicate column name 'ip'

ERROR 1054 (42S22) at line 36: Unknown column 'dhosts.ip' in 'field list'

ERROR 1091 (42000) at line 38: Can't DROP 'ip'; check that column/key exists

ERROR 1061 (42000) at line 40: Duplicate key name 'dhosts_1'

ERROR 1060 (42S21) at line 41: Duplicate column name 'unique_dcheckid'

ERROR 1062 (23000) at line 44: Duplicate entry '0-9-system.uname-192.168.0.4-10050' for key 2

zabbix@zabbix:~/zabbix-1.8.12/upgrades/dbpatches/1.8/mysql$

 

Falls Sie eine Konvertierung der Datenbank auf UTF-8 vornehmen, kann dies wieder mehrere Stunden dauern.

 

Stellen Sie sicher dass Sie über ausreichende Rechte (Erstellen und Löschen von Tabellen, Erstellen und Löschen von Indexen).

 

Stellen außerdem sicher dass Sie über ausreichenden Festplattenplatz verfügen.

 

WICHTIG! Die Upgrade Scripts sind nur für Upgrade von Zabbix 1.6.x zu 1.8! Für Upgrade früherer Versionen benutzen Sie zusätzlich die Upgrade Scripts von Zabbix 1.6.x.

 

Fehler bei der Upgrade Installation Zabbix Server

Fehler beim Upgrade Patch kommt “Duplicate entry '0-9-system.uname-192.168.0.4-10050' for key 2”

Dies sieht bei der Ausführung des Patch wie folgt aus:

zabbix@zabbix:~/zabbix-1.8/upgrades/dbpatches/1.8/mysql$ sudo mysql zabbix < patch.sql -uroot -p

Enter password:

ERROR 1062 (23000) at line 44: Duplicate entry '0-9-system.uname-192.168.0.4-10050' for key 2

zabbix@zabbix:~/zabbix-1.8/upgrades/dbpatches/1.8/mysql$

 

Behebung

Es wird in der Datei „patch.sql“ die Zeile 44 angesehen:

zabbix@zabbix:~/zabbix-1.8.12/upgrades/dbpatches/1.8/mysql$ vim patch.sql

 

Mit „<Esc>:+43<Enter>“ wird zur Zeile 44 gesprungen:

CREATE UNIQUE INDEX dservices_1 on dservices (dcheckid,type,key_,ip,port);

 

Das bedeutet es gibt in der Tabelle „dservices“ zwei Datensätze, welche den gleichen Key erzeugen würden.

 

Es wird der Doppelte Key in der Tabelle “dservices” ermittelt:

zabbix@zabbix:~/zabbix-1.8.12/upgrades/dbpatches/1.8/mysql$ sudo mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 5563704

Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)

 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

mysql> connect zabbix

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Connection id:    5563705

Current database: zabbix

 

select dcheckid,type,key_,ip,port from dservices where ip='192.168.0.4';

+----------+------+--------------+-------------+-------+

| dcheckid | type | key_         | ip          | port  |

+----------+------+--------------+-------------+-------+

|        0 |    9 | system.uname | 192.168.0.4 | 10050 |

|        0 |    9 | system.uname | 192.168.0.4 | 10050 |

|        0 |   12 |              | 192.168.0.4 |     0 |

+----------+------+--------------+-------------+-------+

3 rows in set (0.00 sec)

mysql> select * from dservices where ip='192.168.0.4';

+------------+---------+------+--------------+------------------------------------------------------------------------------------------------------+-------+--------+------------+----------+----------+-------------+

| dserviceid | dhostid | type | key_         | value                                                                                                | port  | status | lastup     | lastdown | dcheckid | ip          |

+------------+---------+------+--------------+------------------------------------------------------------------------------------------------------+-------+--------+------------+----------+----------+-------------+

|          1 |       1 |    9 | system.uname | Linux aud-websrv-1 2.6.18.2-34-default #1 SMP Mon Nov 27 11:46:27 UTC 2006 i686 i686 i386 GNU/Linux  | 10050 |      0 | 1254254318 |        0 |        0 | 192.168.0.4 |

|         55 |      40 |    9 | system.uname | Linux aud-websrv-1 2.6.18.8-0.10-default #1 SMP Wed Jun 4 15:46:34 UTC 2008 i686 i686 i386 GNU/Linux | 10050 |      0 | 1224505678 |        0 |        0 | 192.168.0.4 |

|        144 |       1 |   12 |              |                                                                                                      |     0 |      0 | 1224607875 |        0 |        0 | 192.168.0.4 |

+------------+---------+------+--------------+------------------------------------------------------------------------------------------------------+-------+--------+------------+----------+----------+-------------+

3 rows in set (0.00 sec)

mysql> delete from dservices where dserviceid='1';

Query OK, 1 row affected (0.00 sec)

 

mysql>

 

Der doppelte Eintrag wird durch Selektion auf die „deviceid“ von „1“ gelöscht, denn dieser Eintrag wurde bei einer Testinstallation auf dem Server aud-webserver-1 erzeugt.

 

Fehler bei kopieren der Zabbix-Frontend Dateien kommt “cp: Verzeichnis… ausgelassen”

 

zabbix@cca-zabbix-1:~/zabbix-1.8.12$ sudo cp –R frontends/php/* /var/www/

[sudo] password for zabbix:

cp: Aufruf von stat für „–R“ nicht möglich: Datei oder Verzeichnis nicht gefunden

cp: Verzeichnis „frontends/php/api“ ausgelassen

cp: Verzeichnis „frontends/php/audio“ ausgelassen

cp: Verzeichnis „frontends/php/conf“ ausgelassen

cp: Verzeichnis „frontends/php/fonts“ ausgelassen

cp: Verzeichnis „frontends/php/images“ ausgelassen

cp: Verzeichnis „frontends/php/include“ ausgelassen

cp: Verzeichnis „frontends/php/js“ ausgelassen

cp: Verzeichnis „frontends/php/styles“ ausgelassen

 

Behebung

Kopieren Sie Verzeichnisse einzeln in das Zielverzeichnis:

zabbix@zabbix:~/zabbix-1.8.12$ sudo cp -r frontends/php/api /var/www/

zabbix@zabbix:~/zabbix-1.8.12$ sudo cp -r frontends/php/audio /var/www/

zabbix@zabbix:~/zabbix-1.8.12$ sudo cp -r frontends/php/conf /var/www/

zabbix@zabbix:~/zabbix-1.8.12$ sudo cp -r frontends/php/fonts /var/www/

zabbix@zabbix:~/zabbix-1.8.12$ sudo cp -r frontends/php/images /var/www/

zabbix@zabbix:~/zabbix-1.8.12$ sudo cp -r frontends/php/js /var/www/

zabbix@zabbix:~/zabbix-1.8.12$ sudo cp -r frontends/php/styles /var/www/

 

Installation Zabbix Agenten (am Server)

Nachdem der Server installiert ist können wir jetzt, den ersten Agenten starten. Im Zuge der Server Installation wurde dieser mit installiert. Der Agent kann auf zwei Arten gestartet werden als Daemon oder damit er auf eine Port lauscht. Der Hersteller empfiehlt die Daemon Methode, diese wird auch hier angewendet.
Kopieren Sie die Agenten Konfigurationsdatei in das Zabbix-Konfigurationsverzeichnis:

$ sudo cp misc/conf/zabbix_agentd.conf /etc/zabbix

 

Ändern Sie in der Konfigurationsdatei die IP-Adresse des Servers und die Pfade für die Logdateien:

$ sudo nano /etczabbix/zabbix /zabbix_agentd.conf

Server=127.0.0.1

Hostname=localhost

LogFile=/var/log/zabbix/zabbix_agentd.log

 

Automatischen Start vom Zabbix Agenten bei jedem Systemstart erstellen. Wechseln Sie vorher in das Installationsverzeichnis von Zabbix z.B. „zabbix-1.8.12“:

$ sudo misc/init.d/debian/zabbix-agent /etc/init.d

$ sudo chmod 755 /etc/init.d/zabbix-agent

$ sudo nano /etc/init.d/zabbix-agent

CONFIG_FILE=“/etc/zabbix/zabbix_agentd.conf“

ZABBIX_BIN=“/opt/zabbix/sbin/zabbix_agentd“

PIDOF_BIN=$PATH:/sbin/pidof

export PATH=$PATH:/opt/zabbix/sbin

$ sudo update-rc.d -f zabbix-agent defaults

 

Installation vom Zabbix Web-Frontend (am Server)

Der letzte Schritt der Installation ist die Installation vom Web-Client, für die visuelle Überwachung des Servers. Für die Funktion von Zabbix wäre dieser nicht erforderlich, denn es können auch alle Werte über Kommandenzeilen Tools abgefragt werden.

 

Unter Ubuntu Linux wird die Apache Konfiguration in der Datei „/etc/apache2/apache2.conf“ abgespeichert und nicht wie normalerweise in der „httpd.conf“. Die Datei „httpd.conf“ ist zwar vorhanden, aber nur aus Kompatibilitätsgründen.

Das Dokumenten-Root Verzeichnis auf Ubuntu ist unter „/var/www/“.

 

Wechseln Sie wieder in das Zabbix Installationsverzeichnis z.B. „zabbix-1.8.12“:

$ sudo cp –pr frontends/php/* /var/www/

$ sudo chown –R www-data:zabbix /var/www

$ sudo rm /var/www/index.html

 

Fehler:  „Time Zone for PHP ist not set. Please set „date.timezone“ option in php.ini“

Ursache:  Keine Zeitzone (Time-Zone)  in der php.ini wurde nicht angegeben.
Abhilfe: Prüfen Sie Ihre Zeitzone mit „date“ auf der Console. Die Ausgabe könnte folgenderweise Aussehen „Mon…CEST 2008“, wobei „CEST“ die Zeitzone „europe/Berlin“ist. Schreiben diese Zeitzone in die „/etc/php5/apache2/php.ini“ unter

„date.timezone = Europe/Berlin“

 

Der Standardbenutzer ist „Admin“ und das Passwort „zabbix“. Ändern Sie dieses nach dem erfolgreichen Login um.

Neu Kompilierung eines Zabbix Linux Agenten

 

Kompilierung auf openSUSE:

 

~/$ wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/1.8.12/zabbix-1.8.12.tar.gz/download

~/$ tar xvf zabbix-1.8.12.tar.gz

~/$ cd zabbix-1.8.12

~/zabbix-1.8.12$ sudo ./configure --enable-agent

Configuration:

 

  Detected OS:           linux-gnu

  Install path:          /usr/local

  Compilation arch:      linux

 

  Compiler:              gcc

  Compiler flags:        -g -O2

 

  Enable server:         no

 

  Enable proxy:          no

 

  Enable agent:          yes

  Linker flags:

  Libraries:             -lm -lresolv

 

  LDAP support:          no

  IPv6 support:          no

 

***********************************************************

*            Now run 'make install'                       *

*                                                         *

*            Thank you for using ZABBIX!                  *

*              <http://www.zabbix.com>                    *

***********************************************************

~/zabbix-1.8.12$  make install

~/zabbix-1.8.12$ cp misc/init.d/suse/9.3/zabbix_agentd /etc/init.d/

~/zabbix-1.8.12$ vi /etc/zabbix/zabbix_agentd.conf

Server=zabbix.rpw.com

~/zabbix-1.8.12$ zabbix_agentd start

~/zabbix-1.8.12$ insserv zabbix_agentd

 

Kompilierung auf Ubuntu:

 

~/$ sudo wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/1.8.12/zabbix-1.8.12.tar.gz/download

~/$ sudo tar xvf zabbix-1.8.12.tar.gz

~/$ sudo cd zabbix-1.8.12

~/zabbix-1.8.12$ sudo ./configure --enable-agent

Configuration:

  Enable agent:          yes

  Linker flags:

  Libraries:             -lm -lresolv

 ***********************************************************

*            Now run 'make install'                       *

*                                                         *

*            Thank you for using ZABBIX!                  *

*              <http://www.zabbix.com>                    *

***********************************************************

~/zabbix-1.8.12$ sudo make install

~/zabbix-1.8.12$ cp misc/init.d/debian/zabbix_agentd /etc/init.d/

~/zabbix-1.8.12$ vi /etc/zabbix/zabbix_agentd.conf

Server=zabbix.rpw.com

~/zabbix-1.8.12$ sudo zabbix_agentd start

~/zabbix-1.8.12$ sudo insserv zabbix_agentd

 

Einrichtung eines Zabbix Linux Agenten

Um Linux Server oder Arbeitsstationen Der Agent kann auf zwei Arten gestartet werden als Daemon oder damit er auf eine Port lauscht. Der Hersteller empfiehlt die Daemon Methode, diese wird auch hier angewendet.
Kopieren Sie die Agenten Konfigurationsdatei in das Zabbix-Konfigurationsverzeichnis:

$ sudo mkdir /etc/zabbix

$ sudo cp misc/conf/zabbix_agentd.conf /etc/zabbix

 

Ändern Sie in der Konfigurationsdatei die IP-Adresse des Servers und die Pfade für die Logdateien:

$ sudo nano /etc/zabbix /zabbix_agentd.conf

Server=127.0.0.1

Hostname=localhost

LogFile=/var/log/zabbix/zabbix_agentd.log

 

Automatischen Start vom Zabbix Agenten bei jedem Systemstart erstellen. Wechseln Sie vorher in das Installationsverzeichnis von Zabbix z.B. „zabbix-1.8.12“:

$ sudo cp misc/init.d/debian/zabbix-agent /etc/init.d

$ sudo chmod 755 /etc/init.d/zabbix-agent

$ sudo nano /etc/init.d/zabbix-agent

CONFIG_FILE=“/etc/zabbix/zabbix_agentd.conf“

ZABBIX_BIN=“/opt/zabbix/sbin/zabbix_agentd“

PIDOF_BIN=$PATH:/sbin/pidof

export PATH=$PATH:/opt/zabbix/sbin

$ sudo update-rc.d -f zabbix-agent defaults

 

Sicherung/Rücksicherung der Zabbix Datenbank

Sicherung und Rücksicherung unter MySQL

Wenn Sie eine Komplettsicherung der Zabbix-Server Datenbank durchführen wollen geben Sie folgendes ein:

 

$ sudo mysqldump zabbix > zabbix.sql –uroot –p

 

Wobei „zabbix.sql“ der Name der Sicherungsdatei ist. Geben Sie das Passwort für den „root“ Benutzer des MySQL Server ein.

 

Die Rücksicherung einer Zabbix-Server Datenbank, welche mit „mysqldump“ gesichert wurde erfolgt mit folgendem Befehl:

 

$ sudo mysqldump zabbix < zabbix.sql –uroot -p

 

Anmerkung: Werden Sie bei der Rücksicherung der Datenbank nicht ungeduldig, dies kann bei einer Größe der Datenbank von ca. 500MB ca. eine Stunde dauern. Je nach Größe der Datenbank entsprechend länger. Sehen Sie unter Kapitel „Datenbank Handling“ den Trick zur Geschwindigkeit bei der Rücksicherung.

 

Einige MySQL Befehle:

 

$ mysql –uroot –p

Password: ******

mysql > show engine; à zeigt die verwendete Datenbank Engine an

+------------+----------+----------------------------------------------------------------+

| Engine     | Support  | Comment                                                        |

+------------+----------+----------------------------------------------------------------+

| MyISAM     | DEFAULT  | Default engine as of MySQL 3.23 with great performance         |

| MEMORY     | YES      | Hash based, stored in memory, useful for temporary tables      |

| InnoDB     | YES      | Supports transactions, row-level locking, and foreign keys     |

| BerkeleyDB | NO       | Supports transactions and page-level locking                   |

| BLACKHOLE  | YES      | /dev/null storage engine (anything you write to it disappears) |

| EXAMPLE    | NO       | Example storage engine                                         |

| ARCHIVE    | YES      | Archive storage engine                                         |

| CSV        | YES      | CSV storage engine                                             |

| ndbcluster | DISABLED | Clustered, fault-tolerant, memory-based tables                 |

| FEDERATED  | YES      | Federated MySQL storage engine                                 |

| MRG_MYISAM | YES      | Collection of identical MyISAM tables                          |

| ISAM       | NO       | Obsolete storage engine                                        |

+------------+----------+----------------------------------------------------------------+

12 rows in set (0.00 sec)

Mysql > mysql> show databases; à zeigt die vorhanden Datenbanken des MySQL Servers

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

+--------------------+

2 rows in set (0.00 sec)

mysql > show table status from zabbix; à zeigt Tabellenstatistik mit verwendeter Größe an

mysql > \q

 

Die obige Ausgabe zeigt das „InnoDB“ als Engine verwendet wird.

 

Datenbankhändling (Optimierung, Verkleinerung)

Nach einer Rücksicherung kann es sein das die Datenbankdatei „ibdata1“ im Verzeichnis „/var/lib/mysql“ eine unverhältnismäßige Größe zur Rücksicherungsdatei hat. War die Rücksicherungsdatei z.B. 500MB groß und die Datenbank vor der Rücksicherung 100MB, so hat die Datenbankdatei jetzt eine Größe von 1,8GB angenommen.

1. Versuch mit Optimierung

Sie können diese Größe wieder durch eine Optimierung einzelner Tabellen der Datenbank wieder verringern. Die Optimierung läuft nur auf MyISAM, InnoDB, und (mit MySQL 5.0.16) ARCHIVE Tabellen.

 

In der „my.cnf“ Konfigurationsdatei muss dazu folgender Eintrag vorhanden sein:

skip-innodb à entfernen Sie das Remark „#“ von dieser Zeile

innodb_file_per_table = 1 à stellt InnoDB von einer Datei „ibdata1“ auf einzelne Dateien pro Tabelle um.

 

Ausführung der Optimierung:

 

$ sudo /etc/init.d/zabbxi-server stop
Stopping Zabbix server daemon: zabbix_server

$ mysql –uroot –p

Password: *****

mysql > use zabbix

mysql > optimize NO_WRITE_TO_BINLOG  table history, history_log, history_str, history_uint, trends, trend_uint

+---------------------+----------+----------+-----------------------------------------+

| Table               | Op       | Msg_type | Msg_text                                |

+---------------------+----------+----------+-----------------------------------------+

| zabbix.history      | optimize | status   | OK                                      |

| zabbix.history_log  | optimize | status   | OK                                      |

| zabbix.history_str  | optimize | status   | OK                                      |

| zabbix.history_uint | optimize | status   | OK                                      |

| zabbix.trends       | optimize | status   | OK                                      |

| zabbix.trend_uint   | optimize | Error    | Table 'zabbix.trend_uint' doesn't exist |

| zabbix.trend_uint   | optimize | error    | Corrupt                                 |

+---------------------+----------+----------+-----------------------------------------+

7 rows in set (1 hour 38 min 23.93 sec)

mysql > \q

 

Bei einer Datenbankgröße von ca. 600MB ist dies ca. 1 Stunde und 30 Minuten gelaufen.

Das Ergebnis war das die Datenbankdatei anstatt 2GB jetzt 2,7GB hat. Also um 700MB gewachsen ist. Die Platzersparnis in den Tabellen mit „show table status from zabbix“ ist minimal ausgefallen.

 

Ergebnis: Optimierung bringt keine Reduktion der Datenbankgröße mit sich. Dies passierte darum weil die Option „innodb_file_per_table“ noch nicht aktiv war. Es war nur eine Datei mit dem Namen „ibdata1“ vorhanden die alle Tabellen enthalten hat.

1. Versuch mit Sicherung (Dump) und Rücksicherung in neue MySQL Instanz

Sicherung der Datenbank mit „mysqldump“ durchführen:

$ sudo mysqldump –uroot -p zabbix > zabbix-new.sql

 

Dauer für ca. 600MB an Daten 10 Minuten.

 

Beenden Sie den MySQL Server mit:

$ sudo /etc/init.d/mysql stopp

 

Löschen Sie die alte MySQL Instanz und erstellen Sie eine neue.

Dazu löschen Sie die Datei „ibdata1“:

$ sudo rm /var/lib/mysql/ibdate1

 

Kontrollieren Sie ob die Option „innodb_file_per_table = 1“ in der „my.cnf“ gesetzt ist:

 

$ sudo nano /etc/mysql/my.cnf

skip-innodb

innodb_file_per_table = 1

 

Speichern mit <Strg>+X und “Y” und <Enter>.

 

Starten sie den MySQL Server wieder mit:

$ sudo /etc/init.d/mysql start

 

Damit muss eine neue Datei „ibdata1“ mit ca. 10MB und das Verzeichnis „mysql“ erzeugt werden:

 

$ sudo –ls –l /var/lib/mysql

-rw-r--r-- 1 mysql mysql        0 2008-11-20 13:16 debian-5.0.flag

-rw-rw---- 1 mysql mysql 10485760 2008-11-22 15:28 ibdata1

-rw-rw---- 1 mysql mysql  5242880 2008-11-22 15:23 ib_logfile0

-rw-rw---- 1 mysql mysql  5242880 2008-11-22 15:22 ib_logfile1

drwxr-xr-x 2 mysql mysql     4096 2008-11-20 13:16 mysql

-rw------- 1 mysql mysql        7 2008-10-24 12:30 mysql_upgrade_info

drwx------ 2 mysql mysql     4096 2008-11-22 14:38 zabbix

 

Rücksicherung oder Import mit „autocommit“ und „foreignkeycheck“ Trick:

 

(

echo "SET AUTOCOMMIT=0;"

echo "SET FOREIGN_KEY_CHECKS=0;"

cat zabbix-new.sql

echo "SET FOREIGN_KEY_CHECKS=1;"

echo "COMMIT;"

echo "SET AUTOCOMMIT=1;"

) | mysql -u root -p zabbix

 

Dieser Trick sollte mehr Geschwindigkeit bei der Rücksicherung bringen.

 

Ergebnis: Die Rücksicherung dauerte vorher für 600MB über eine 1 Stunde und jetzt nur mehr 5 Minuten.

 

Datenbankgrößen Check:

$ sudo du -h /var/lib/mysql/zabbix

849M    /var/lib/mysql/zabbix

 

Die Datenbankgröße hat jetzt nur mehr 849MB und die einzelnen Dateien befinden sich im Verzeichnis „/var/lib/mysql/zabbix“

 

Fehler: Bei Rücksicherung der Datenbank kommt folgende Meldung

ERROR 1064 (42000) at line 1147: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '7342,1226468999,0),(23849,1226468999,551),(24029,1226468999,447),(24119,12264690' at line 2

 

Analyse: Während der Erstellung des Dump (Sicherung) der Datenbank ist der Zabbix Server gelaufen. Kontrolle mit „ps –ef | grep zabbix“. Damit wurden währen der Sicherung Einträge in der Datenbank erzeugt die nicht vollständig sind.

 

Behebung: Beenden Sie den Zabbix Server mit „/etc/init.d/zabbix-server stop“ bevor Sie die Sicherung der Datenbank starten.

Fehler: Undefined index: show_events_status[/var/www/tr_status.php:199]

Analyse: Nach einen Upgrade von Zabbix 1.6 auf 1.6.1 kommt dieser Fehler bei „Monitoring“-„Triggers“.

 

Behebung: In der Datei „/var/www/tr_status.php“ die Zeile 199 löschen oder ausdokumentieren:

#$show_events_status = $_REQUEST['show_events_status'];

 


 

Installation von einem Zabbix Proxy

 

Wenn ihre Netzwerkstruktur sehr groß ist empfiehlt sich der Einsatzt eines Zabbix Proxy. Diese ist dann erforderlich wenn die Anzahl der in einer Sekunde abzufragenden Werte an die 10000 kommt. Je nach netzwerkstruktur sollte dann in den einzelnen Subnetzen ein Zabbix Proxy installiert werden um den Zabbix Hauptserver von diesen Abfragen zu entlasten.

 

Anlegen einer Zabbix Gruppe und eines Zabbix Benutzers:

 

$ groupadd zabbix

$ useradd zabbix –G zabbix –d /dev/null/ -s /sbin/false

 

Anlegen der Verzeichnisse und Download der Tarball Datei:

 

$ mkdir –p /etc/zabbix

$ mkdir -p /opt/zabbix/sbin

$ mkdir -p /var/log/zabbix

 

Kompilierung und Installation des Zabbix-Proxy Servers:

 

$ ./configure –prefix=/opt/zabbix --enable-proxy --enable-agent --with-mysql –with-net-snmp –with-libcurl

$ make install

 

Berechtigung auf die Ausführbaren Dateien setzen:

 

$ chmod 755 /etc/init.d/zabbix*

$ chmod 755 /opt/zabbix/sbin/*

$ chmod 770 /var/log/zabbix

$ chown zabbix:zabbix /var/log/zabbix

 

Manueller Start vom Zabbix-Proxy und -Agent:

 

$ /etc/init.d/zabbix_agentd

$ /etc/init.d/zabbix_proxy

 

Start vom Zabbix-Proxy und -Agent in die Autostart Service hinzufügen bei SUSE:

$ chkconfig –a zabbix_agentd

$ chkconfig –s zabbix_agentd 35

$ chkconfig –a zabbix_proxy

$ chkconfig –s zabbix_proxy 35

 

Kopieren der ausführbaren Dateien auf andere Linux Stationen

Wenn Sie innerhalb Ihrer Zabbix Umgebung gleiche Linux Server wie Ubuntu mit gleichen Versionen verwenden, so können Sie die Ausführbaren Dateien auch auf andere Server kopieren.

 

$ mkdir –p /etc/zabbix

$ mkdir -p /opt/zabbix/sbin

$ mkdir -p /var/log/zabbix

$ cd /etc/zabbix

etc/zabbix $ wget ftp://innerftp.rpw.com/zabbix/SUSE/etc/zabbix/zabbix_agentd.conf

etc/zabbix $ wget ftp://innerftp.rpw.com/zabbix/SUSE/etc/zabbix/zabbix_proxy.conf

etc/zabbix $ cd /opt/zabbix/sbin

opt/zabbix/sbin $ wget ftp://innerftp.rpw.com/zabbix/SUSE/opt/zabbix/sbin/zabbix_agentd

opt/zabbix/sbin $ wget ftp://innerftp.rpw.com/zabbix/SUSE/opt/zabbix/sbin/zabbix_proxy

opt/zabbix/sbin $ cd /etc/init.d

etc/ini.d $ wget ftp://innerftp.rpw.com/zabbix/SUSE/opt/zabbix/sbin/zabbix_agentd

etc/ini.d $ wget ftp://innerftp.rpw.com/zabbix/SUSE/opt/zabbix/sbin/zabbix_proxy

 

Berechtigung auf die Ausführbaren Dateien setzen:

 

$ chmod 755 /etc/init.d/zabbix*

$ chmod 755 /opt/zabbix/sbin/*

$ chmod 770 /var/log/zabbix

$ chown zabbix:zabbix /var/log/zabbix

 

Anlegen einer Zabbix Gruppe und eines Zabbix Benutzers:

 

$ groupadd zabbix

$ useradd zabbix –G zabbix –d /dev/null/ -s /sbin/false

 

Den Aufruf vom Zabbix-Proxy und Zabbix-Agenten wie bei der Neuinstallation von Zabbix auf einen Server durchführen.


 

Installation der Zabbix Agenten

Installation Zabbix Windows Agenten (GUI Installation)

Für alle Windows Server oder auch für zu überwachende Workstations gibt es eigene Windows Agenten für Zabbix. Diese ermöglichen es eine viehlzahl von vordefinierten Items und Trigger von den Stationen abzufragen.

 

Es gibt auch ein GUI geführtes Installationsprogramm für Windows (V1.8.12).
Das Programm können Sie von der Website laden:
http://www.suiviperf.com/zabbix/

Entpacken Sie das Installationsprogramm. Wenn Sie das Installationsprogramm mit „zabbix_agent-1.8.12_installer.exe“ starten sollte das „Welcome..“  Fenster erscheinen.
Klicken Sie  auf „Next“.



 


Als nächstes erscheint das „License Agreement“ das Sie mit „I Agree“ bestätigen müssen.



Geben Sie jetz den Zabbix DNS Namen ein z.B. „zabbix.cancom.at“,  den Zabbix Server-Port welcher standardmäßig immer „10051“ und den Port für den Zabbix Agent welcher immer „10050“ ist. Sie können zusätzlich noch die Funktion für „Remote Command“ aktivieren wenn Sie später Programme über den Agent starten wollen.

 

 

Wählen Sie die Komponenten die Sie installieren möchten. Der „Zabbix Agent“ muss installiert werden. Der „Zabbix sender“ und „Zabbix Get“ sind optional.

 

Als nächste geben Sie den Zabbix Server Namen oder die IP-Adresse des Zabbix Servers ein.



Es erscheint nach klicken auf „Install“ die „Completed the Zabbix Agent Setup Wizard“ Meldung, welche mit „Finish“ geschlossen werden kann.
Danach sollte der konfigurierte Host mit dem Agenten kommunizieren.

 

Fehler: Unter „Show details“ steht
„Registering zabbix agent in windows services..
„Agent install failed…“

Analyse: Dieser Fehler erschien auf Windows 2000 Rechner in Verbindung mit dem „zabbix_agent-1.6.1_installer.exe“ auf.

Behebung: Mit dem „zabbix_agent-1.4.6_installer.exe“ ließ sich der Agent als Service registrieren.

 

 

 


Arbeiten mit Zabbix (Web-Frontend)

 

Nachdem wir nun Zabbix-Server, Zabbix-Agent und die Webkomponente von Zabbix installiert haben, können wir das System unseren Wünschen entsprechend einrichten. Da eine detaillierte Beschreibung der Oberfläche den Rahmen des Artikels sprengen würde, beschränken wir uns nachfolgend auf ein paar ausgewählte Funktionen. Wir versuchen einen Client einzubinden, ihm ein bereits existierendes Template zuzuweisen und das System korrekt zu überwachen. Darüber hinaus werden wir einen eigenen Trigger erstellen.

 

Um ein System überwachen zu können, muss es erst dem Server bekannt gegeben werden. Da wir bei der Installation des Servers auch einen geeigneten Agenten installiert haben, brauchen wir kein zweites System. Später können Sie nach demselben Muster auch andere Clients anmelden, sie gruppieren und verwalten.

Die von uns durchgeführten Aktionen werden in der folgenden Syntax erklärt: »Obere_Konfigurationszeile->Untere_Konfigurationszeile«. Beispiel: »Configuration->Hosts«. Sofern nicht anderweitig erwähnt, müssen alle Aktionen mit »Speichern« bestätigt werden.

Wer des Englischen nicht mächtig ist, kann auch die Sprache der Oberfläche ändern. Da alle Trigger (In Deutsch Auslöser) in Englisch gehalten wurden, wird die Umstellung allerdings befremdlich und wirkt teilweise hinderlich, weshalb wir weiterhin die Standardsprache nutzen und die deutschen Beschreibungen in Klammern setzen. Die Änderung des Sprache geschieht unter dem Punkt »Profile« in der rechten oberen Ecke. Stellen Sie in der nachfolgenden Maske die Sprache von »Englisch (GB)« auf »German (DE)« um, wenn Sie möchten.

Nun ist es an der Zeit, das Passwort zu setzen. Dies geschieht unter »Administration« (»Administration«). Klicken Sie dazu auf den Namen »Admin« und setzen unter »Change password« (»Kennwort ändern«) ihr neues Passwort. »Save« (»Speichern«) nicht vergessen.

Erster Start vom Zabbix Web-Frontend

Wenn Sie das Zabbix Web-Frintend das erste mal starten müssen Sie noch einige Einstellungen vornehmen.

 

 

 

 

 

 

 

 

 

 

Login mit „Admin“ und Passwort „zabbix“. nach dem Login das Passwort ändern.

 

Anlegen eines neuen Benutzers (Users)

Die Benutzerverwaltung liegt hinter „Administration“-„Benutzer“ (User)  verborgen. Hier können Sie nun nach Lust und Laune neue Anwender hinzufügen. Zabbix unterscheidet drei Arten von Anwendern: Zabbix Benutzer, Zabbix Admin und Zabbix Super Admin. Je nach User-Typ haben die Anwender verschiedene Rechte. Außerdem können Sie hinterlegen, auf welche Weise der Anwender von eventuellen Ereignissen erfahren soll. Dies passiert beim Punkt Media mit „Add“.

Ebenso können Sie einstellen, welche Gewichtungen von Nachrichten der Anwender erhalten soll. Dies kann via E-Mail, SMS und/oder Jabber geschehen.

 

Anlage oder Import/Export von Vorlagen (Template)

Vorlagenliste (Templates) finden Sie im Zabbix Forume:

Zabbix Template für Java „Template_Java“ à Datei „zapcat-1.2.zip“

 


Anlegen eines neuen Systems (Host)

Klicken Sie auf  „Konfiguration“ (Configuration)  und danach auf „Host Erstellen“ (Create Host):



Geben Sie bei „Name“ einen Namen für den Host ein, so wie dieser in Zabbix als Host angezeigt wird.
Wählen Sie danach eine „Gruppe“ (Groups) in welcher dieser Host eingefügt und angezeigt werden soll. Unter „Neue Gruppe“ (New Group) könnten Sie auch eine neue Gruppe erstellen.

 

WICHTIG! Vorsicht wenn Sie mehrere Gruppen zuteilen, so werden die Templates dieser Gruppen, automatisch auch zu diesem Host hinzugefügt. Dies ist oft nicht erwünscht!


Im Feld „DNS Name“ (DNS name) geben Sie den DNS Namen des Hosts ein (wenn Sie DNS verwenden), oder geben Sie unter „IP Adresse“ (IP address) die IP-Adresse des Host ein.
Wählen Sie bei „Verbinde zu“ (Connect to) ob der „DNS Name“ (DNS name) oder die „IP Adresse“ (IP address) für die Verbindung zum Host (Agenten) verwendet werden soll.
Der Standardport für die Agenten in Zabbix ist „10050“. Wenn Sie dies ändern müssen Sie dies auch im zugehörigen Agenten des Hosts ändern.
Den Punkt „Monitored by proxy“ brauchen Sie nur wenn Sie einen Zabbix Proxy für die Agenten verwenden.
Der Status steht auf „Monitored“ damit dieser Host von Zabbix überwacht wird.
Bei „Link mit Template“ wird die Verbindung des Host zu einem Template, und den zu überwachenden Triggern hergestellt. Sie können aus der Liste der vorhandenen Templates auswählen. Sie können einen Host auch mit mehreren Templates verlinken.
Die Option „Use IPMI“ wird für….
Die Option „Use profile wird für….

Wenn Sie die Option „Use profile“ anklicken können Sie Zusatzinformationen zu dem Host Erfassen (siehe Screenshot).

 

Wenn Sie die Option „Use extende profile“ anklicken können Sie noch mehr Zusatzinformationen zu dem Host Erfassen wie mit „Use profile“ (siehe Screenshot).

 

Anlegen neuer Elemente (Item)

Linux Template

Wenn Sie die vorhandenen Templates verwenden, dürften Sie für die Überwachung von Standard-Servern eher Elemente deaktivieren müssen, statt neue hinzuzufügen. Das Linux-Template enthält zum Beispiel die Überwachung der Verzeichnisse /, /home, /opt, /tmp, /usr und /var. Um diese Verzeichnisse also zu überwachen, müssen Sie nicht weiter Hand anlegen. Liegen einige dieser Verzeichnisse nicht auf eigenen Partitionen, könnten Sie diese wieder deaktivieren. Ebenfalls wird die Prozessorlast, laufender SMTP-Server, freier Speicher und Swap, FTP-Server, Apache, Netzwerk-Verkehr und so weiter überwacht. Des Weiteren überprüft das System die Checksummen der Dateien /etc/passwd, /etc/services, /usr/bin/ssh und /usr/bin/sshd. Sollte sich an diesen Dateien etwas verändern, können Sie Zabbix Alarm schlagen lassen.

 

 

Windows Template

Das Windows-Template überwacht per Standard unter anderem die Laufwerke c: und d:, CPU-Auslastung, Speicher, Apache und Dateizugriffs-Geschwindigkeiten. Sollten Sie andere Dienste überwachen wollen, können Sie neue hinzufügen. In unserem Beispiel möchten wir die Verfügbarkeit des Samba-Dienstes überwachen lassen. Dazu muss man wissen, dass der Prozess hier smbd heißt. Dies kann von System zu System variieren. Aus der Dokumentation können wir entnehmen, dass man Prozesse mit dem Schlüssel proc.num zählt. Der zu überwachende Dienst wird in eckige Klammern geschrieben:

 

proc.num[smbd]

 

als Schlüssel zählt also, sofern aktiviert, ab sofort alle Samba-Prozesse auf dem Beispiel-Server. Es ist sinnvoll, die selbst definierten Elemente gewissen Applikationen zuzuweisen. Damit wird das Monitoring übersichtlicher.

 

Erstellen einer Applikation um eigene Elemente (Items) zu testen

Um Ihnen die Suche nach Diensten zu erleichtern, haben wir eine simple Applikation gestrickt. Keine Sorge, sie ist ungefährlich und dient nur der Demonstration der Triggerfunktionalität. Kopieren Sie bitte den nachfolgenden Quelltext in eine neue Datei unter dem Namen »udaemon.c«:

 

$ vi udaemon.c

 

/* udaemon.c */

/* Make: gcc udaemon.c -o udaemon */

 

int main(){

    while (1)

         sleep(10);

}

 

Compilieren Sie bitte die Applikation mit dem Befehl:

 

$ gcc udaemon.c -o udaemon

 

Selbstverständlich können Sie auch einen bei Ihnen verwendeten Dienst benutzen.

Konfiguration vom Element:

 


Anlegen neuer Auslöser (Triggger)

Ein Auslöser tritt dann in Kraft, wenn ein bestimmtes Ereignis eintritt. Er löst eine gewisse Aktion aus. Zum Beispiel realisiert der Zabbix-Server, dass die Samba-Prozesse auf null springen. Dies bedeutet, dass kein Prozess des Datei- und Druck-Servers mehr läuft. Er ist somit nicht mehr erreichbar und wahrscheinlich „down“.

Zabbix kann auf dieses Ereignis reagieren und löst eine vorkonfigurierte Aktion aus. Wie schon erwähnt kann dies via E-Mail, SMS und/oder Jabber erfolgen. Sollte die Zahl der Prozesse wieder eins oder höher sein, können Sie sich wiederum benachrichtigen lassen. Auch Auslöser können Sie in die Stati aktiv oder inaktiv setzen.

Der Ausdruck an sich steht in geschweiften Klammern. Hierin steht zuerst der zu überwachende Rechner, danach der Schlüssel und dann was überwacht werden soll. Für unser Beispiel sähe der Ausdruck eines neu erstellten Auslösers so aus:

 

IBM-Samba-Server:proc.num[smbd].last(0)}<1

 

 

Sie können den verschiedenen Auslösern unterschiedliche Prioritäten zuweisen. Im Falle eines Datei- und Druck-Server wäre es sicher ein Desaster, wenn die Samba-Prozesse nicht mehr laufen.

 

Auslöser für unser vorher erstellte Applikation (siehe unter Elemente) erstellen

Um einen neuen Trigger anmelden zu können, bedarf es der vorherigen Erstellung eines Elements. Gehen Sie dazu in den Menüpunkt »Configuration->Items« (»Konfiguration->Elemente«) und wählen, falls noch nicht geschehen, aus der Liste der Systeme unser System »LOCALHOST« aus. Nun sollte die Seite alle Elemente für das System »LOCALHOST« anzeigen.

Um die Erstellung eines neuen Elements zu beschleunigen, wählen Sie bitte das Element »Number of running processes sshd« aus. In der nun erscheinenden Maske können Sie zwar nichts ändern, das stört uns aber nicht, das Element dient uns als Basis für ein neues Element. Kopieren Sie das Element mit dem Befehl »Clone« (»Kopieren«).

Nun sind Sie in der Lage, die Maske Ihren Bedürfnissen anzupassen. Ändern Sie die Beschreibung in »Number of running processes udaemon« und den Key in »proc.num[udaemon]«. Den Rest können wir belassen, wie er ist. Speichern Sie das neue Element mit »Save« (»Speichern«). Ihr neues Element wurde nun dem System »LOCALHOST« hinzugefügt.

Damit Zabbix Ihre Elemente nutzen kann, bedarf es nun der Erstellung eines neuen Triggers. Gehen Sie dazu in »Configuration->Triggers« (»Konfiguration->Auslöser«) und wählen auch hier aus der Liste der Systeme das von uns erstellte System »LOCALHOST« aus. Wie im Falle eines Elements werden wir uns auch hier eines bereits existierenden Triggers bedienen. Klicken Sie bitte »Sshd is not running on LOCALHOST«. In der neuen Maske duplizieren Sie das Element mit »Clone« (»Kopieren«). Nun ändern Sie den Namen des Triggers in »udaemon is not running on {HOSTNAME}« und die Bedingung in »{LOCALHOST:proc.num[udaemon].last(0)}<1«.

Die eigentliche Kontrolle des Triggers übernimmt die Bedingung. Die Syntax ist dabei nicht wirklich schwer zu verstehen. Während LOCALHOST den Namen des Systems bedeutet, definiert »proc.num[udaemon].last(0)« das aktuellen Wert des von uns erstellten Elements. Ist dieser kleiner als 1, ist die Bedingung wahr und Zabbix meldet »True«, was im Klartext den Ausfall des Dienstes bedeutet.

 

 

Test des eigenen Auslöser

Nun ist es an der Zeit, den neuen Trigger zu testen. Durch die Erstellung des neuen Triggers wurde dieser auch in das System eingebunden. Da wir unsere Testapplikation nur compiliert und nicht gestartet haben (Sie erinnern sich an »udaemon«), meldet Zabbix bei der Betrachtung von »Monitoring->Screens« (»Überwachung->Übersichtstafeln«) den Fehler »udaemon is not running on LOCALHOST«. Starten Sie jetzt die Applikation mit:

 

$ ./udaemon

 

Die Anzeige der Übersichtstafel müsste sich nun bald ändern. Der »Fehler« ist nach einer gewissen Zeit verschwunden. Wir haben unseren ersten selbsterstellten Trigger erfolgreich getestet.

Systeme (Host) mit Ping überprüfen

 

WICHTIG! „icmpping“ nutzt das Programm „fping“. Daher muss „fping“ am Server installiert sein (V2.4b2 ist ausreichend).

Danach Anpassung für „fping“ Programm durchführen damit Zabbix darauf zugreifen kann:

 

$ chown root:zabbix /usr/sbin/fping

$ chmod 770 /usr/sbin/fping

$ chmod ug+s /usr/sbin/fping

 

Als Template-Host, Element und Auslöser anlegen:

1.    Im Fronend wählen Sie Konfiguration (Configuration) – Systeme (Host).

2.    Wählen Sie „System hinzufügen“ (Create Host).

3.    Beginnen Sie den Namen für einen Template-Host immer mit „Template_“. Danach können Sie eine sprechende Bezeichung für das Template anhängen.

4.    Gehen Sie zur Option „mit Vorlage verlinken (Link with Template) und klicken Sie auf „hinzufügen“ (Add).

5.    Wählen Sie eine Vorlage (Template) aus mit dem dieses System (Host) verlinkt werden soll. Sie können hier auch mehrere Vorlage einem System zuteilen.

6.    Erstellen Sie jetzt ein Element (Item) für die Vorlage (Template).

7.    In das Beschreibungsfeld (Description) geben Sie „Remote Ping“ ein.

8.    Lassen Sie das Feld „Systeme“ (Hosts) leer, dies wird automatisch gefüllt sobald Sie beginnen Hosts mit diesem Template zu verlinken.

9.    Als Auslöser (Trigger) legen wir jetzt einen „Simple check“

 

Beispiel eines Items und Trigger für „Ping“

Für einen einfachen Verfügbarkeits-Check (“Simple check”) benutzen Sie den „icmpping“.

Erstellen Sie zuerst ein Item für diese Überprüfung, wählen Sie aus dem Zabbix Menü:

{__Remote_Hosts:icmpping.max(300)}<1

 

Überspringen Sie die Einheiten und verwenden sie einen Multiplikator, aktualisieren Sie danach den Update Intervall. Dieser kontrolliert die Intervalle der Kontrollen, es empfiehlt sich ein Wert zwischen 30 bis 45 hier. Dann klicken Sie auf 'Add'.

Als nächstes gehen Sie zur Erstellung der Trigger. Klicken Sie auf "Trigger" neben dem neuem „Item“. Sie sehen dann auf der rechten Seite ein Drop-Down für Hosts. Verwenden Sie das Drop-Down und wählen Sie einen Host aus. Dadurch öffnet sich eine Liste der Trigger mit diesem Host verbunden. Derzeit sollte es keiner sein.

 

In der Form, erstellen Sie eine Beschreibung, so etwas wie '{HOSTNAME} - Failed Ping Check'.

 

Für die Expression, verwenden die vorher erstellte aus der Auswahlliste:

 

{__Remote_Hosts:icmpping.max(300)}<1

 

Wählen Sie einen Schweregrad (Severity), dann klicken Sie auf „Hinzufügen“.

 

Sie sind fast fertig. Als nächstes klicken Sie auf "Aktionen" neben dem neuen Trigger. Dies ermöglicht es Ihnen, Ihre E-Mail Alarm zu konfigurieren.

Von an „Nachricht an“ Drop-Down, wählen Sie, ob Sie wann diese E-Mail an eine Gruppe oder ein Person gehen soll.

Von dem „User“ oder „Group“ Drop-Down, wählen Sie die Benutzer oder Gruppe, an welche Sie den Alarm senden wollen.

Ändern Sie den 'Betreff' auf „'{HOSTNAME} - Failed Ping Check“ dann auf Hinzufügen.

 

Okay, nun können Sie individuelle Host auswählen, welche ähnlich, wie bei der von Ihnen erstellte die erste Vorlage, diesen Trigger erhalten sollen. Der einzige Unterschied ist diesmal, statt der Wahl-Vorlage in der Dropdown, verwenden Sie "Monitored" und in letzten DropDown, wählen Sie ihren vorherigen Host als Vorlage. Nach klicken Sie auf „Hinzufügen“ ist die Überwachung fertig gestellt.

 

Fehler: „icmpping“ welcher als „Einfache Prüfung“ (Simple Check) in den Elementen (Item) angelegt wurde wird nicht ausgeführt.

Ursache: Entweder „fping“ nicht installiert oder der Besitzer nicht „root“ oder SUID nicht gesetzt. Der Fehler kann auch durch den Eintrag „SourceIP“ in der Datei „zabbix_server.conf“ ausgelöst werden.

Abhilfe: Kontrollieren Sie das vorhandensein von „fping“ und die Ausführungsrechte. Entfernen Sie den Eintrag „SourceIP“ aus der „zabbix_server.conf“ Datei.

 

Anlegen neuer Aktionen (Actions)

Mit den Aktionen können Sie nun definieren, wie Zabbix mit einem ausgelösten Ereignis umgehen soll. Für unser Beispiel soll als Auslöser-Quelle „Auslöser“ dienen. Weiterhin sollen als Voraussetzungen gelten, dass der Auslöser „Samba down“ aktiviert wird und der Auslöser-Wert „WAHR“ ist. Dies alles soll die Software an den Benutzer Admin schicken.

 

 

Im Nachrichtenfeld bietet es sich an, sprechende Texte zu verwenden. Es ist durchaus von Vorteil, wenn der Empfänger einer solchen Mail direkt weiß, was Sache ist.

 


Anlegen neuer Graphen (Graphs)

Graphen können auch in Vorlagen (Template) kopiert oder angelegt werden. Alle Systeme (Hosts) die mit dieser Vorlage verlinkt sind erhalten alle Graphen welche in der Vorlage vorhanden sind.

 

Nun ist es an der Zeit, die Resultate der Überwachung grafisch darzustellen. Auch hier sind die Möglichkeiten schier unerschöpflich, weshalb wir in unserem Beispiel nur die Anzeige der CPU-Last und der Netzwerktopologie integrieren werden.

Zuerst wollen wir deshalb einen Graphen erstellen, der die Auslastung der CPU unseres Systems grafisch anzeigen wird. Gehen Sie dazu unter »Configuration->Graphs« (»Konfiguration->Graphen«) und erstellen mit Hilfe von »Create Graph« (»Graph erstellen«) einen neuen Graphen. Tragen Sie in die Maske folgende Werte ein:

 

Name CPU-Last

Width 600

Height 200

Graph type Normal

Show working time (ja)

Show triggers (ja)

Y axis type Calculated

 

Die wohl wichtigste Aufgabe ist allerdings die Zuweisung eines passenden Items. Mit »Add« (»Hinzufügen«) erscheint ein neues Fenster, in dem Sie Ihre Zuweisung durchführen können:

 

Parameter -> »CPU user time (avg1)« auswählen

Type -> Simple

Function -> avg

Draw style Filled region

Color 009900

Y axis side Right

Sort order (0->100) 0

 

Nachdem Sie nun die Eingaben der Itemauswahl bestätigt haben, sollte sich Ihre Anzeige automatisch ändern. Der neue Eintrag wird nun unter »Items« geführt und der unterstehende Graph sollte grafisch die Auslastung anzeigen.

 

 

Anlegen neuer Pläne (Maps)

Mit den Plänen können die Host auf einem Zeichenblatt geographisch mit einen Hintergrundbild oder nach Funktionsgruppen platziert werden. Zusätzlich können in Plänen auch Verbindungen zwischen den Hosts überwacht werden. Mit den Plänen kann ein einfacher Überblick des Status von Hosts oder Verbindungen erfolgen.

 

Der nächste Schritt besteht aus der Erstellung einer grafischen Übersicht. Um einen schnellen Überblick über die verfügbaren Server zu erhalten, ist es jedem Administrator angeraten, Pläne zu erstellen. Diesen kann er später die Verfügbarkeit aller Server entnehmen und Probleme der Systeme frühzeitig erkennen.

Gehen Sie dazu in »Configuration->Maps« (»Konfiguration->Pläne«) und klicken Sie auf »Local network«. Ändern Sie in der nachfolgenden Maske die Breite auf 700 (»Width«) und speichern Ihre Änderung. Nun klicken Sie auf »Edit« (»ändern«) in der Spalte »Local Network«. Unter »Add element« wird nun ein neues System dem Plan hinzugefügt. Für unsere Belange geben wir folgende Werte ein:

 

Type: Host

Label: LOCALHOST

Host: »LOCALHOST« aus der Liste auswählen

Icon (off): Server

Icon (on): Server

Icon (unknown): Server

Coordinate X: 100

Coordinate Y: 100

 

Das Bestätigen der Angaben aktualisiert wiederholt die Seite. Nun ist unser Server sowohl in der Liste der verfügbaren Elemente aufgelistet als auch in der grafischen Anzeige der Typologie. Darüber hinaus sehen wir unter dem Namen den Status des Servers. Normalerweise sollte hier »OK« stehen. Ist dem nicht so, hat der Server entweder ein Problem, oder Sie haben einen Trigger für einen Dienst nicht abgeschaltet, der nicht vorhanden ist. Nähere Angaben liefert Ihnen die Anzeige selbst.

 

Beispiel eines Netzwerkplanes für ein Firmennetzwerk:

 

 

Erklärung zur Erstellung des Netzwerkplanes
Ich benutzte den Namen "Router & Nodes", so dass ich weiß um welche Art von Karte es sich handelt, falls ich noch mehr Karten erstelle.
Ursprünglich habe ich eine große Höhe und Breite, um mir genügend Raum zu entwerfen und ich später reduziert auf zu passen. Meine aktuelle Größe zum Beispiel ist jetzt 800×1150. Ich ließ den Rest der Optionen so wie sie sind.
Durch Drücken der Schaltfläche „Bearbeiten“, gelangen Sie zum zu der Karte Design-Seite.
Zunächst legte ich die Backbone Geräte auf der Oberseite fest, und plante einen Baum anzulegen, welche die Struktur der Router abbildet, aber leider wurde schnell klar, dass dies so nicht machbar ist. Also beschloss ich, die Backbone-Router in der Mitte platzieren und dann die Verbindung zu den anderen Knoten im Stern zu bilden.
Ich fing an, indem das Backbone in der Mitte, in der Position 350×550 angelegt wurde, die anderen Geräte des WAN/LAN wurden dann rundherum platziert.

Ich erstellte dann mehrere solche Map-Elemente für den Router, an den entsprechenden Stellen sowie zwei Elemente in Bezug auf das Internet und die Internet-Firewall. Die letzten beiden waren zunächst nur einfache Bilder, sondern ich dann geeignete Wirte Gruppen für jeden geschaffen wurden (die Firewall testet mit einen „Ping“ auf seine interne IP, während der Internet-Host auf seinen externe ISP DNS-Server geprüft wird).
Nachdem alle Elemente vorhanden waren, begann ich mit der Schaltfläche zur Linksetzung alle Verbindung herzustellen. Ich verband die Elemente entsprechend wie das Netzwerk aufgebaut ist. Ich benutzte den „Router Connection Lost“ Trigger der einzelnen Hosts um festzustellen, wenn eine Verbindung „Up“ oder „Down“ ist, und zeigen dann dies auf der Karte an. Früher habe ich fette Linien für kritische Verbindungen und einfachen Linien für alle übrigen Verbindungen. Sie können das so setzen wie Sie es für angemessen halten.

 

Nach Abschluss der Erstellung aller Verbindungen sieht die Karte so wie oben angezeigt aus.

Anlegen neuer Symbole

Sie könne zu den vorhandenen Symbolen auch eigene Symbole für die Zustände „OK“, „Failure“, „Unknow“ und „Disabled“ anlegen.

Dies geschieht unter „Konfiguration“-„Images“.

 

Anlegen eines neue geographischen Plans

Erstellen oder besorgen Sie sich eine geographische Karte auf der Sie die Host und Verbindungen darstellen wollen.

 

Hintergrundbild anlegen

1.    Konfiguration (Configuration) – Allgemein (General)

2.    Auswahl von „Images“ und bei Typ (Type) Auswahl von „Hintergrund“ (Background)

3.    Klicken Sie auf „Create Image“.

4.    Geben Sie einen Namen für das Images eine „Austria Map“.

5.    Wählen Sie als Typ „Background“.

6.    Wählen Sie unter Upload die geographische Karte aus.

7.    Klicken Sie auf „Save“ damit die Datei hochgeladen wird.

Geographischen Plan anlegen


Sie können zwar hier nicht die Art der Verbindung sehen, aber mit dem Überblick über die Karte, bekommen Sie rasche Informationen über den Ausfall eines Knotens. Dies soll Ihnen hier nur zeigen, wie Sie mit einem Layout einer Karte, auch einfach geographische  Standorte für Ihre überwachten Geräte anzeigen können. Die zuständigen Mitarbeiter können dann sehr schnell Fehler erkennen, indem Sie mit der Maus auf den Knoten klicken und die aktivierten Trigger überprüfen (im Moment ist dies nur ein „Ping“ Trigger, aber wenn Sie beginnen Server mit den „Agenten“ zu überwachen, wird es viel interessanter).


Anlegen neuer Übersichtstafeln (Screens)

Natürlich ist es mühselig, Informationen über alle verfügbaren Server aus diversen Seiten zusammenzutragen. Um eine Übersicht zu erhalten, bietet Zabbix sogenannte »Screens« (»Übersichtstafeln«) zur Auswahl an. Sie akkumulieren mehrere Elemente zu einer Tafel und erlauben dem Administrator, auf einen Blick alle gewünschten Komponenten zu überwachen. Es ist nun an der Zeit, auch eine solche Tafel zu erstellen.

Gehen Sie dazu in »Configuration->Screens« (»Konfiguration->Übersichtstafeln«) und erstellen mittels »Create Screen« (»Tafel erstellen«) eine neue Tafel. Geben Sie die folgenden Daten ein:

 

Name: Lokales Netzwerk

Columns: 1

Rows: 2

 

Ist die Tafel erstellt, können Sie sie mit einem Klick auf »Edit« (»ändern«) Ihren Bedürfnissen anpassen. Auf der nachfolgenden Seite können Sie mit einem Klick auf »change« (»ändern«) das Layout gemäß der HTML-Konventionen Ihren Wünschen entsprechend anpassen. Klicken Sie dazu das obere »change« (»ändern«) an und stellen folgende Werte ein:

 

Resource: Map

Map: Local network

Horizontal align: Center

Vertical align: Middle

Column span: 1

Row span: 1

 

Wählen Sie nun das »change« (»ändern«) unten an und ändern die Werte:

 

Resource: Graph

Graph name: LOCALHOST:CPU:Last

Width: 700

Height: 100

Horizontal align: Center

Vertical align: Middle

Column span: 1

Row span: 1

 

Damit haben Sie eine simple Übersichtstafel erstellt, die nun unter »Monitoring->Screens« (»Überwachung->Übersichtstafeln«) angezeigt werden kann.

 

 

Rufen Sie die Seite »Monitoring->Screens« (»Überwachung->Übersichtstafeln«) auf. Sie sollten neben der sich ständig ändernden Lastanzeige im unteren Bereich des Bildschirms, unter »Local network« auch Ihr System »LOCALHOST« sehen. Versuchen Sie nun, einen überwachten Dienst zu stoppen - beispielsweise den SSH-Daemon.

Je nach Zeitpunkt der Abfrage sollte sich ohne Ihr Zutun die Anzeige auf der Übersichtstafel ändern. Aus dem grünen OK sollte nun eine Fehlermeldung werden. Wahrscheinlich sogar zwei, denn Zabbix überwacht nicht nur den sshd-Prozess, sondern auch den Port. Klicken Sie das Icon des Servers an, um detaillierte Informationen über den Fehler zu erhalten. Der Status »TRUE« Signalisiert, dass der Fehler immer noch vorhanden ist. Starten Sie nun den SSH-Daemon neu. Nach einer gewissen Zeit sollte die Anzeige wieder aktualisiert werden und der Status des Fehlers von »TRUE« auf »FALSE« wechseln. Nun ist das Problem behoben, Sie können aber sehen, dass es eines gab, um dem Verursacher später auf die Schliche zu kommen.

 

Beispiel einer Übersichtstafel für ein Unternehmensnetzwerk:

 

 

Fehler im Zabbix Webfrontend

 

Fehler: Anzeige im Dashboard (Last 20 issues) „Server zabbix.company.com is unreachable“

Ursache: Beim Versuch den Wert manuell mit „zabbix_get“ abzufragen, kommt der Fehler „ZBX_NOTSUPPORTED“:

 

$ zabbix_get –s127.0.0.1 –p10050 –k „status“

ZBX_NOTTSUPORTED


Es gibt in der  “Host” Liste zwei Einträge für den Zabbix Server, einmal mit dem Namen „ZABBIX Server“ und IP Adresse 127.0.0.1 und einmal mit Namen „zabbix.company.com“ und den DNS Namen „zabbix.company.com“. Der zweite Eintrag wurde über einen Discovery-Lauf mit Host hinzufügen erzeugt.
Abhilfe: Löschen Sie den zweiten Eintrag mit den DNS-Namen „zabbix.company.com“  für den Zabbix Server.

 

Fehler:“ZABBIX is temorary unavailable!“ oder „mysql_pconnect()..: Can’t connect to local MySSQL server through socket..“

 

 

Ursache:

Prüfen Sie ob der MySQL Server läuft mit „ps –ef | grep mysql“. Wenn kein Prozess mit dem Besitzer „mysql“ angezeigt wird, ist der MySQL Server nicht gestartet.

Abhilfe: MySQL Server starten mit „rcmysql start“

 

Fehler: Fehler beim starten vom Zabbix-Webfrontend „It is not safe to rely on the system timzone settings“

 

 

Behebung: In der Datei „/etc/php5/apache2/php.ini“ wurde bei dem Parameter „date.timezone“ die Zeitzone mit „Europa/Vienna“ falsch geschrieben. Richtig ist:
date.timezone  = Europe/Vienna“ wurde

 

Fehler: Im Status wird “Zabbix Server ist aktiviert“ mit Wert „Nein“ angezeigt

 

 

Ursache: In der PHP Konfiguration ist eventuell der „Save_mode = On“ das heißt sie müssen alle Verzeichnisse in der Konfigurationsdatei angeben aus welchen PHP Programme starten darf.

Abhilfe: In der Konfigurationsdatei „/etc/php5/apache2/php.ini“ muss beim Parameter „save_mode_exec_dir“ das Verzeichnis angegeben werden in welchen sich das Programm „ps“ befindet:

 

save_mode = Off

#save_mode_exec_dir = /usr/local/bin;/usr/bin/

save_mode_exec_dir = /usr/local/bin;/usr/bin;/bin/

 

Fehler: “Processor load is too high on HOST-1”

Ursache: Bei unseren Hausservern ist der „F-Secure Anti-Virus for Windows Servers 7.01 Build 107“ installiert. Dieser reserviert sich 170-190MB am Hauptspeicher. Dies führt zu einer relativ hohen Auslastung des Servers da auch „Symantec Backup Exec 11d“ darauf installiert ist.




Abhilfe: Neue Version von „F-Secure Anti-Virus for Windows Servers 8.00 Build 123“ installiert. Danach benötigt das Programm nur mehr ca. 40MB-50MB vom Hauptspeicher. Auslastung der CPU war aber danach immer noch sehr hoch. Defragmentierung von Laufwerk C: ausgeführt.

 

Fehler: Zuteilung einer vorhandene „Applikationen“ (Applications) unter „Elemente“ (Items) nicht möglich.

Ursache: Wenn in einen neu erstellten „Elemente“ (Items) für die Druckerüberwachung die Items von einem anderen Template kopiert werden, gehen die Zuordnungen zu „Applikationen“ (Applications) verloren. Die Auswahl der „Applikationen“ (Applications) ist leer.

Abhilfe: Sobald die „Applikationen“ (Applications) unter „Elemente“ (Items) für dieses Element in „New application“ eingetragen wurde, kann diese Applikation auch für andere Elemente in dieser Elemente Liste der Vorlage (Template) ausgewählt werden.

 

Fehler: Bei der Verlinkung von zwei Templates wie „Windows_Template“ und „Windows_TemplateAdvanced“ erscheint der Fehler: „ERROR: Conflict between selected templates.“.

 

Ursache:

Es wurden zwei Templates gewählt welche sich überschneiden.

 

Abhilfe:

Achten Sie bei der Auswahl der Templates darauf, dass in diesen die Trigger nicht mehrfach vorhanden sind. Ansonsten erhalten Sie eine Fehlermeldung das eine Überschneidung von Triggern auftritt.

 

 


 

Grundlagen zu Elementen (Items)

So sammelt und speichert Zabbix die Daten

Daten, die der Zabbix Server von entfernten Hosts sammelt, werden als Items bezeichnet. Im Menü Configuration|Hosts konfigurieren Sie, welche Daten von welchen Hosts abgerufen werden sollen. Sie können die Items für einen einzelnen Host oder für ein Template konfigurieren. Weisen Sie einem Template ein Item zu, so werden die entsprechenden Daten von allen Hosts gesammelt, die dieses Template verwenden.

 

Möchten Sie einem Host oder Template ein Item hinzufügen, so müssen Sie im Menü Configuration|Hosts über die Drop-Down-Menüs oben rechts zuerst die Hostgruppe oder die Templategruppe auswählen.

 

In der Liste der Hosts klicken Sie dann in der dritten Spalte auf den Link Items. Sie sehen nun eine Liste mit allen für den Host eingerichteten Items. Mit dem Knopf Create Item oben rechts legen Sie ein neues Item für den ausgewählten Host oder das Template an.

Möchten Sie ein Item ändern, klicken Sie in der Übersicht der Items in der Spalte "Name" auf die Bezeichnung des Items.

 

Durch Klicken auf den grünen Link Active in der Spalte "Status" deaktivieren Sie ein Item. Die entsprechenden Daten werden dann nicht mehr gesammelt. Wenn Sie ein Item in einem Template deaktivieren, wird es für alle Hosts deaktiviert, die das entsprechende Template verwenden.

 

Beschreibung: http://lab4.org/mediawiki/images/a/a6/Host_item_overview.png

 

Über den Link Items werden Items konfiguriert und Neue angelegt.

Der generelle Aufbau von Items

Itemname und die Datenquelle

Da ein Host über mehrere IP Adressen oder DNS Namen überwacht werden kann, müssen Sie beim Anlegen eines neuen Items auswählen, über welche Netzwerkverbindung (Host Interface) der Zabbix Server Kontakt mit dem überwachten Host aufnehmen soll.

 

Im Feld "Description" geben Sie an, was überwacht wird, z.B. "Ping Check" oder "CPU Load Avg 5min". Seien Sie präzise, denn der Name des Items wird z.B. in Benachrichtigungen weiter verwendet. Wenn Sie z.B. per Postscan die Erreichbarkeit von Port 80 prüfen, nennen Sie das Item z.B. "HTTP Daemon listening" und nicht "Webserver running". Wenn ein TCP Port nicht antwortet, muss das nicht zwangsläufig daran liegen, dass ein bestimmter Daemon nicht läuft.

Über das Drop-Down-Menü "Type" wählen Sie aus, wie der Zabbix Server die Daten des Items abrufen soll.

Beschreibung: http://lab4.org/mediawiki/images/b/b2/Choose_item_type.png

 

Auswahl des Datentypes für ein Item die Datenquellen des Zabbix Servers. Bei jedem Item muss über den Typ angegeben werden, aus welcher Quelle die Daten stammen.

 

Datentypen von Items:

Zabbix Agent

Daten des Items werden über den Zabbix Agenten auf dem Host abgefragt.

Zabbix Agent(active)

Die Daten des Items werden vom Agenten selbständig an den Server geschickt.

Simple Check

Daten des Items ruft der Zabbix Server selbständig ab (Portscans und ICMP Ping).

SNMPv1 agent

Daten werden per SNMP Version 1 abgerufen.

SNMPv2 agent

Daten werden per SNMP Version 2 abgerufen.

SNMPv3 agent

Daten werden per SNMP Version 3 abgerufen.

Zabbix trapper

Die Daten des Items werden per zabbix_sender an den Zabbix Server geschickt.

Zabbix internal

Zugriff auf interne Daten des Zabbix Servers.

Zabbix agregate

Zusammenfassen (Summe, Durchschnitt) verschiedener Item-Values aus einer Hostgruppe zu einem Item.

External check

Daten des Items werden über Hilfsskripte oder Zusatzprogramme auf dem Zabbix Server gesammelt.

Database Monitor

Daten werden über Datenbankabfragen gesammelt.

IPMI Agent

Daten werden per IPMI von einem IPMI-Gerät abgerufen.

SSH Agent

Daten werden über eine SSH-Verbindung abgerufen.

Telnet Agent

Daten werden über eine Telnet-Verbindung abgerufen.

Calculated

Neue Items durch Berechnung vorhandener Items erzeugen.

Der Item-Key

Als "Key" eines Items tragen Sie den festgelegten Schlüssel des Items ein. Je nach Typ des Items müssen Sie einen festgelegten Key verwenden oder einen eigenen Key vergeben. Wenn Sie Daten über den Zabbix Agent, Zabbix Internal oder per Simple Check sammeln, müssen Sie einen der festgelegten Keys verwenden. Bei allen anderen Typen vergeben Sie einen eigenen Key. Über den Key erfährt der Zabbix Server, welche Daten gemessen werden sollen. Z.B. veranlasst der Key net.tcp.service[http] den Zabbix Server, auf einem Host zu prüfen, ob der TCP Port 80 geöffnet ist.

 

Bei Items vom Typ Zabbix Agent, Zabbix Internal und Simple Check unterstützen Sie Wizards bei der Auswahl des richtigen Keys. Klicken Sie einfach auf den Knopf Select.

 

Hinweis Wenn Sie auf den Button Select klicken, öffnet sich ein Pop-Up zur Auswahl des Item-Keys. In diesem Pop-Up müssen Sie bei der Zabbix Version 1.8 noch einmal auswählen, welchen Typ das Item haben soll. Die Auswahl aus dem Hauptformular wird nicht übernommen.

 

Die Item-Keys dürfen keine Sonder- oder Leerzeichen enthalten. Für die meisten Items ist noch die Angabe weiterer Optionen nötig, welche Sie dann nach der Auswahl über den Select-Knopf im Feld "Key" ergänzen müssen. Möchten Sie z.B. prüfen, ob der TCP-Port 99 auf einem Host auf Verbindungen hört, tragen Sie als Key net.tcp.service[tcp,,99] ein.

Die Optionen werden in eckigen Klammern angegeben, z.B. vfs.fs.size[e:,pfree]. In diesem Beispiel löst der Item-Key vfs.fs.size die Messung des Festplattenverbrauchs aus. Mit der Option "e:" wird angegeben, um welche Festplatte es sich handelt. Die Option "pfree" gibt an, dass der Rückgabewert den freien Platz in Prozent enthalten soll.

Datentypen und Einheiten

Zabbix arbeitet typensicher. Deshalb müssen Sie über das Drop-Down-Menü "Type of information" dem Zabbix Server immer angeben, welchen Datentyp ein Item liefert. Wenn diese Einstellung nicht korrekt vorgenommen wird, funktioniert die Überwachung nicht. Ein falscher Datentyp ist eine häufige Fehlerquelle. Wenn Sie z.B. den Speicherverbrauch einer Festplatte in Bytes messen, ist der Datentyp "Numeric (unsigned)" (Ganzzahl).
Bei Tests, die als Resultat nur "erfolgreich" oder "fehlgeschlagen" zurückliefern, entspricht 0 fehlgeschlagen und 1 erfolgreich. Das Item icmpping z.B. liefert 1, wenn der Host auf einen Ping geantwortet hat und 0, wenn keine Antwort kommt.

 

Mögliche Informationstyen für Itmes sind:

Numeric (unsigned)

Das Item liefert immer eine ganze Zahl zurück.

Numeric (float)

Das Item liefert "Kommazahlen" zurück.

Character

Das Item liefert maximal 255 Buchstaben zurück.

Log

Das Item liefert Teile eines Logfiles zurück.

Text

Das Item liefert einen Text beliebiger Länge zurück.

 

Beschreibung: http://lab4.org/mediawiki/images/c/c6/Choose_item_type_of_information.png

 

Wenn Sie für ein Item nicht den richtigen Datentyp wählen, werden keine Daten gespeichert.

 

Im Feld Unit können Sie die Daten des Items mit einer Einheit versehen. Die gängigste Einheit ist "B" für Bytes. Sobald Sie eine Einheit für ein Item eingetragen haben, rechnet der Zabbix Server alle Werte in eine einfach zu lesende Einheit um. Hat z.B. ein Item den Wert 2048B, benutzt Zabbix zur Darstellung automatisch den Wert 2KB.

 

Die Umrechnung der Einheiten geschieht nur während der Darstellung im Frontend. In der Datenbank werden die rohen nicht umgerechneten Werte gespeichert. Die Trigger werden ebenfalls auf den rohen Werten angewendet. Bei sehr kleinen Werten kann es passieren, dass diese im Frontend zu 0 abgerundet werden. Wundern Sie sich nicht, wenn Trigger nicht auslösen, denn der Originalwert des Items ist nicht 0.

Zulässige Einheiten sind:

 

B = Bytes

werden automatisch umgerechnet in KB, MB, und GB, 1024B=1KB.

b = Bits

werden automatisch umgerechnet in kb, mb, gb, 1000b=1kb.

unixtime

rechnet die Anzahl der Sekunden seit dem 01.01.1970 in ein Datum des Formats "yyyy.mm.dd hh:mm:ss" um.

s = Sekunden

werden in Millisekunden, Minuten und Stunden umgerechnet.

 

Über das Drop-Down-Menü Use multiplier können Sie angeben, ob und mit welchem Faktor Sie den Wert eines Items multiplizieren möchten, bevor dieser weiter verarbeitet wird. Wenn Ihnen z.B. ein Item den Wert MB (Mega Bytes) zurück gibt, Sie möchten aber mit mb (Mega Bits) weiterarbeiten, dann tragen Sie als "multiplier" 8 ein. "Multiplier" können auch Dezimalzahlen sein, die Sie nach amerikanischer Notation mit Punkt eintragen, z.B. "0.25", um eine Division durch vier zu erreichen.
Wenn Sie einen Multiplier verwenden, wird das Resultat der Multiplikation in der Datenbank gespeichert. Die Originalwerte werden nicht gespeichert.

Update interval

Mit dem Wert im Feld "Update interval (in sec)" legen Sie fest, in welchem Intervall der Zabbix Server die Daten abruft. Sie sollten sich bei jedem Item überlegen, ob die voreingestellten 30 Sekunden ein angemessener Wert sind. Je häufiger Sie Daten abrufen, desto mehr Last erzeugen Sie auf dem Zabbix Server und der Datenbank. Beim Festlegen des Intervalls denken Sie an einen eventuellen Trigger und einen Alarm, den Sie auf dem Item einrichten werden. Wenn Sie dem Alarm keine Dringlichkeit einräumen, ist es in der Regel auch nicht nötig, die Daten alle 30 Sekunden abzurufen. Berücksichtigen Sie ebenfalls, wie die Daten gesammelt werden. Simple Checks oder Items, die der Zabbix Agent ohne zusätzliche Programme liefert, erzeugen i.d.R. wenig Last. Items, die auf dem Host aber zusätzliche Programme oder Skripte aufrufen, können u.U. viel Last erzeugen. Sie sollten zudem sicherstellen, dass das Programm oder Skript, welches der Agent aufruft, sich auch innerhalb des Update Intervalls beendet.

 

Über das Feld Flexible intervals haben Sie die Möglichkeit, das Updateintervall je nach Tag oder Uhrzeit zu ändern. Tragen Sie dazu im Feld "Delay" ein abweichendes Updateintervall ein und definieren Sie im Feld "Period" eine Zeitspanne, wann das abweichende Updateintervall gelten soll. Die Begriffe "Delay" und "Interval" sind in diesem Formular Synonyme.

 

Tage und Uhrzeiten werden mit einem Komma getrennt. 1 entspricht Montag und 7 Sonntag.

 

Möchten Sie montags bis freitags von 9 bis 17 Uhr ein abweichendes Intervall verwenden, tragen

Sie im Feld "Period" den Wert "1-5,9-17" ein.

 

Wenn Sie als Intervall "0" eintragen, wird der Check ausgesetzt.

Im unten abgebildeten Screenshot sehen Sie ein Item, welches täglich nur zwischen 8:00 Uhr und 22:00 Uhr geprüft wird. Um das zu erreichen, wurde der Check über "Interval=0" zwischen 22:00 und 8.00 Uhr ausgesetzt.

 

Beschreibung: http://lab4.org/mediawiki/images/c/c0/Flexible_interval.png

 

Ein flexibles Intervall. Zwischen 22:01 und 7:59 Uhr wird dieses Item nicht überwacht.

 

WICHTIG Möchten Sie das Updateintervall für ein vorhandenes Item ändern oder ein weiteres hinzufügen, so werden Ihre Änderungen erst dann gespeichert, wenn Sie das gesamte Formular unten mit dem Save speichern.

 

Hinweis Wenn Sie das Standardupdateinterval ändern, während ein abweichendes flexibles Interval aktiv ist, kann es passieren, dass alle Änderungen erst nach Ablauf des zuvor konfigurierten flexiblen Intervals aktiv werden. In Version 1.8.7 hilft nur ein Restart des Zabbix Servers und. ggf des zuständigen Zabbix-Proxies, damit das neue Standardupdateinterval sofort aktiviert wird.

Historische Daten speichern

Im Feld "Keep history (in days)" tragen Sie ein, wie lange die gesammelten Daten des Items in der Datenbank gespeichert werden sollen. Daten, die älter sind als in den Feldern "Keep history" und "Keep trends" angegeben, werden von den Zabbix Server Housekeepern automatisch gelöscht.

Im Feld "Keep trends (in days)" legen Sie fest, wie lange die zusammengefassten Daten eines Items gespeichert werden. Als Trend speichert Zabbix den stündlichen Minimal- und Maximalwert sowie den Durchschnittswert eines Items.

Bei der Konfiguration der beiden Werte sollten Sie sich Gedanken darüber machen, ob die historischen Werte des Items von Nutzen sind. Von vielen Items sind die Daten aus der Vergangenheit bei der Fehlersuche oder bei der Analyse von Performanceengpässen Gold wert. Auch einfache Daten wie "war Datenbank A vor 14 Tagen um 7 Uhr online" können von großem Nutzen sein, denn sie könnten z.B. erklären, warum Datenbank B zur gleichen Zeit eine höhere Last als üblich hatte. Wenn Datenbank B die Last von Datenbank A übernehmen musste, dann ergibt sich aus den historischen Daten ein logische Erklärung.

Es gibt aber auch Items, bei denen eine lange Speicherung der Daten wenig sinnvoll ist. Im Zweifelsfalle sollten Sie lieber zu viele als zu wenige Daten speichern.

Wenn Sie ein großes Setup planen, in dem mehrere Hundert Hosts überwacht werden, überlegen Sie sich gut, wie lange Sie historische Daten brauchen. Die Tabellen mit den Historien wachsen schnell auf mehrere Gigabyte an. Vermeiden Sie schon im Vorfeld die Speicherung unnützer Daten.

Differenzbildung und Werte-Mapping

Über das Drop-Down-Menü Store Value können Sie festlegen, ob der Wert, so wie er gesammelt wurde ("as is") gespeichert und weiterverarbeitet werden soll.

Wählen Sie bei "Store value" "Delta (simple change)" aus, dann wird in der Datenbank nur die Differenz zum letzten gemessenen Wert gespeichert.

Wählen Sie "Delta (speed per second)" aus, dann wird die Differenz zum letzten Wert geteilt durch den Wert "Update Interval" gespeichert.

Viele Items liefern den Wert eines Zählers zurück, der erst durch die Differenzbildung zu einer sinnvollen Information wird. Z.B. zählt eine MySQL Datenbank die Anzahl der Abfragen, indem der Zähler mit jeder Abfrage um eins erhöht wird. Speichern Sie in Zabbix das Delta pro Sekunde, dann bekommen Sie ein sinnvolles Item, das anzeigt, wie viele SQL-Abfragen die Datenbank pro Sekunde verarbeitet.

 

net.if.in und net.if.out liefern ebenfalls einen fortlaufenden Zähler der gesendeten bzw. empfangenen Bytes. Erst durch die Differenzbildung wird aus diesen Werten die Angabe Mbytes/sec.

 

Über das Drop-Down-Menü Show Value können Sie die rohen Werte eines Items, in der Regel Zahlen, durch aussage kräftigere Wörter ersetzen. Diese Ersetzung erfolgt aber nur für die Anzeige auf der Weboberfläche. In der Datenbank werden die rohen Werte gespeichert.

 

Bevor Sie die rohen Werte durch eigene Bezeichnungen ersetzen können, müssen Sie ein Value Mapping anlegen. Dies können Sie über das Menü Configuration|General|Value Mapping oder über den Link show value mappings in der Spalte "Show value" vornehmen. Für einen "Ping Check" können Sie z.B. ein Value Mapping anlegen, bei dem der Wert 0 durch "offline" und der Wert 1 durch "online" ersetzt wird. Einige nützliche Mappings sind bereits angelegt.

Items gruppieren, klonen und deaktivieren

Items, die eine logische Einheit bilden, z.B. weil sie alle einen bestimmten Dienst überwachen, sollten Sie in Gruppen zusammenfassen. Solche Item-Gruppen werden als Applikationen bezeichnet. Im Feld "New Application" können Sie eine neue Item-Gruppe anlegen und das Item dieser Gruppe sofort hinzufügen. Alternativ können Sie das Item auch einer vorhandenen Gruppe über die Auswahl "Applications" hinzufügen.

 

Mit dem Knopf clone haben Sie die Möglichkeit, ein Item zu duplizieren. Das duplizierte Item wird demselben Host oder Template zugewiesen wie das Original. Das Ändern des Hosts ist beim Klonen nicht möglich. Möchten Sie ein Item duplizieren und dabei einem anderen Host oder Template zuweisen, nutzen Sie dafür die Funktion "copy selected to" in der Tabellenansicht der Items.

 

Über das Drop-Down-Menü Status legen Sie fest, ob das Item aktiv ist, d.h. ob der Zabbix Server die konfigurierten Daten sammeln und weiterverarbeiten soll. Wenn Sie ein Item auf "Disabled" setzten, dann werden auch alle nachfolgenden Trigger und Aktionen (Alarme) nicht ausgeführt.

Anlage neuer Elemente (Items)

Durchführung sogenannter “Simple checks” (ohne Agent)

 

„Simple checks“ werden normalerweise für die agentenlose Überwachung oder für Remote-Prüfungen von Services verwendet. Beachten Sie, dass für „Simple checks“ keine Zabbix-Agenten erforderlich sind. Der Zabbix-Server ist verantwortlich für die Verarbeitung von einfachen Überprüfungen (und erstellt die externen Verbindungen, usw.).
Alle „Simple checks“, mit Ausnahme von TCP und tcp_perf, akzeptieren einen optionalen Parameter:

·         Service”,”Portnummer”. Falls die “Portnummer” fehlt wird der Standardport des Services verwendet. Zum Beispiel für “http” der Port “80”.

 

Beispiele von “Simple checks”:

ftp,155
http
http_perf,8080

 

Hinweis Als IP-Adresse wird  die von der Zabbix-Host Definition verwendet.

 

WICHTIG  Wenn sie verschlüsselte Protkolle (wie IMAP auf Port 993 oder POP auf Port 995 verwenden) wird dies im Moment nicht unterstützt. Als Alternative können Sie “tcp” und “tcp_perf” für Tests wie diese verwenden.

 

Liste von “Simple checks”:

 

Schlüsselwort

Description

Return value

ftp,<port>

Checks if FTP server is running and accepting connections

0 - FTP server is down
1 -
FTP server is running

ftp_perf,<port>

Checks if FTP server is running and accepting connections

0 - FTP server is down
Otherwise, number of seconds spent connecting to
FTP server.

http,<port>

Checks if HTTP server is running and accepting connections

0 - HTTP server is down
1 -
HTTP server is running

http_perf,<port>

Checks if HTTP (WEB) server is running and accepting connections

0 - HTTP (WEB) server is down
Otherwise, number of seconds spent connecting to
HTTP server.

icmpping[<target>,<packets>,<interval>,<size>,<timeout>]

Checks if server is accessible by ICMP ping
target - host IP or DNS name
packets - number of packets
interval - time between successive packets in milliseconds
size - packet size in bytes
timeout - timeout in milliseconds

0 - ICMP ping fails
1 - ICMP ping successful

icmppingloss[<target>,<packets>,<interval>,<size>,<timeout>]

Return percentage of lost packets
target - host IP or DNS name
packets - number of packets
interval - time between successive packets in milliseconds
size - packet size in bytes
timeout - timeout in milliseconds

Loss of packets in percents

icmppingsec[<target>,<packets>,<interval>,<size>,<timeout>,<mode>]

Return ICMP ping response time
target - host IP or DNS name
packets - number of packets
interval - time between successive packets in milliseconds
size - packet size in bytes
timeout - timeout in milliseconds
mode - one of min, max, avg (default)

Number of seconds

imap,<port>

Checks if IMAP server is running and accepting connections

0 - IMAP server is down
1 -
IMAP server is running

imap_perf,<port>

Checks if IMAP server is running and accepting connections

0 - IMAP server is down
Otherwise, number of seconds spent connecting to
IMAP server.

ldap,<port>

Checks if LDAP server is running and accepting connections

0 - LDAP server is down
1 -
LDAP server is running

ldap_perf,<port>

Checks if LDAP server is running and accepting connections

0 - LDAP server is down
Otherwise, number of seconds spent connecting to
LDAP server.

nntp,<port>

Checks if NNTP server is running and accepting connections

0 - NNTP server is down
1 -
NNTP server is running

nntp_perf,<port>

Checks if NNTP server is running and accepting connections

0 - NNTP server is down
Otherwise, number of seconds spent connecting to
NNTP server.

ntp,<port>

Checks if NTP server is running and accepting connections

0 - NTP server is down
1 -
NTP server is running

ntp_perf,<port>

Checks if NTP server is running and accepting connections

0 - NTP server is down
Otherwise, number of seconds spent connecting to
NTP server.

pop,<port>

Checks if POP server is running and accepting connections

0 - POP server is down
1 -
POP server is running

pop_perf,<port>

Checks if POP server is running and accepting connections

0 - POP server is down
Otherwise, number of seconds spent connecting to
POP server.

smtp,<port>

Checks if SMTP server is running and accepting connections

0 - SMTP server is down
1 -
SMTP server is running

smtp_perf,<port>

Checks if SMTP server is running and accepting connections

ssh,<port>

Checks if SSH server is running and accepting connections

0 - SSH server is down
1 -
SSH server is running

ssh_perf,<port>

Checks if SSH server is running and accepting connections

0 - SSH server is down
Otherwise, number of seconds spent connecting to
SSH server.

tcp,port

Checks if TCP service is running and accepting connections

0 - TCP service is down
1 -
TCP service is running

tcp_perf,port

Checks if TCP service is running and accepting connections

0 - the service on the port is down
Otherwise, number of seconds spent connecting to the
TCP service.

 

“Timeout” Verarbeitung

Zabbix wird den “Simple check” nicht verarbeiten  wenn die Prüfung klänger dauert als in der “Timeout” in Sekunden in der Zabbix-Server Konfigurationsdatei.

ICMP-Pings

Zabbix verwendet für die Verarbeitung von ICMP-Pings das externe Dienstprogramm „fping“. Das Dienstprogramm ist kein Teil der Zabbix-Distribution und muss zusätzlich installiert werden. Wenn das Dienstprogramm fehlt, falsche Berechtigungen hat oder in einem anderen Verzeichnis liegt als in der Konfigurationsdatei bei „FpingLocation“  angegeben, edann werden ICMP-Pings (icmpping, icmppingsec und icmppingloss) nicht verarbeitet werden.

fping“ muss für den Zabbix-Benutzer und –Daemon unter Benutzer-ID „root“ ausführbar sein. Führen Sie diese die folgenden Befehle als „root“-Benutzer aus, um die richtigen Berechtigungen einzurichten (suid):

 

shell> chown root:zabbix /usr/sbin/fping
shell> chmod 710 /usr/sbin/fping
shell> chmod ug+s /usr/sbin/fping

 

Die Standarwerte der ICMP Check Paramter:

 

Parameter

Wert

Beschreibung

fping flag

Min

Max

packets

3

Anzahl der Pings zum Ziel

-c

1

10000

interval

25

Standard-Millisekunden des “fping”

-p

20

size

56 or 68

Standard-Bytes für den “fping”; 56 Bytes auf x86, 68 Bytes auf x86_64

-b

24

65507

timeout

500

Standard-Millisekunden für den “fping” Timeout

-t

50

 

WICHTIG  Die „fping“ Standardwerte können sich je nach Plattform und Version vom „fping“ unterscheiden - überprüfen sie dazu die „fping“ Dokumentation.


Zabbix schreibt alle IP-Adressen welche gecheckt werden in eine temporäre Datei, die dann an den „fping“ weitergeleitet wird. Wenn die Elemente (Items) unterschiedliche Parameter haben, so werden nur diejenigen mit identischen Parametern in eine einzelne Datei geschrieben.

 

Kalkulierte Elemente (Calculated items)

Hinweis Die Unterstützung für kalkulierte Elemente (Items) wurde mit Zabbix 1.8.1 eingeführt.

 

Mit berechneten Positionen können Sie Berechnungen auf der Basis von anderen Elementen (Items) durchführen. Die so berechnete Elemente (Items) können als Quelle zur Schaffung von virtuellen Datenquellen dienen. Diese Elemente werden dann in regelmäßigen Abständen auf der Grundlage eines arithmetischen Ausdrucks berechnet.

 

Die berechneten Daten werden in der Zabbix-Datenbank, wie bei jedem anderen Element, gespeichert werden - dies bedeutet sowohl das Speichern der Historie- und der Trend-Werte für schnelle Grafik-Generierung. Berechnete Elemente können in Trigger-Ausdrücken verwendet werden, referenziert durch Makros oder anderen Definitionen wie bei alle anderen Elementtypen (Items).

 

Um berechnete Elemente zu verwenden, wählen Sie den Elementtyp “Berechnet”. Der “Key” (Schlüssel) ist ein einedutiger Identifier (pro Host). Sie können einen beliebigen “Key”-Namen mit unterstützt Symbolen anlegen. Die Berechnung Definitionen sollte im Feld “Formel” (in V1.8.1 und V1.8.2 benannt “Expression”) eingegeben werden. Es gibt praktisch keine Verbindung zwischen der Formel und einem Schlüssel. Die “Key” Parameter werden in keinster Weise in der Formel verwendet - Variablen der Formel können mit User-Makros übergeben werden.

 

Die korrekte Syntax für eine einfache Formel lautet:

 
func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)

 

Erklärung der Befehlszeile:

 

ARGUMENT

DEFINITION

func

Einige der unterstützten Funktionen in Trigger: last, min, max, avg, count, etc

key

Der „key“ eines anderen Elements (Items), dessen Daten die Sie verwenden möchten. Er kann nur als „key“ oder als „hostname:key“ definiert werden.

 

Hinweis: Die Inbetriebnahme des gesamten Schlüssel in doppelte Anführungszeichen ("...") wird dringend empfohlen, um falsche Interpretationen von Leerzeichen oder Kommas innerhalb des „key“ zu vermeiden.

Wenn es innerhalb des „key“ auch Parameter mit doppelten Anführungszeichen gibt, so müssen diese mit dem Backslash (\) maskiert werden. Siehe Beispiele 5 und 6 weiter unten.

parameter(s)

Zusätzlicher Parameter welche für die Berechnung erforderlich sein könnten. Siehe Beispiel 5 unten.

 

Hinweis Alle Elemente (Items), auf welche aus der berechneten Formel referenziert wird, müssen vorhanden sein und Daten enhalten. Wenn Sie z.B. den „Key“ eine Elementes (Items) eines referenzierten Elements ändern, dann müssen Sie manuell auch alle Formeln aktualisieren welche diesen „Key“ verwenden.


Eine komplexere Formel kann eine Kombination von Funktionen, Operatoren und Klammernn einhalten. Sie könnten alle Funktionen und Operatoren in Ausdrücken Trigger unterstützten. Beachten Sie, dass der Syntax etwas anders ist, allerdings ist die Logik und die Rangfolge der Operatoren genau die gleiche.


Unterstützte Zeichen für einen Hostnamen:

a..zA..Z0..9 ._-

 

Unterstützte Zeichen für einen „Key“:

a..zA..Z0..9.,_

 

Unterstützte Zeichen für eine Funktion „func“:

a..zA..Z0..9_

 

Anders als bei Trigger-Ausdrücken, wird berechneten Elementen (Items) der Zabbix-Prozess nach einen Update-Intervall ausgeführt und nicht nach dem Empfang eines neuen Wertes.

 

Ein berechnetes Element (Item) kann in folgenden Fällen nicht unterstützt werden:

 1. referenzierten Position (en) nicht gefunden

 2. keine Daten, um eine Funktion zu berechnen

 3. Division durch Null

 4. falsche Syntax verwendet

 
Beispiel 1

Kalkuliere den Prozentsatz des freien Festplattenplatzes auf  “/”.

 

Benutzen der Funktion last:

 

100*last("vfs.fs.size[/,free]")/last("vfs.fs.size[/,total]")

 

Zabbix nimmt die neuesten Werte für freien Festplatenplatz und die gesamte Festplattenplatz verwenden um den Prozentsatz gemäß der angegebenen Formel zu berechnen.

Beispiel 2

Kalkuliere über 10 Minuten die durchschnittlichen Prozesse, welche von Zabbix benutzt werden.

 

Benutzung der Funktion avg:

 

avg("Zabbix Server:zabbix[wcache,values]",600)

 

Beachten sie das die extensive Nutzung von kalkulierten Elementen mit langen Berechnungszeiten (Periodenberechnung)  die Serverleistung massiv beinflussen können.

Beispiel 3

Kalkulation der Bandbreite der Netzerkkarte “eth0”.

 

Die Summierung von zwei Funktionen:

 

last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]")
Beispiel 4

Kalkulation der Prozente des eingehenden Datenverkehrs.

 

Eine komplexe Berechnung mit  Einzelfunktionen:

 

100*last("net.if.in[eth0,bytes]")/(last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]"))
Beispiel 5

Kalkulation der Anzahl der Zeilen in einer Log-Datei für die letzten 10 Minuten.

 

Beachten Sie hier, wie die doppelte Anführungszeichen innerhalb des “Key” mit dem Backslash (“\”) maskiert werden:

 

count("logrt[\"/tmp/test.log\",\"some words pattern\"]",600)
Beispiel 6

Verwendet aggregierte Elemente (Items) zur Berechnung eines neuen Elementes.

Beachten Sie, wie die doppelte Anführungszeichen innerhalb des angegebenen „Key“ maskiert werden:

 

last("grpsum[\"video\",\"net.if.out[eth0,bytes]\",\"last\",\"0\"]") / last("grpsum[\"video\",\"nginx_stat.sh[active]\",\"last\",\"0\"]")
 

Einsatz von SSH und Telnet Checks

Der Zabbix Server und die Proxies sind in der Lage, Daten von einem Host per SSH oder Telnet abzuholen. Dazu ist auf dem Überwachten Host die Installation des Zabbix Agenten nicht nötig. Die Verbindung wird per SSH oder Telnet aufgebaut. Der Zabbix Server loggt sich ein und führt dann remote ein Kommando aus. Der Rückgabewert dieses Kommandos wird dann als Value für ein Item gespeichert.

 

Um Items von Type SSH anzulegen, muss der Zabbix Server und die Proxies mit der Option --with-ssh kompiliert worden sein. Schauen Sie in das Logfile vom Zabbix Server, dort muss beim Start des Server bestätigt werden, dass die SSH Option verfügbar ist. Für die Telnetverbindngen sind keine Optionen während des Kompilierens notwendig.

 

Die Option, Daten per SSH "abzuholen" ist eine sehr nützlich Erweiterung doch sollten Sie damit nicht den Zabbix Agent ersetzten. Einen Host per SSH zu überwachen, ist dann sinnvoll, wenn man den Zabbix Agent nicht installieren kann und man nur wenige Daten sammeln will. Dies kann z.B. bei NAS Appliances sinnvoll sein.

 

Eine Überwachung per Telnet ist nur für Geräte empfehlenswert, die über keine andere Schnittstelle verfügen.

 

Bevor Sie SSH- oder Telnet-Items einrichten, sollten Sie sich folgende Probleme klarmachen.

Das Ausführen von Kommandos per Telnet setzt einen sogenannten Telnetpromt vorraus. Nach dem Login muss der Telnetserver einen Prompt ausgeben, der mit $, #, > oder % beginnt. Das Simulieren von z.B. HTTP oder SMTP Verbindungen per Telnet ist aus diesem Grund nicht möglich.

Authentifizierung

Passwort

Wenn Sie ein SSH oder Telnet-Item anlegen, müssen Sie festlegen, als welcher Benutzer sich der Zabbix Server an dem überwachten Host anmelden soll. Das passende Passwort geben Sie im Klartext in die Webgui ein. Nach dem Speichern wird das Passwort ebenfalls im Klartext in der Datenbank gespeichert. Wenn Sie die Zabbix Weboberfläche nicht per HTTPS verschlüsseln, können die eingegebenen Passwörter über das Netzwerk "abgehört" werden. Wenn Sie Telnet einsetzen kann das Passwort auch abgehört werden, während sich der Zabbix Server auf dem entfernten Host anmeldet.

 

SSH Keys
Als Alternative zur Authentifizierung per Passwort steht auch die Nutzung von SSH-Keys zur Auswahl. In der Konfiguration des Zabbix Servers und der Proxies gibt es eine Option SSHKeyLocation. Diese ist in der Standardkonfiguration deaktiviert.

 

### Option: SSHKeyLocation
#       Location of public keys for SSH checks
#
# Mandatory: no
# Default:
SSHKeyLocation=/opt/zabbix_server/etc/ssh_keys

 

Erzeugen Sie nun ein neues Schlüsselpaar für Zabbix

ssh-keygen -t rsa -b 2048 -f /opt/zabbix_server/etc/ssh_keys/id_rsa
chown -R zabbix /opt/zabbix_server/etc/ssh_keys/
chmod 0600 /opt/zabbix_server/etc/ssh_keys/*

 

Item anlegen

Ein Item vom Typ SSH oder Telnet legen Sie wie jedes andere Item an. Als Item Key verwenden Sie immer telnet.run[description] bzw. ssh.run[description].

Im Feld Executed script geben Sie die Kommandos an, die auf dem entfernten Host ausgeführt werden. Ob Sie die Kommandos mit vollen Pfaden angeben müssen, hängt von der Umgebung ab, die der Zabbix Server nach dem Login erhält. I.d.R. ist ein sogenannter Pfad gesetzt.
Wenn Sie mehr als ein Kommando per Telnet ausführen, enthält die Rückgabe sowohl die Kommandos selbst als auch den Prompt. Wenn Sie z.B. als Kommandos folgende ausführen,

 

cat /etc/issue
uname -a

 

erhalten Sie als Rückgabe folgendes:

cat /etc/issue
Debian GNU/Linux 6.0 \n \l
 
zabbix@zabbix:~$ uname -a
Linux zabbix 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64 GNU/Linux

 

Bei Verbindungen per SSH erhalten Sie nur die Ausgabe der Kommandos.

 

Setzen Sie den Type of Information zu Testzwecken auf Text, damit Sie den kompletten Rückgabewert sehen. Erst wenn Sie sicher gestellt haben, dass die Rückgabe z.B. nur aus einer Zahl ohne Prompt und sonstige unerwünschte Zeichen besteht, stellen Sie den Type auf Information auf Numeric oder Float um.

 

Es wird nur die Ausgabe von STDOUT zurückgeben. Fehlermeldung über STDERR werden nicht an den Zabbix Server übertragen. Wenn Sie die möglichen Fehlermeldungen erhalten möchten, lenken Sie STERR nach STDOUT, /usr/bin/command 2>&1.

 

Beschreibung: http://lab4.org/mediawiki/images/7/71/Ssh_item.png

Information per SSH abholen.

 

Optionen für Telnet und SSH Items: Die Items Key werden nach folgendem Schema aufgebaut:

ssh.run[<unique short description>,<ip>,<port>,<encoding>]
telnet.run[<unique short description>,<ip>,<port>,<encoding>]

Nützliche Kommandos

Loadaverage 1min/5min/15min

 

cat /proc/loadavg |cut -d " " -f1
cat /proc/loadavg |cut -d " " -f2
cat /proc/loadavg |cut -d " " -f3

 

Empfangene Bytes auf Device eth0

cat /proc/net/dev|grep eth0|awk '{print $2}'

 

Gesendete Bytes auf Device eth0

cat /proc/net/dev|grep eth0|awk '{print $10}'

 

Freier Festplattenspeicher in Kilobytes auf Mountpoint / (Use custom multiplier 1024)

df -P|grep "/$"|awk '{print $4}'

 

Freier Festplattenspeicher in Prozent auf Mountpoint /

df -P|grep "/$"|awk '{print $5}'|tr -d "%"

 

Anzahl laufende Prozesse eines Programms, z.B.

pgrep zabbix_server|wc -l

 

Die Optionen von pgrep können je nach Distribution variieren. Debian versteht z.B.

pgrep -c zabbix_server

 

RedHat und CentOS kennen die Option "-c" nicht.

Rückgabe von zwei Kommandos ohne Zeilenumbruch

(hostname;uname -m)|xargs echo –n
 

Telnet-Checks

 

Telnet-Check ist eine agentenloses Überwachung. Für den Telnet-Check wird kein Zabbix-Agent benötigt.

 

Die tatsächlichen Befehle welche ausgeführt werden, müssen in das “Executed script” Feld im Element (Item) der Konfiguration platziert werden. Mehrere Befehle können, einer nach dem anderen eingefügt werden, indem sie für jedem eine neuen Zeile beginnen.

 

Bis Version 1.8.1, kann die Eingabeaufforderung (Prompt) auf folgende Zeichen enden:

       $

       #

      

 

 Zabbix Version 1.8.2 fügt Unterstützung für zusätzliche Prompt Zeichen ein:

       %

 

Schlüsselwort

Beschreibung

Kommentar

telnet.run[<unique short description>,<ip>,<port>,<encoding>]

Run a command on a remote device using telnet connection

 

SSH-Checks

Zabbix muss mit der SSH2 Unterstüzung konfiguriert werden..

Hinweis Die mindest Version welche unterstützt wird ist die “libssh2” Version 1.0.0.

 

SSH-Check ist eine agentenloses Überwachung. Für dienSSH-Check wird kein Zabbix-Agent benötigt.

 

Die tatsächlichen Befehle welche ausgeführt werden, müssen in das “Executed script” Feld im Element (Item) der Konfiguration platziert werden. Mehrere Befehle können, einer nach dem anderen eingefügt werden, indem sie für jedem eine neuen Zeile beginnen.

 

Schlüsselwort

Beschreibung

Kommentar

ssh.run[<unique short description>,<ip>,<port>,<encoding>]

Run a command by using SSH remote session

 

Fehler bei SSH oder Telnet Checks

Fehler bei SSH Check ist Status oder im Log „Not Supported“

Fehler bei SSH Check steht bei Staus immer „Not supportetd“.

 

 

oder im „zabbix _server.log“ steht:

 

23969:20120405:172005.667 ssh_run() exitcode: 0 bytecount: 48

 23969:20120405:172005.668 End of ssh_run():NOTSUPPORTED

 23969:20120405:172005.668 Item [mdm15.hosting.cancom.de:ssh.run[checkcorpnet]] error: Failure reading data from SSH server

 23969:20120405:172005.668 In zabbix_log()

 23969:20120405:172005.668 In DCconfig_get_items() hostid:0 key:'zabbix[log]'

 23969:20120405:172005.668 End of DCconfig_get_items():0

 23969:20120405:172005.668 End of zabbix_log()

 23969:20120405:172005.668 End of get_value():NOTSUPPORTED

 

Behebung:

 

 

 


Praxisbeispiel für Elemente (Items) und Auslöser (Trigger)

Monitoring VMware ESXi Host on HP DL Server

 

On Zabbix Server:
Software monitoring
VMware Infrastructure (VI) Perl Toolkit
http://communities.vmware.com/commun...phere_sdk_perl


See vSphere SDK for Perl Installation Guide http://www.vmware.com/support/developer/viperltoolkit/

Als Vorbereitung sollten folgende Perl Pakte installiert sein:
- sudo apt-get install libclass-methodmaker-perl

-       libxml-libxml-perl

-       libperldoc-search-perl

-       libclass-methodmaker-perl

-       libcrypt-ssleay-perl

 

Siehe auch folgende Website: http://pubs.vmware.com/vsphere-50/index.jsp?topic=/com.vmware.perlsdk.install.doc_50/viperl_install_sourcecode.4.2.html

 

Download durchführen und entpacken.

 

Dann Installation mitsudo ./vmware-install.plstarten.

 

zabbix@cca-zabbix-1:~$ sudo aptitude install libxml-libxml-perl

Die folgenden NEUEN Pakete werden zusätzlich installiert:

  libxml-libxml-perl libxml-namespacesupport-perl{a} libxml-sax-expat-perl{a} libxml-sax-perl{a}

0 Pakete aktualisiert, 4 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.

Muss 533kB an Archiven herunterladen. Nach dem Entpacken werden 2.032kB zusätzlich belegt sein.

Wollen Sie fortsetzen? [Y/n/?] Y

Hole:1 http://de.archive.ubuntu.com/ubuntu/ maverick/main libxml-namespacesupport-perl all 1.09-3 [15,3kB]

Hole:2 http://de.archive.ubuntu.com/ubuntu/ maverick/main libxml-sax-perl all 0.96+dfsg-2 [85,5kB]

Hole:3 http://de.archive.ubuntu.com/ubuntu/ maverick/main libxml-libxml-perl amd64 1.70.ds-1 [420kB]

Hole:4 http://de.archive.ubuntu.com/ubuntu/ maverick/main libxml-sax-expat-perl all 0.40-1 [12,5kB]

533kB wurden in 1 s heruntergeladen (386kB/s)

Wähle vormals abgewähltes Paket libxml-namespacesupport-perl.

(Lese Datenbank ... 53031 Dateien und Verzeichnisse sind derzeit installiert.)

Entpacke libxml-namespacesupport-perl (aus .../libxml-namespacesupport-perl_1.09-3_all.deb) ...

Wähle vormals abgewähltes Paket libxml-sax-perl.

Entpacke libxml-sax-perl (aus .../libxml-sax-perl_0.96+dfsg-2_all.deb) ...

Wähle vormals abgewähltes Paket libxml-libxml-perl.

Entpacke libxml-libxml-perl (aus .../libxml-libxml-perl_1.70.ds-1_amd64.deb) ...

Wähle vormals abgewähltes Paket libxml-sax-expat-perl.

Entpacke libxml-sax-expat-perl (aus .../libxml-sax-expat-perl_0.40-1_all.deb) ...

Verarbeite Trigger für man-db ...

Richte libxml-namespacesupport-perl ein (1.09-3) ...

Richte libxml-sax-perl ein (0.96+dfsg-2) ...

update-perl-sax-parsers: Registering Perl SAX parser XML::SAX::PurePerl with priority 10...

update-perl-sax-parsers: Updating overall Perl SAX parser modules info file...

 

Creating config file /etc/perl/XML/SAX/ParserDetails.ini with new version

Richte libxml-libxml-perl ein (1.70.ds-1) ...

update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX::Parser with priority 50...

update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX with priority 50...

update-perl-sax-parsers: Updating overall Perl SAX parser modules info file...

Replacing config file /etc/perl/XML/SAX/ParserDetails.ini with new version

Richte libxml-sax-expat-perl ein (0.40-1) ...

update-perl-sax-parsers: Registering Perl SAX parser XML::SAX::Expat with priority 50...

update-perl-sax-parsers: Updating overall Perl SAX parser modules info file...

Replacing config file /etc/perl/XML/SAX/ParserDetails.ini with new version

 

zabbix@cca-zabbix-1:~/vmware-vsphere-cli-distrib$

zabbix@cca-zabbix-1:~/vmware-vsphere-cli-distrib$ sudo aptitude install libperldoc-search-perl

Die folgenden NEUEN Pakete werden zusätzlich installiert:

  libappconfig-perl{a} libbit-vector-perl{a} libcarp-clan-perl{a} libdate-calc-perl{a} liblog-log4perl-perl{a}

  libmime-types-perl{a} libperldoc-search-perl libshell-posix-select-perl{a} libswish-api-common-perl{a}

  libsysadm-install-perl{a} libtemplate-perl{a} swish-e{a}

0 Pakete aktualisiert, 12 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.

Muss 2.759kB an Archiven herunterladen. Nach dem Entpacken werden 8.684kB zusätzlich belegt sein.

Wollen Sie fortsetzen? [Y/n/?] Y

Hole:1 http://de.archive.ubuntu.com/ubuntu/ maverick/main libappconfig-perl all 1.56-2 [88,5kB]

Hole:2 http://de.archive.ubuntu.com/ubuntu/ maverick/main libcarp-clan-perl all 6.02-1 [13,2kB]

Hole:3 http://de.archive.ubuntu.com/ubuntu/ maverick/main libbit-vector-perl amd64 7.1-1 [178kB]

Hole:4 http://de.archive.ubuntu.com/ubuntu/ maverick/universe libdate-calc-perl amd64 6.0-2 [275kB]

Hole:5 http://de.archive.ubuntu.com/ubuntu/ maverick/main liblog-log4perl-perl all 1.29-1ubuntu1 [441kB]

Hole:6 http://de.archive.ubuntu.com/ubuntu/ maverick/main libmime-types-perl all 1.30-1 [33,9kB]

Hole:7 http://de.archive.ubuntu.com/ubuntu/ maverick/universe swish-e amd64 2.4.7-1 [966kB]

Hole:8 http://de.archive.ubuntu.com/ubuntu/ maverick/universe libsysadm-install-perl all 0.35-1 [26,6kB]

Hole:9 http://de.archive.ubuntu.com/ubuntu/ maverick/universe libswish-api-common-perl all 0.03-2 [10,2kB]

Hole:10 http://de.archive.ubuntu.com/ubuntu/ maverick/universe libshell-posix-select-perl all 0.05-1.2 [46,8kB]

Hole:11 http://de.archive.ubuntu.com/ubuntu/ maverick/universe libperldoc-search-perl all 0.01-2 [11,9kB]

Hole:12 http://de.archive.ubuntu.com/ubuntu/ maverick/main libtemplate-perl amd64 2.22-0.1 [668kB]

2.759kB wurden in 5 s heruntergeladen (465kB/s)

Vorkonfiguration der Pakete ...

Wähle vormals abgewähltes Paket libappconfig-perl.

(Lese Datenbank ... 53217 Dateien und Verzeichnisse sind derzeit installiert.)

Entpacke libappconfig-perl (aus .../libappconfig-perl_1.56-2_all.deb) ...

Wähle vormals abgewähltes Paket libcarp-clan-perl.

Entpacke libcarp-clan-perl (aus .../libcarp-clan-perl_6.02-1_all.deb) ...

Wähle vormals abgewähltes Paket libbit-vector-perl.

Entpacke libbit-vector-perl (aus .../libbit-vector-perl_7.1-1_amd64.deb) ...

Wähle vormals abgewähltes Paket libdate-calc-perl.

Entpacke libdate-calc-perl (aus .../libdate-calc-perl_6.0-2_amd64.deb) ...

Wähle vormals abgewähltes Paket liblog-log4perl-perl.

Entpacke liblog-log4perl-perl (aus .../liblog-log4perl-perl_1.29-1ubuntu1_all.deb) ...

Wähle vormals abgewähltes Paket libmime-types-perl.

Entpacke libmime-types-perl (aus .../libmime-types-perl_1.30-1_all.deb) ...

 

 

 

 

Wähle vormals abgewähltes Paket swish-e.

Entpacke swish-e (aus .../swish-e_2.4.7-1_amd64.deb) ...

Wähle vormals abgewähltes Paket libsysadm-install-perl.

Entpacke libsysadm-install-perl (aus .../libsysadm-install-perl_0.35-1_all.deb) ...

Wähle vormals abgewähltes Paket libswish-api-common-perl.

Entpacke libswish-api-common-perl (aus .../libswish-api-common-perl_0.03-2_all.deb) ...

Wähle vormals abgewähltes Paket libshell-posix-select-perl.

Entpacke libshell-posix-select-perl (aus .../libshell-posix-select-perl_0.05-1.2_all.deb) ...

Wähle vormals abgewähltes Paket libperldoc-search-perl.

Entpacke libperldoc-search-perl (aus .../libperldoc-search-perl_0.01-2_all.deb) ...

Wähle vormals abgewähltes Paket libtemplate-perl.

Entpacke libtemplate-perl (aus .../libtemplate-perl_2.22-0.1_amd64.deb) ...

Verarbeite Trigger für man-db ...

Richte libappconfig-perl ein (1.56-2) ...

Richte libcarp-clan-perl ein (6.02-1) ...

Richte libbit-vector-perl ein (7.1-1) ...

Richte libdate-calc-perl ein (6.0-2) ...

Richte liblog-log4perl-perl ein (1.29-1ubuntu1) ...

Richte libmime-types-perl ein (1.30-1) ...

Richte swish-e ein (2.4.7-1) ...

Richte libsysadm-install-perl ein (0.35-1) ...

Richte libswish-api-common-perl ein (0.03-2) ...

Richte libshell-posix-select-perl ein (0.05-1.2) ...

Richte libperldoc-search-perl ein (0.01-2) ...

Richte libtemplate-perl ein (2.22-0.1) ...

Verarbeite Trigger für libc-bin ...

ldconfig deferred processing now taking place

zabbix@cca-zabbix-1:~$ sudo aptitude install libclass-methodmaker-perl

zabbix@cca-zabbix-1:~$ sudo aptitude install libcrypt-ssleay-perl

 

zabbix@cca-zabbix-1:~$ sudo aptitude install uuid-dev

 

zabbix@cca-zabbix-1:~$ sudo cpan UUID

 

zabbix@cca-zabbix-1:~$ sudo cpan WSMan::StubOps

 

zabbix@cca-zabbix-1:~$ tar -zxvf VMware-vSphere-Perl-SDK-5.0.0-615831.x86_64.tar.gz

zabbix@cca-zabbix-1:~/ vmware-vsphere-cli-distrib$ sudo ./vmware-install.pl

….

Do you accept? (yes/no) yes

 

Thank you.

 

Thank you.

 

http_proxy not set. please set environment variable 'http_proxy' e.g. export

http_proxy=http://myproxy.mydomain.com:0000 .

 

ftp_proxy not set. please set environment variable 'ftp_proxy' e.g. export

ftp_proxy=http://myproxy.mydomain.com:0000 .

 

Please wait while configuring CPAN ...

 

Please wait while configuring perl modules using CPAN ...

 

CPAN is downloading and installing pre-requisite Perl module "Archive::Zip" .

 

CPAN is downloading and installing pre-requisite Perl module "UUID" .

 

CPAN is downloading and installing pre-requisite Perl module "Data::Dump" .

 

CPAN is downloading and installing pre-requisite Perl module "SOAP::Lite" .

 

In which directory do you want to install the executable files?

[/usr/bin]

 

Please wait while copying vSphere CLI files...

 

The installation of vSphere CLI 5.0.0 build-615831 for Linux completed

successfully. You can decide to remove this software from your system at any

time by invoking the following command:

"/usr/bin/vmware-uninstall-vSphere-CLI.pl".

 

This installer has successfully installed both vSphere CLI and the vSphere SDK

for Perl.

 

The following Perl modules were found on the system but may be too old to work

with vSphere CLI:

 

Compress::Zlib 2.037 or newer

Compress::Raw::Zlib 2.037 or newer

version 0.78 or newer

IO::Compress::Base 2.037 or newer

IO::Compress::Zlib::Constants 2.037 or newer

UUID 0.03 or newer

LWP::Protocol::https 5.805 or newer

 

Enjoy,

 

--the VMware team

 

Fehler bei Installation „./vmware-install.pl“ kommt Meldung „libxml-libxml-perl …not installed…“

 

libxml-libxml-perl package is not installed on the system. libxml-libxml-perl

package must be installed for use by vSphere CLI:

 

Behebung:

Sie müssen vorher die notwendinge Perl Module installieren. Hier mus das Paket
„libxml-libxml-perl“ installiert werden:
sudo aptitude install libxml-libxml-perl

Fehler bei Installation „./vmware-install.pl“ kommt Meldung „Please install Perldoc“

 

Thank you.

 

warning: vSphere CLI requires Perldoc.

Please install perldoc.

 

http_proxy not set. please set environment variable 'http_proxy' e.g. export

http_proxy=http://myproxy.mydomain.com:0000 .

 

ftp_proxy not set. please set environment variable 'ftp_proxy' e.g. export

ftp_proxy=http://myproxy.mydomain.com:0000 .

 

zabbix@cca-zabbix-1:~/vmware-vsphere-cli-distrib$

 

Behebung:

Ubuntu 10.10 comes with Perl 5.10.1 pre-installed, but strangely enough perldoc isn't part of the package. Zur Installation von Perldoc (perl-doc) geben Sie folgendes ein:

zabbix@cca-zabbix-1:~$ sudo aptitude install perl-doc

 

Fehler die Installation bringt keinen Fehler aber die vSphere Scripte werden nicht installiert

 

Der Installationsvorgang zeigt nicht nichts an, aber es scheint nicht installiert zu werden. Die Skripte sind nicht auf  „/usr/bin/“, „/usr/lib/“ und „/usr/share/“ wie es normalerweise sein sollte.

 

rev10.24.08

Do you accept? (yes/no) yes

Thank you.

http_proxy not set. please set environment variable 'http_proxy' e.g. export

http_proxy=http://myproxy.mydomain.com:0000 .

..

ftp_proxy not set. please set environment variable 'ftp_proxy' e.g. export

ftp_proxy=http://myproxy.mydomain.com:0000 .

root@ubuntuserver:~# find / -name viversion.pl

/home/zabbix/vmware-vsphere-cli-distrib/apps/general/viversion.pl

 

Nach dem „find“ wird nur das Verzeichnis „/home/zabbix/vmware-vsphere-cli-distrib/“ ausgegeben, welches das Installationsverzeichnis ist.

 

Behebung:

Zur Lösung diese Problems gibt es je nachdem zwei Ansätze:
1. Manuelle Installation der CPAN-Pakete wie hier angeführt - http://pubs.vmware.com/vsphere-50/index.jsp?topic=/com.vmware.perlsdk.install.doc_50/viperl_install_sourcecode.4.2.html


2. Wenn Sie einen direkten Internetzugang haben, können Sie den Proxy-Check deaktivieren, durch Auskommentieren von ein paar Zeilen.  Das sollten Sie aber nur durchführen, wenn Sie die Voraussetzungen für die Installation, in der Dokumentation beschrieben, erfüllt haben - http://pubs.vmware.com/vsphere-50/index.jsp?topic=/com.vmware.vcli.getstart.doc_50/cli_install.4.5.html&path=1_0_1_3_1


Nun müssen wir nur noch ein paar Zeilen in der Date „vmware-install.pl“ auskommentieren, um nicht über den Installationsprozess zu beenden. Der oben angeführte Dateiname ist nur ein symbolischer Link auf die Datei „bin/vmware-uninstall-VSphere-CLI.pl“. Öffnen sie zum Bearbeiten gleich diese Datei mit dem „vi“ und ändern Sie die Zeilen von 5551 bis 5554 wie unten angeführt:

 

5551 #if ( !( $ftpproxy && $httpproxy)) {
5552 # uninstall_file($gInstallerMainDB);
5553 # exit 1;
5554 #}

 

Hinweis  Unter „vi“ können Sie die Zeilennummern im Commando-Modus ,it „set number“ einschalten.

 

Assuming you went through pre-reqs from #1 or #2, you should now be able to proceed with the installation. If you have direct internet access, you should see installer go out t CPAN to pull down the packages, if you don't, then it should confirm that you satisify the requirements in #1.

 

Fehler bei „sudo ./vmware-install.pl“ kommt „CPAN not able to install…“ mit „UUID“

 

CPAN not able to install following Perl modules on the system. These must be

installed manually for use by vSphere CLI:

 

UUID 0.03 or newer

 

Behebung:

Installiere sie das Perl Modul „UUID“ über CPAN:

sudo cpan UUID

 

Anmerkung:  Voher sollte schon das Modul „uuid.dev“ installiert sein.

 

Fehler beim Ausführen „sudo cpan UUID“

UUID.xs:5: fatal error: uuid/uuid.h: Datei oder Verzeichnis nicht gefunden

compilation terminated.

make: *** [UUID.o] Fehler 1

  BRAAM/UUID-0.02.tar.gz

  /usr/bin/make -- NOT OK

Warning (usually harmless): 'YAML' not installed, will not store persistent state

Running make test

  Can't test without successful make

Running make install

  Make had returned bad status, install seems impossible

 

Behebung:

Installieren Sie das Paket „sudo aptitude install uuid-dev“ und führen Sie danach nochmals den Befehl „sudo cpan UUID“ aus.

 

Wenn die Installation klappt sollte folgendes zu sehen sein:

 

1..5

ok 1

ok 2

ok 3

ok 4

ok 5

  BRAAM/UUID-0.02.tar.gz

  /usr/bin/make test -- OK

Warning (usually harmless): 'YAML' not installed, will not store persistent state

Running make install

Prepending /home/zabbix/.cpan/build/UUID-0.02-T15jmq/blib/arch /home/zabbix/.cpan/build/UUID-0.02-T15jmq/blib/lib to PERL5LIB for 'install'

Files found in blib/arch: installing files in blib/lib into architecture dependent library tree

Installing /usr/local/lib/perl/5.10.1/auto/UUID/UUID.bs

Installing /usr/local/lib/perl/5.10.1/auto/UUID/UUID.so

Installing /usr/local/lib/perl/5.10.1/UUID.pm

Installing /usr/local/man/man3/UUID.3pm

Appending installation info to /usr/local/lib/perl/5.10.1/perllocal.pod

  BRAAM/UUID-0.02.tar.gz

  /usr/bin/make install  -- OK

Warning (usually harmless): 'YAML' not installed, will not store persistent state

 

Erklärungen zum Hardware Monitoring


Hardware monitoring
WBEM wbemcli
http://sourceforge.net/apps/mediawik...?title=Wbemcli


Installieren des Paketeswbemclidurchführen.


Used TCP ports:
WBEM https (TCP 5989)
VMware Infrastructure (VI) Perl Toolkit https (TCP 443)

Folgende Änderung in „/etc/zabbix/zabbix_server.conf“ durchführen

 


Timeout=30


Folgende Änderung in „/etc/zabbix/zabbix_agentd.conf“ durchführen:

 

Timeout=30

### VMWare WBEM Monitoring
UserParameter=WBEM[*],/etc/zabbix/zabbix_wbem_vmware.pl $1 $2 $3
UserParameter=NumericSensor[*],egrep -i "SMX_NumericSensor_$2:" /tmp/vmware_$1.txt|sed 's/.*\t//'
UserParameter=Temperature[*],egrep -i "Temperature_$2:" /tmp/vmware_$1.txt|sed 's/.*\t//'
UserParameter=Power_Supply[*],egrep -i "Power_Supply_$2:" /tmp/vmware_$1.txt|sed 's/.*\t//'
UserParameter=Fan[*],egrep -i "Fan_$2:" /tmp/vmware_$1.txt|sed 's/.*\t//'
UserParameter=Proc[*],egrep -i "Proc_$2:" /tmp/vmware_$1.txt|sed 's/.*\t//'
UserParameter=Array[*],egrep -i "Array_$2:" /tmp/vmware_$1.txt|sed 's/.*\t//'
UserParameter=System_Memory[*],egrep -i "System_Memory:" /tmp/vmware_$1.txt|sed 's/.*\t//'
### End VMWare WBEM Monitoring
### VMWare Perl API Monitoring
UserParameter=API[*],/etc/zabbix/zabbix_perl_api_vmware.pl $1 $2 $3
UserParameter=Volume.Capacity[*],egrep -i "Volume.Capacity_$2:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'
UserParameter=Volume.Free[*],egrep -i "Volume.Free_$2:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'

UserParameter=CpuTotal[*],egrep -i "CpuTotal:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'
UserParameter=CpuUsed[*],egrep -i "CpuUsed:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'
UserParameter=MemSize[*],egrep -i "MemSize:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'
UserParameter=MemUsage[*],egrep -i "MemUsage:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'
UserParameter=MaintenanceMode[*],egrep -i "MaintenanceMode:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'
UserParameter=MEM[*],egrep -i "MEM_$2:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'
UserParameter=Array_stat[*],egrep -i "Array_$2.$3:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'
UserParameter=NET[*],egrep -i "vmnic$2.$3:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'
UserParameter=Uptime[*],egrep -i "Uptime:" /tmp/vmware_api_$1.txt|sed 's/.*\t//'
### End VMWare Perl API Monitoring


Für das Monitoring der Hardware wird folgendes Skript verwendet:
„/etc/zabbix/zabbix_wbem_vmware.pl <IP> <password> <username>“

Für das Monitoring der Software wird folgendes Skript:
„/etc/zabbix/zabbix_perl_api_vmware.pl <IP> <password> <username>“

Wobei die Paramter wie folgt zu füllen sind:
<IP> – Die IP-Adresse des ESXi Hypervisors
<password> – Das Passwort des ESXi Hypervisors
<username> - Der Benutzername de ESXi hypervisors

Testen der Skripte mit:

zabbix@cca-zabbix-1:/$ ./etc/zabbix/zabbix_perl_api_vmware.pl

1

 

Wenn der Rückgabewert des Skriptes „1“ ist, so wurde das Skript richtig ausgeführt.


Wenn die oben angeführten Skripte dann ausgeführt werden, so werden die ermittelten Daten in folgende Dateien geschrieben:
- für WBEM in die Datei/tmp/vmware_IP.txt
-
für VMware Infrastructure (VI) Perl Toolkit in die Datei/tmp/vmware_api_IP.txt

Das Datenformat ist dabei immer:
Key: Data

Beispiel einer Datendatei:

 

cat /tmp/vmware_172.16.38.103.txt
SMX_NumericSensor_18: 2
Temperature_5: 34
Temperature_19: 42
SMX_NumericSensor_27: 2
Power_Supply_2: 2
Temperature_6: 51
Temperature_20: 48
SMX_NumericSensor_1: 2
Temperature_18: 42
Temperature_9: 37
SMX_NumericSensor_0: 2
Proc_1: 2


Power_Supply[172.16.38.103,1] – status 1-st Power_Supply on ESXi HyperVisor 172.16.38.103
/usr/local/bin/zabbix_get -s localhost -k Power_Supply[172.16.38.103,1]
Proc[172.16.38.103,2] - status 2-nd Processor on ESXi HyperVisor 172.16.38.103
/usr/local/bin/zabbix_get -s localhost -k Proc[172.16.38.103,2]

Im importierten Zabbix Template „Template_VMWare_HP_DL360_G6“ sind folgende „Macros“ angelegt:
{$HOST}Die IP-Adresse des ESXi Hypervisors (ist immer „127.0.0.1“)
{$PASSWORD}Das Passwort des ESXi Hypervisors
{$USERNAME}
Der Username des ESXi Hypervisors


WICHTIG  In Zabbix HOST ist IP-Addresse = 127.0.0.1 fürr ALLE ESXi Hypervisors

Um die Funktion von WBEM und des Perl-Toolkits zu testen führen Sie folgende Befehle aus:
WBEM:
/usr/bin/wbemcli ei -noverify "https://root:Password@<10.0.0.1>/root/hpq:SMX_FAN"

VMware Infrastructure (VI) Perl Toolkit:
/usr/lib/vmware-viperl/apps/performance/viperformance.pl --host vmware2 --server 172.16.38.103 --countertype net --samples 1 --instance "*" --username root --password XXXXXX

Änderung in der Zabbix Console:
Administration“ -> „General“ -> „Value Mappingfor Items "Perl API client status" and "WBEM client status".

Folgende „Value Mappings“ anlegen:

 

0 OK

1 VMWare client error

2 Status file write error

3 bad username or password

4 Can't connect to ESXi

5 Can't get data from ESXi

 

 

2)Template for ESXi4.1 is added
3) add -i option for egrep in /etc/zabbix/zabbix_agentd.conf

16.11.2010 new XML Template
P.S. On other versions ESXi the name of variables can be others. Fix names in Template Template_VMWare_HP_DL360_G6.xml

Attached Files

 

Beschreibung: File Type: zip

ESXi4_VMware.zip (10.9 KB, 1261 views)

Beschreibung: File Type: zip

ESXi4_VMWare.2010.10.01.zip (17.2 KB, 539 views)

Beschreibung: File Type: zip

ESXi4_VMWare.2010.11.16.zip (17.5 KB, 1579 views)

 

Fehler beim Ausführen vom „zabbix_wbem_vmware.pl“ kommt „Defekter Interpreter“

zabbix@cca-zabbix-1:~$ /etc/zabbix/zabbix_wbem_vmware.pl

-bash: /etc/zabbix/zabbix_wbem_vmware.pl: /usr/bin/perl^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden

 

Behebung:

Dieser Fehler entsteht meist wenn die Skript Dateien in einen Editor bearbeitet werden welcher an das Ende einer zeile ein Return (\r)+Newline (\n) anhängt wie z.B. ein Windows Notepad. Die Perl Skripte erwarten aber nur ein „Newline“ (\n).

Führen Sie folgenden Befehl aus um die Return+Newline (\r\n) gegen nur Newline (\n):
perl -pi -e 's/\r\n?/\n/' zabbix_wbem_vmware.pl

 

Danach das Skript nochmals ausgeführt und siehe da, es kommt ein Rückgabewert „5“:

 

zabbix@cca-zabbix-1:/etc/zabbix$ /etc/zabbix/zabbix_wbem_vmware.pl

5

Fehler beim „wbemcli“ Test kommmt „CIM_ERR_INVALID_NAMESPACE“

zabbix@cca-zabbix-1:/etc/zabbix$ /usr/bin/wbemcli ei -noverify "https://root:Passwort@<10.0.0.1>/root/hpq:SMX_FAN"

*

* /usr/bin/wbemcli: Cim: (3) CIM_ERR_INVALID_NAMESPACE: Invalid namespace

*

 

Behebung:

Dieser Fehler tritt auf wenn Sie versuchen einen ESXi 5.0 Host mit

 

Fehler beim „wbemcli“ Test kommmt „Usage: wbemcli…“

zabbix@cca-zabbix-1:/etc/zabbix/externalscripts$ /usr/bin/wbemcli ei -noverify "https://root:Password@<10.0.0.1>/root/hpq:SMX_FAN"

Usage: wbemcli HOSTNAME [-u USER -p PASS] [-n NAMESPACE] [--no-ssl]

 

Behebung:

Dieser Fehler tritt auf wenn die Installation vom Paket „python-mywbem“ durchgeführt wurde. Nach Installation von diesem Paket ist der Syntax für die Abfrage eine anderer.

 

zabbix@cca-zabbix-1:/etc/zabbix/externalscripts$ /usr/bin/wbemcli <10.0.0.1> –u root –p Password –n /root/hpq:SMX_FAN

 

Abfragen vom Status bei ESXi 5.0 über Python

 

Zabbix ESX-Server per Common Information Model CIM ueberwachen

ESX CIM-API

ESX und ESXi-Server verfügen über ein Common Information Model API, welches es ermöglicht, den Systemstatus per HTTPS auszulesen.

Für ESXi-Server ist die CIM-API die einzige Möglichkeit, den Systemstatus aktiv abzufragen, da in der ESXi-Variante keine volle SNMP-Unterstützung zur Verfügung steht.

Über die CIM-API kann Zabbix all die Informationen auslesen, welche Sie auch über den vSphere-Client als Sensorstatus einsehen können. Der vSphere-Client und der Virtual Center Server nutzen ebenfalls die CIM-API.

Ob über die CIM-API alle Status-Informationen der Hardware exportiert werden, hängt von der Hardware und den in ESX integrierten CIM-Providern ab. Erst die passenden CIM-Provider ermöglichen dem ESX(i)-Server die Hardwareinformationen auszulesen und in einer einheitlichen Form darzustellen. Für die gängige und von VMWare zertifizierte Hardware sind schon viele CIM-Provider in den ESX(i)-Server integriert. Für einige Server oder Hardwarekomponenten müssen aber CIM-Provider nachinstalliert werden.

Beschreibung: Vsphere sensor status.png

 

CIM-API mit Zabbix abfragen

Python pywbem installieren

Damit Zabbix die CIM-API abfragen kann, muss ein externes Skript installiert werden. Wie Sie Zabbix mit externen Skripten erweitern erfahren Sie hier.

Für die Programmiersprache Python gibt es eine fertige Klassensammlung zum Abfragen von CIM-APIs per HTTP.

Nutzer von Debian 6 (Squezee) und Ubuntu können die benötigten Python-Bibliotheken über den Paketmanager installieren.

 

aptitude install python-pywbem

 

Nutzer anderer Distributionen laden die Bibliotheken von http://sourceforge.net/projects/pywbem/ herunter und installieren diese wie folgt

 

tar xzf pywbem-0.7.0.tar.gz
cd pywbem-0.7.0
python setup.py build
python setup.py install

 

User im ESX- oder ESXi-Server einrichten

Richten Sie über den vSphere-Client einen neuen User ein, mit dem sich Zabbix zum ESX-Server verbinden kann.

 

Der User muss der Gruppe root angehören.

Beschreibung: Esx1 user setup.png

Externes Skript installieren

Kopieren Sie nun nachfolgendes Skript in den Ordner, welchen Sie für die externen Skripte im Zabbix-Server konfiguriert haben. Nennen Sie die Datei z.B. „cim.esx

 

#!/usr/bin/python

# Script for checking global health of host running VMware ESX/ESXi

#

# Licence : GNU General Public Licence (GPL) http://www.gnu.org/

# Pre-req : pywbem

# Based on the Nagios-Check

# http://www.claudiokuenzler.com/ithowtos/nagios_check_esxi_wbem.php

# On Ubuntu and Debian Squezee use 'aptitude install python-pywbem'

# On other systems download it from http://sourceforge.net/projects/pywbem/

# unpack and then try 'python setup.py build' and 'python setup.py install'

 

# define the user and password to use for the connection

user     = 'zabbix'

password = 'secrete'

 

import sys

import pywbem

import re

 

# define classes to check 'OperationStatus' instance

ClassesToCheck = [

                'OMC_SMASHFirmwareIdentity',

                'CIM_Chassis',

                'CIM_Card',

                'CIM_ComputerSystem',

                'CIM_NumericSensor',

                'CIM_Memory',

                'CIM_Processor',

                'CIM_RecordLog',

                'OMC_DiscreteSensor',

                'OMC_Fan',

                'OMC_PowerSupply',

                'VMware_StorageExtent',

                'VMware_Controller',

                'VMware_StorageVolume',

                'VMware_Battery',

                'VMware_SASSATAPort'

]

 

def verboseoutput(message) :

                if len(sys.argv) > 3 and sys.argv[3] == "verbose" :

                               print message

 

# connection to host

verboseoutput("Connection to "+sys.argv[1])

wbemclient = pywbem.WBEMConnection("https://"+sys.argv[1], (user, password), 'root/cimv2')

output = ""

for classe in ClassesToCheck :

                try:

                               instance_list = wbemclient.EnumerateInstances(classe)

                except pywbem.cim_operations.CIMError,args:

                               verboseoutput("Unknown CIM Error: %s" % args)

                except pywbem.cim_http.AuthError,arg:

                               verboseoutput("GLobal exit set to CRITICAL")

                else:      

                               for instance in instance_list :

                                               elementName = instance['ElementName']

                                               if instance['HealthState'] is not None:

                                                               elementStatus = instance['HealthState']

                                                               if sys.argv[2] != "ShowInventory" and re.search(sys.argv[2], elementName):

                                                                              verboseoutput(elementName+": HealthState = %d" % elementStatus)

                                                                              output += "%s " % elementStatus

                                                               elif sys.argv[2] == "ShowInventory":

                                                                              verboseoutput(elementName+": HealthState = %d" % elementStatus)

print output.replace(' ','')

 

Geben Sie im Skript einen User und ein Passwort an, welchen Sie vorher per vSphere-Client auf dem ESX-Server eingerichtet haben.

 

WICHTIG  Leider können nur Benutzer der Gruppe root den Sensor-Status auslesen. Wählen Sie also ein sicheres Passwort und achten Sie darauf, dass nicht alle Nutzer Ihres Monitoringservers das Passwort aus dem externen Skript auslesen können.

 

Machen Sie das Skript ausführbar und testen Sie es auf der Kommandozeile

chmod +x cim.esx
./cim.esx <IP_OR_HOSTNAME> ShowInventory verbose

 

Sie sollten nun sehen, welche Informationen per CIM ausgelesen werden können. Die Ausgabe könnte ungefähr so aussehen:

 

System Board 7:1: HealthState = 0

Add-in Card 11:1: HealthState = 0

Hardware Management Controller (Node 0): HealthState = 0

Processor 2 CPU 2 PECI tics: HealthState = 5

Processor 1 CPU 1 PECI tics: HealthState = 5

System Board 1 SEL Fullness: HealthState = 5

System Board 1 Planar 3.3V: HealthState = 5

System Board 1 Planar VBAT: HealthState = 5

System Board 1 Planar 12V: HealthState = 5

System Board 1 Planar 5V: HealthState = 5

Fan Device 10 Fan 10 Tach: HealthState = 5

Fan Device 9 Fan 9 Tach: HealthState = 5

Fan Device 8 Fan 8 Tach: HealthState = 5

Fan Device 7 Fan 7 Tach: HealthState = 5

Fan Device 6 Fan 6 Tach: HealthState = 5

Fan Device 5 Fan 5 Tach: HealthState = 5

Fan Device 4 Fan 4 Tach: HealthState = 5

Fan Device 3 Fan 3 Tach: HealthState = 5

Fan Device 2 Fan 2 Tach: HealthState = 5

Fan Device 1 Fan 1 Tach: HealthState = 5

Power Distribution 1 AVG Power: HealthState = 5

Front Panel Board 1 Ambient Temp: HealthState = 5

CPU 1 Level-1 Cache: HealthState = 0

CPU 1 Level-2 Cache: HealthState = 0

CPU 2 Level-1 Cache: HealthState = 0

CPU 2 Level-2 Cache: HealthState = 0

CPU 1: HealthState = 5

CPU 2: HealthState = 5

IPMI SEL: HealthState = 5

Unspecified 1 Critical Int: Bus Uncorrectable error: HealthState = 5

Power Module (DC-to-DC) 2 VRM Status 0: Failure detected: HealthState = 5

Power Module (DC-to-DC) 2 VRM Status 0: Config Error: Vendor Mismatch: HealthState = 5

Power Module (DC-to-DC) 2 VRD Status 0: Failure detected: HealthState = 5

System Board 1 Watchdog 0: Timer expired: HealthState = 5

System Board 1 Watchdog 0: Hard reset: HealthState = 5

System Board 1 Watchdog 0: Power down: HealthState = 5

System Board 1 Watchdog 0: Power cycle: HealthState = 5

System Board 1 Sys pwr monitor 0: Power off/down: HealthState = 5

System Board 1 Sys pwr monitor 0: Power cycle: HealthState = 5

System Board 1 Sys pwr monitor 0: AC lost: HealthState = 5

Disk or Disk Bay 8 Drive 8 Status 0: Drive Fault: HealthState = 5

Disk or Disk Bay 7 Drive 7 Status 0: Drive Fault: HealthState = 5

Disk or Disk Bay 6 Drive 6 Status 0: Drive Fault: HealthState = 5

Disk or Disk Bay 5 Drive 5 Status 0: Drive Fault: HealthState = 5

Disk or Disk Bay 4 Drive 4 Status 0: Drive Fault: HealthState = 5

Disk or Disk Bay 3 Drive 3 Status 0: Drive Fault: HealthState = 5

Disk or Disk Bay 2 Drive 2 Status 0: Drive Fault: HealthState = 5

Disk or Disk Bay 1 Drive 1 Status 0: Drive Fault: HealthState = 5

Power Supply 1 PS 1 Status 0: Failure detected: HealthState = 5

Power Supply 1 PS 1 Status 0: Power Supply AC lost: HealthState = 5

System Chassis 1 NMI State 0: NMI/Diag Interrupt: HealthState = 5

System Chassis 1 NMI State 0: Bus Timeout: HealthState = 5

System Chassis 1 NMI State 0: Software NMI: HealthState = 5

Processor 2 CPU 2 Status 0: IERR: HealthState = 5

Processor 2 CPU 2 Status 0: Thermal Trip: HealthState = 5

Processor 2 CPU 2 Status 0: Configuration Error: HealthState = 5

BIOS 1 ABR Status 0: Unspecified: HealthState = 5

Processor 1 CPU 1 Status 0: IERR: HealthState = 5

Processor 1 CPU 1 Status 0: Thermal Trip: HealthState = 5

Power Supply 2 PS 2 Status 0: Failure detected: HealthState = 5

Power Supply 2 PS 2 Status 0: Power Supply AC lost: HealthState = 5

Fan 10 Tach: HealthState = 5

Fan 9 Tach: HealthState = 5

Fan 8 Tach: HealthState = 5

Fan 7 Tach: HealthState = 5

Fan 6 Tach: HealthState = 5

Fan 5 Tach: HealthState = 5

Fan 4 Tach: HealthState = 5

Fan 3 Tach: HealthState = 5

Fan 2 Tach: HealthState = 5

Fan 1 Tach: HealthState = 5

Power Supply 1: HealthState = 5

Power Supply 2: HealthState = 5

Power Module (DC-to-DC) 2: HealthState = 5

 

Den HealthState interpretieren

 

Die Nummern des HealthStates bedeuten

 

Nummer

Bewertung

Hinweis

0

OK

Unknown

5

OK

OK

10

Warning

Degraded

15

Warning

Minor

20

Critical

Major

25

Critical

Critical

30

Critical

Non-recoverable Error

 

Legen Sie das „Value Mapping“ in der Zabbix Console an:

„Administration“ -> „General“ -> „Value Mapping“ for Items "ESXi 5 HealthState".

Informationen gezielt abfragen und bündeln

 

Das Skript ist in der Lage Informationen zu filtern.

./cim.esx <IP_OR_HOSTNAME> "Disk or Disk Bay 5 Drive 5 Status 0" verbose
Disk or Disk Bay 5 Drive 5 Status 0: Drive Fault: HealthState = 5
5

 

liefert die Status von Festplatte 5 zurück.

Lassen Sie Option verbose weg, beschränkt sich die Ausgabe nur auf die Ziffer 5.

 
./cim.esx <IP_OR_HOSTNAME> Disk
55555555

 

liefert den HealthStatus alle Sensoren, die mit "Disk" beginnen. So können Sie den Status aller Festplatten ablesen.

 

Hinweis Rufen Sie das Skript mit dem vorangestellten Befehl time auf.

time ./cim.esx <IP_OR_HOSTNAME> ShowInventory verbose

Passen Sie ggf. den Timeout für externe Skripte in der zabbix_server.conf an.

Items einrichten

Wenn Sie auf der Kommandozeile erfolgreich die CIM-API Ihres ESX oder ESXi-Server abfragen konnten, richten Sie nun die Items im Zabbix-Server ein.

Richten Sie für einen Host oder ein Template nun Items vom Typ "External Check" ein. Als Item Key geben Sie den Namen des Skriptes an. Als Parameter geben Sie an, welchen Sensor oder welche Sensorgruppe Sie abfragen möchten. Z.B.

 

cim.esx[Disk]

 

Als "Type of Information" können Sie "Numeric unsigned" oder "Text" auswählen.

Beschreibung: Cim esx item1.png

Eine Standardsammlung an Items für die Überwachung von ESX und ESXi-Server könnte wie folgt aussehen.

Trigger einrichten

Wie Sie einen Trigger einrichten, hängt davon ab, wie detailliert Sie über die gemeldeten Fehler informiert werden wollen.

Eine einfache Regel könnte aber sein, dass ein Alarm ausgelöst wird, sobald in den abgelesen Werten andere Ziffern als 5 vorkommen.

Sie können also einen Trigger einrichten, der über einen regulären Ausdruck prüft, ob im Item-Wert andere Ziffern als 5 vorkommen.

Beschreibung: Cim esx trigger1.png

Beschreibung: Cim esx trigger2.png


Beschreibung: Cim esx trigger3.png

In den drei Screenshots sind Trigger zu sehen, die prüfen, ob der Itemwert mit 5 beginnt und nur Fünfen enthält. Wenn der reguläre Ausdruck gefunden wird, dann nimmt der Trigger den Wert 0 an, d.h. es wird kein Alarm ausgelöst.

 

Wird der reguläre Ausdruck nicht gefunden, nimmt der Tigger den Wert 1 an, d.h. es wird ein Alarm ausgelöst.

 

Testen Sie die eingerichteten Trigger, in dem Sie im cim.esx Script die letzte Zeile gegen folgende Zeilen austauschen

 

#print output.replace(' ','')
print "55550555",

 

Nun nehmen die Items immer den Wert 55550555 an, und der Tigger sollte einen Test-Alarm auslösen.

Links

·         VMWare CIM API: http://www.vmware.com/support/developer/cim-sdk/

·         CIM Provider HP: http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&cc=us&prodTypeId=3709945&prodSeriesId=3948609&prodNameId=3948610&swEnvOID=4040&swLang=13&mode=2&taskId=135&swItem=MTX-8758956156b94fc1a59e078961

·         Nagios Plugin welches ggf. auch für Zabbix genutzt werden kann. http://exchange.nagios.org/directory/Plugins/Operating-Systems/*-Virtual-Environments/VMWare/check_esx3/details

Beim Ausführen vom „./cim.esx..“ kommt „No Module named pywbem“

zabbix@cca-zabbix-1:/etc/zabbix/externalscripts$ ./cim.esx 10.254.222.213 ShowInventory verbose

Traceback (most recent call last):

  File "./cim.esx", line 17, in <module>

    import pywbem

ImportError: No module named pywbem

 

Behebung:

Kontrollieren Sie mit dem Befehl „sudo aptitude serach python-pywbem“ ob das Python „pywbem“ richtig installiert wurden. Beachten Sie bei der Installation ob dort ein Fehler mit „(broken pipe) getötet“ angezeigt wird, dann stimmt etwas bei der Installation nicht.

 

Fehler bei Installation von „python-pywbem“ kommt „Versuche, /usr/bin/wbemcli zu überschreiben…“

 

zabbix@cca-zabbix-1:~$ sudo aptitude install python-pywbem

dpkg: Fehler beim Bearbeiten von /var/cache/apt/archives/python-pywbem_0.7.0-4_all.deb (--unpack):

 Versuche, »/usr/bin/wbemcli« zu überschreiben, welches auch in Paket wbemcli 1.6.1-0ubuntu1 ist

Es wurde kein Apport-Bericht verfasst, da das Limit MaxReports bereits erreicht ist

                                                                                   dpkg-deb: Unterprozess einfügen mit Signal (Datenübergabe unterbrochen (broken pipe)) getötet

Verarbeite Trigger für man-db ...

Fehler traten auf beim Bearbeiten von:

 /var/cache/apt/archives/python-pywbem_0.7.0-4_all.deb

E: Sub-process /usr/bin/dpkg returned an error code (1)

Ein Paket konnte nicht installiert werden. Versuche zu lösen:

Richte python-pkg-resources ein (0.6.14-3ubuntu1) ...

 

Behebung:

Entfernen Sie das Paket „wbemcli“ bevor Sie die Installation von „python-pywbem“ ausführen mit: „sudo aptitude remove wbemcli“.


 

Praxisbeispiel für Elemente und Auslöser

Windows Server (Clients) Prüfungen

Windows Ereignisprotokoll (Event Logs) Abfragen

Folgende Key können zur Abfrage von Windows Ereignisprotokoll verwendet werden:

eventlog[Application]
eventlog[Security]
eventlog[System]
eventlog[and.all.the.other.eventlogs.that.may.be.availeble. on.your.system]

 

Im der Definition vom Element (Item) muss:

Type of information = „Log

 

Erklärung vom Internet:
Thank you cstackpole for your investigations. Based on this, here is an example (cookbook) for everybody also struggling around with eventlog:

-) the source is "W32Time"
-) the description contains "synchronisiert"
-) the trigger goes off after 30 seconds
-) the eventdetails should be reportet in the mail


1) Create an item
Type: ZABBIX agent (active)
Key: eventlog[System]
Type of information: Log

2) Create a trigger
({mypc:eventlog[System].logsource(W32Time)}=1)&({mypc:eventlog[System].str(synchronisiert)}=1)&({mypc:eventlog[System].nodata(30)}#1)
you can add "logseverity()" the same way


3) Create a action
Condition: Host = mypc; Trigger value = ON (when you only want one message)
Message: {mypc:eventlog[System].last(0)}

 

Praxisbeispiel: Überprüfung Backup Exec auf erfolgreiche Sicherung

Es gibt dafür zwei Ansätze (mit Zabbix Agenten):

1.    Überprüfung vom Windows Ereignisprotokoll (Eventlog) mit den Zabbix Agenten auf dem Backup Server.

2.    Überprüfung der Backup Exec Logdatei im Verzeichnis „c:\programme\symantec\Backup Exec\Data\BEX_FULL-BACKUP-1_01769.xml“. Wobei die Nummer in Dateinamen sich immer ändert.

Praxisbeispiel: Überprüfung Antivirus Definition Status

Suchen Sie dazu Informationen in Zabbix Forum.

Praxisbeispiel: Überprüfung Security Patches

Suchen Sie dazu Informationen in Zabbix Forum.

 

 


 

Anpassung vom Zabbix-Webfrontend

Eigene Firmenlogo hinter Zabbix Logo anzeigen

1.    Erstellen Sie das gewünschte Firmenlogo als PNG Datei in einer Größe bei welcher die maximale Höhe 31 Pixel beträgt. Als Namen vergeben Sie „company_logo.png“.

2.    Kopieren Sie das Logo auf den Pfad „/srv/www/htdocs/zabbix/images/general“.

3.    Fügen Sie folgende Zeile zu der unten angeführten Datei hinzu: „/srv/www/htdocs/zabbix/include/page_header.php“

                $logo = new CDiv(SPACE,'zabbix_logo');

                $logo->AddAction('onclick',"javascript: document.location = 'http://www.zabbix.com';");

 

//#BEGIN#:Add REALPOWERWORK Logo behind Zabbix

                $complogo = new CLink(new CDiv(SPACE,'company_logo'),"http://www.company.com");

                $complogo->SetTarget('_blank');

                $complogo = new CDiv(SPACE,'company_logo');

                $complogo->AddAction('onclick',"javascript: document.location = 'http://www.company.com';");

//#END#: Add REALPOWERWORK Logo behind Zabbix

 

                $td_r = new CCol($page_header_r_col, "page_header_r");

                $td_r->AddOption('width','100%');

                $top_page_row   = array(new CCol($logo, "page_header_l"), $td_r);

 

//#BEGIN#:Add REALPOWERWORK Logo behind Zabbix

                $top_page_row[1]  = array(new CCol($complogo, "page_header_r"), $td_r);

                unset($complogo);

//#END#: Add REALPOWERWORK Logo behind Zabbix

 

                unset($logo, $page_header_r_col, $help, $support);

 

4.    Fügen Sie folgende Zeile in der Datei hinzu „/srv/www/htdocs/zabbix/styles/div.css“ hinzu:

 

/********* DIV IMG *********/

div.zabbix_logo{

        height: 31px;

        width: 118px;

        background: #FFFFFF url('../images/general/zabbix.png') no-repeat;

        cursor: pointer;

}

 

div.company_logo{

        height: 31px;

        width: 118px;

        background: #FFFFFF url('../images/general/company_logo.png') no-repeat;

        cursor: pointer;

}

 

div.iconminus{

 

5.    Nach Neuladen der Zabbix Site sollte das Firmenlogo hinter dem Zabbix Logo angezeigt werden.

 


 

Einrichtung von dynamischen PDF Reports in Zabbix

 

Es gibt mehrere Projekt welche sich mit der Erstellung von Reports in Zabbix beschäftigen.
Unter dem Zabbix Wiki findet man z.B. ein Add-On zur Erstellung von Grafiken:
http://zabbix.org/wiki/Get_Graph_Image_PHP

 

 

Die folgende Anleitung verwendet im Zabbix die dynamische PDF Reports Generierung. Mit der es möglich ist für einzelne oder alle Hosts einen PDF Report mit allen Grafiken zu erstellen.
Zur Installation dieser Funktionalität unter Zabbix gehen Sie wie folgt vor.

 

Voraussetzung für die Funktion sind die Pakete „php-curl“ und „php-json“.

 

1.    Download von folgender Website durchführen: http://www.zabbix.org/mw/images/e/e9/Zabbix_report_generation.zip

2.    Entpacken Sie die Datei ein ein neue Verzeichnis z.B. “zabbix_report_generation“.

3.    Legen Sie unter dem Hauptwebverzeichnis unter welchen zabbix läuft, z.B. „/var/www“ ein Unterverzeichnis „dynamic_reports“ an.

4.    Kopieren Sie allte Dateien und Verzeichnisse von „zabbix_report_generation“ in das neue Verzeichnis am Zabbix Server „/var/www/dynamic_reports“.

5.    Bearbeiten sie die Datei „config.inc.php“, welche sich im Verzeichnis „/var/www/dynamic_reports“ befindet:

 

<?php

//CONFIGURABLE

# zabbix server info(user must have API access)

$z_server       = 'http://zabbix.cancom.at/';

$z_user         = 'zabbix';

$z_pass         = 'PfdZU#18';

# tmp_images directory path

$z_img_path = '/var/www/dynamic_reports/tmp_images/';

# should be the tail of the URL

$pdf_location = $z_server ."dynamic_reports/pdf.php";

# paper settings

$paper_format = 'A4'; // formats supported: 4A0, 2A0, A0 -> A10, B0 -> B10, C0 -> C10, RA0 -> RA4, SRA0 -> SRA4, LETTER$

$paper_orientation = 'portrait'; // formats supported: portrait / landscape

# time zone

$timezone = 'Vienna/Europe';

 

//DO NOT CHANGE BELOW THIS LINE

$z_tmp_cookies  = "";

$z_url_index    = $z_server ."index.php";

$z_url_graph    = $z_server ."chart2.php";

$z_url_api              = $z_server ."api_jsonrpc.php";

$z_login_data   = "name=" .$z_user ."&password=" .$z_pass ."&enter=Enter";

$data = './data.txt';

?>

 

6.    Vergeben Sie folgende Berechtigungen:

sudo chown www-data:root /var/www/dynamic_reports/data.txt

sudo chown www-data:root /var/www/dynamic_reports/tmp_images

sudo chmod u+rw /var/www/dynamic_reports/data.txt

sudo chmod u+rw /var/www/dynamic_reports/tmp_images

 

7.    Login Sie sich in Zabbix ein. Gehen Sie auf „Cofiguration“ – „Screens“. Vergeben Sie einen Namen und stellenb Sie die Colums: „1“ und die Rows: „1“ ein.





8.    Erstellen Sie einen neue Screen mit folgenden Daten:
Ressource
: URL
mit dem URL http://zabbix.cancom.at/dynamic_reports/pdfform.php
Width: 800
Height: 600
Horizontal align: Centre
Vertical align: Top



9.    In der „php.ini“ Datei muss die Einstellung auf display_error = OFF stehen.

10.  Starten Sie den Apache Server neu mit sudo /etc/init.d/apache2 restart“.

 

Fehler auf der Website Screen kommt „Unable to login“

 

Unable to login: Array ( [code] => -32602 [message] => Invalid params. [data] => Login name or password is incorrect )

 

Behebung:

Sie müssen in die Datei „config.inc.php“ in Zeile „$z_user“ den Zabbix Benutzernamen und unter „$z_pass“ das Zugehörige Passwort für diesen Benutzer ein.

 

$z_user         = 'zabbix';

$z_pass         = 'password';

 

WICHTIG: Der Verwendete Zabbix Benutzer muss bei „API access“ ein „Enabled“ eingetragen haben.

Fehler nach klicken auf „Generate“ kommt „ERROR: Zabbix has received an incorrect request“

 

 

 

 

 

 


 

Allgemeine Fehler bei Zabbix

Fehler im Zabbix-Frontend

Fehler: Im Frontend „Lack of free swap space on ZABBIX Server“. Danach bleibt der Server komplett hängen und führt nach einiger Zeit einen Notrestart durch.

 

 

Im Zabbix Server Log steht (/var/log/zabbix/zabbix_server):

4311:20081016:154433 Failed to connect to database: Error: Lost connection to MySQL server during query [2013]

… 

4004:20081016:154505 One child process died. Exiting ...

4004:20081016:154510 ZABBIX Server stopped. ZABBIX 1.8.

 

oder mit „dmesg“ (/var/log/messages):

oom-killer: gfp_mask=0x201d2, order=0

 [<c014c81d>] out_of_memory+0x2d/0x14c

 [<c014dd91>] __alloc_pages+0x207/0x2c8

 [<c014f038>] __do_page_cache_readahead+0xcc/0x1f0

 [<c0148432>] delayacct_end+0x58/0x7a

 [<c0149841>] sync_page+0x0/0x3b

 [<c0148526>] __delayacct_blkio_end+0x37/0x3a

 [<c02a4c87>] __wait_on_bit_lock+0x4b/0x52

 [<c014983b>] __lock_page+0x5b/0x61

 [<c014beb4>] filemap_nopage+0x15c/0x320

 [<c0128aac>] do_timer+0x79c/0x8d2

 [<c0154a76>] __handle_mm_fault+0x2b7/0x871

 [<c02a6cdb>] do_page_fault+0x213/0x507

 [<c02a6ac8>] do_page_fault+0x0/0x507

 [<c0104fb9>] error_code+0x39/0x40

Mem-info:

DMA per-cpu:

cpu 0 hot: high 0, batch 1 used:0

cpu 0 cold: high 0, batch 1 used:0

cpu 1 hot: high 0, batch 1 used:0

cpu 1 cold: high 0, batch 1 used:0

DMA32 per-cpu: empty

Normal per-cpu:

cpu 0 hot: high 186, batch 31 used:166

cpu 0 cold: high 62, batch 15 used:10

cpu 1 hot: high 186, batch 31 used:142

cpu 1 cold: high 62, batch 15 used:47

HighMem per-cpu:

cpu 0 hot: high 42, batch 7 used:36

cpu 0 cold: high 14, batch 3 used:2

cpu 1 hot: high 42, batch 7 used:35

cpu 1 cold: high 14, batch 3 used:8

Free pages:       12152kB (124kB HighMem)

Active:120621 inactive:124026 dirty:0 writeback:0 unstable:0 free:3038 slab:3307 mapped:37 pagetables:1425

DMA free:4056kB min:68kB low:84kB high:100kB active:4464kB inactive:4216kB present:16384kB pages_scanned:9256 all_unreclaimable? yes

lowmem_reserve[]: 0 0 880 998

DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 880 998

Normal free:7972kB min:3756kB low:4692kB high:5632kB active:420480kB inactive:434380kB present:901120kB pages_scanned:385992 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 951

HighMem free:124kB min:128kB low:252kB high:380kB active:57540kB inactive:57508kB present:121792kB pages_scanned:132083 all_unreclaimable? yes

lowmem_reserve[]: 0 0 0 0

DMA: 0*4kB 1*8kB 1*16kB 0*32kB 1*64kB 1*128kB 1*256kB 1*512kB 1*1024kB 1*2048kB 0*4096kB = 4056kB

DMA32: empty

Normal: 105*4kB 14*8kB 5*16kB 0*32kB 7*64kB 4*128kB 1*256kB 0*512kB 0*1024kB 1*2048kB 1*4096kB = 7972kB

HighMem: 1*4kB 1*8kB 1*16kB 1*32kB 1*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 124kB

Swap cache: add 470244, delete 470244, find 135687/144506, race 0+33

Free swap  = 0kB

Total swap = 1542168kB

Free swap:            0kB

259824 pages of RAM

30448 pages of HIGHMEM

3120 reserved pages

3346 pages shared

0 pages swap cached

0 pages dirty

0 pages writeback

37 pages mapped

3307 pages slab

1425 pages pagetables

Out of Memory: Kill process 4004 (zabbix_server) score 280826 and children.

Out of memory: Killed process 4284 (zabbix_server).

 

Ursache: Lt. Foren glauben manche, das dies mit einer fehlerhaften Implementierung von SNMP zu tun hat. Dies muss aber noch überprüft werden.

 

 

Fehler: “Cannot connect to [xxx.xxx.xxx.xxx:10050] [Connection refused]” wird unter Konfiguration – Systeme im Frontend angezeigt.

 

 

Ursache:

Noch nicht festgestellt

 


Fehler: "Availabilitiy" wird “Unknow” im Frontend angezeigt obwohl Zabbix Agent auf Host installiert und gestartet ist.

 

 

Ursache:

Noch nicht festgestellt.

 

Fehler: “Cannot connect to [xxx.xxx.xxx: 10050] [Interrupted system call]” wird unter Konfiguration - Systeme im Frontend angezeigt.

 

 

Ursache: Am Zabbix Server mit dem Befehl „zabbix_get“ eine Abfrage des Agenten ausführen:

 

# zabbix_get –s<Hostname or IP-Address> -p10050 -k "system.uname”

Zabix_get [5405]: Timeout while executing operation.


Wahrscheinlich wird der Port “10050” durch eine Firewall blockiert, oder der Zabbix Agent wurde nicht gestartet.

 

Fehler: "Unable to get value for functionid"

 

21791:20081020:145419 Expression [{13811}>0] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [13811]]
21791:20081020:145419 Expression [{13991}>150000] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [13991]]
21791:20081020:145419 Expression [{14231}>0] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [14231]]
21791:20081020:145419 Expression [{14411}>150000] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [14411]]
21791:20081020:145419 Expression [{15886}>0] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [15886]]
21787:20081020:145421 Expression [{13812}>1000] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [13812]]
21787:20081020:145421 Expression [{13992}>0] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [13992]]
21787:20081020:145421 Expression [{14232}>100] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [14232]]
21788:20081020:145421 Expression [{13813}>100] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [13813]]
21787:20081020:145421 Expression [{14412}>150000] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [14412]]
21788:20081020:145421 Expression [{13993}>0] cannot be evaluated [Unable to get function value: function.lastvalue IS NULL for functionid [13993]]

 

Ursache:
Sie sollten folgendes in Ihrer MySQL Datenbank überprüfen um festzustellen ob die Objekt korrekt generiert wurden.

 

SLES10:~>mysql –u root –p

> select * from functions where functionid = 12493; [* to get itemid *]
> select * from items where itemid = "itemid-from-above";
> select * from hosts where hostid = "hostid-from-above";

Fehler im „/var/log/messages“ wird die Meldung „zabbix -- MARK –„ alle 20 Minuten angezeigt.

 

Jul 16 01:51:30 zabbix -- MARK --

 

Ursache: Diese Meldung zeigt keineswegs einen Fehler an. Sondern wird vom „syslog“ Dämon als sogenannt Statusmeldung ausgegeben damit man sieht das der Dämon noch läuft.

 

Fehler im Zabbix Frontend kommt „reset() expect parameter 1 to be array, null given [include/blocks.inc.php:908]“

 

 

Behebung

Nach schließen des Browsers und nochmaligen Login war diese Fehlermeldung verschwunden.

 

 


Grundlagen SNMP und WMIC

Verwendung von SNMP

Prüfung der SNMP Verfügbarkeit

 

Geben Sie folgenden Befehl ein um zu übprüfen ob das Gerät auf eine SNMP Anfrage antwortet.

 

$ snmpwalk –On –c public –v 1 <ip-address> | less

 

Sie sollten danach die Auflistung des erkannten SNMP Baumes sehen.

Fehler bei SNMP

Fehler: “Timeout while connecting to [dr-zentrale-wimmer:161]” wenn einem Drucker das Template “ Template_HP_LaserJet“ zugewiesen wird.

Ursache: Wenn dem Drucker das Template „Template_SNMPv2_Device“ zugewiesen wird, kann dir Verbindung hergestellt werden.

 

Fehler: “Error: OID not increasing: .1.3.6.1.2.1.7.5.1.2.10.254.222.224.123 >= .1.3.6.1.2.1.7.5.1.1.10.254.222.224.161”

Wenn Sie den Befehl “snmpwalk” ausführen wird die Liste der OIDs angezeigt, und danach stoppt die Liste plötzlich mit folgenden Error:
“Error: OID not increasing:…”


Aber wenn Sie den Befehl mit “snmpgetnext” ausführen erhalten Sie die komplette Liste:
$ snmpgetnext -v 2c -c public <ipaddress> 1.3.6.1.2.1.7.5.1.2.10.254.222.224.123
1.3.6.1.2.1.7.5.1.2.10.254.222.224.123 = Hex-STRING: 00 00 00 00 00 00

 

Abhilfe:
From the snmpwalk man page:
-Cc Do not check whether the returned OIDs are increasing. Some agents (LaserJets are an example) return OIDs out of order, but can complete the walk anyway. Other agents return OIDs that are out of order and can cause snmpwalk to loop indefinitely. By default, snmpwalk tries to detect this behavior and warns you when it hits an agent acting illegally. Use -Cc to turn off this behaviour.

 

Auf der „snmpwalk“ Manpage steht folgendes:
„-Cc“ Parameter damit nicht überprüft wird ob die zurückgegebenen OIDs steigen. Bei einigen Komponenten (wie z.B. bei HP LaserJets) werden OIDs in falscher Reihenfolgen zurückgegeben, trotzdem kann der Befehl „snmpwalk“ beendet werden. Bei wieder anderen Komponenten sind die zurückgegeben OIDs überhaupt außerhalb von definierten Werten, dies führt dazu, das Schleifen innerhalb des „snmpwalk“ Befehles gebildet werden. Standardmäßig versucht „snmpwalk“ dieses Verhalten zu erkennen und warnt Sie, wenn es einer Komponente zu falschen Rückgaben kommt. Benutzen Sie den Parameter „-Cc“, um dieses Verhalten zu deaktivieren.

 


 

Windows WMIC Management

Mit dem Windows Managment Programm „WMIC“ können Sie eine viehlzahl von Werten von einem Windows PC abrufen. Wenn Sie spezielle Abfragen für Windows Pc benötigen sollte Sie sich näher mit WMIC beschäftigen.

 

WMIC kann man entweder durch den Aufruf von "wmic" starten, wodurch man in den sog. interactiven Modus gelangt.

 

Beispiel:

wmic

wmic:root\cli>/node:rechner1

wmic:root\cli>service where startmode='disabled' get caption, state

 

zur ersten Zeile: WMIC wird gestartet. Dauert beim ersten mal etwas länger

zur zweiten Zeile: Verbindung zu einem RemoteRechner herstellen

zur dritten Zeile: Auflisten aller „disabled“ Services auf „rechner1“ mit Beschreibung und Status

 

Die andere Möglichkeit, die im Weiteren verwendet wird, ist die komplette Befehlseingabe.

 

Beispiel:

wmic qfe get * /format:htable >qfe.html

 

Dies listet alle installierten Hotfixe in einer HTML-Tabelle auf.

 

FriendlyNames, Classes, Properties, Methods

Will man mit WMI(C) arbeiten, so muss man die Classes selbst kennen, die die Informationen enthält, sowie deren Properties und Methoden.

Für eine Reihe von Classes existieren unter WMIC sogenannte "friendlyNames", deren Namen etwas kürzer und manchmal etwas aussagekräftiger ist, als der Classname.

 

Beispiel:

wmic ALIAS Get friendlyname, target

 

FriendlyName

Target

TapeDrive

Select * from Win32_TapeDrive

DataFile

Select * from CIM_DataFile

CDROM

Select * from Win32_CDROMDrive

NIC

Select * from Win32_NetworkAdapter

 

(gekürzter Auszug)

zu 1) liefert die Zuordnung Friendlyname – WMI-Classe

 

Beispiel:

wmic cdrom get * /value

wmic path win32_cdromdrive get * /value

 

zur 1. und 2. Zeile) identische Abfrage aller Properties (get *) des lokalen CDRom Laufwerkes mit Friendlyname bzw. WMI-Klassenname mit dem keyword "path"

 

Wie kommt man aber nun an die Informationen, welche Classes es gibt, welche Properties und Methods es gibt und welche Bedeutung diese haben? Die meisten und zuverlässigsten Informationen enthält das SDK der MSDN. Idealerweise hat man ein MSDN-Abo und kann sich das SDK lokal installieren.

Die Informationen sind aber auch online verfügbar:

Beschreibung: http://www.serverhowto.de/fileadmin/serverhowto_v2/images/link_ext2.gif http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_classes.asp

So findet man unter:

Beschreibung: http://www.serverhowto.de/fileadmin/serverhowto_v2/images/link_ext2.gif http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_service.asp?frame=true

...die Methoden und Eigenschaften der Classe win32_service

Beispiel:

SNMP-Service auf rechner1 auf disabled setzen:

 

wmic /Node:rechner1 Service where name='SNMP' Call ChangeStartMode Disabled

 

bzw.

 

wmic /Node:rechner1 path win32_Service where name='SNMP' Call ChangeStartMode Disabled

 

Beispiel:

IPAdresse und DNS Server von rechner1 abfragen:

wmic /node:rechner1 path win32_networkadapterconfiguration where "IPenabled='true'" get ipAddress,dnsserversearchorder

 


 

Zabbix unter VMWare als Zabbix-Proxy

Installation auf der Verwaltungsstation

Installation von Zabbix Server (siehe Anleitung).

 

Installation auf den Zabbix-Proxy Zielsystem

 

VMWare Player von:

http://www.vmware.com/de/products/player/

 

Zabbix als VMWare Paket (ca. 250MB):

http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/1.8.12/zabbix_x86.i686-1.8.12.vmx.tar.gz/download

 

Forward Port mit SSH über AutoSSH Anleitung:

http://www.linuxquestions.org/linux/answers/Networking/Forward_ports_via_an_SSH_tunnel_with_auto_reconnect_using_key_pair_authentication

 

AutoSSH mit MyEnTunnel für Windows:
http://nemesis2.qx.net/pages/MyEnTunnel

 

 

AutoSSH Tunnel am Linux Server erstellen:

su - zabbix -c 'AUTOSSH_DEBUG=1 autossh -M0 -q -f -N -i /zabbix/home/.ssh/id_dsa -L 20050:localhost:10050 zabbix@10.254.222.9'

 

 


 

Zabbix Appliance

 

Sie können Zabbix auch als „Appliance“ einsetzen auf der zabiix Homepage gibt es dazu die passenden Images. Alle Appliances basieren auf dem OpenSuSE Linux mit MySQL-Backend, die Zabbix-Software ist vorinstalliert und für einen störungsfreien Einsatz vorkonfiguriert.

In dem unten angeführten Beispiel wurde die Zabbix Appliance für „VMWare“ downgeladen und installiert.

Zabbix Appliance VMware

Nach dem Starten der Zabbix Appliance für VMware gibt es noch einige Konfigurationen oder Anpassungen durchzuführen.

Ändern Sie die Sprache und das Keyboard Layout nach iher Wahl in der Datei „linuxrc.config“, enter:
vi /etc/linuxrc.config“ (or any other editor)

 

Fügen Sie folgende Parameter in die Datei ein (drücken Sie dazu "i" um die Datei zu bearbeiten). Am Ende der Datei erstellen dann folgende Zeilen:
Language: de_DE
Keytable: de-lat1-nd

 

Benutzen Sie eine statische IP Adresse

Standardmäßig verwendet die Appliance DHCP, um eine IP-Adresse zu erhalten. Um eine statische IP-Adresse erhalten gehne Sie wie folgt vor:

To configure DNS, add nameserver entries in /etc/resolv.conf, specifying each nameserver on its own line: nameserver 192.168.1.2.

Als alternative können Sie auch das „YaST“ konfigurations utility verwenden um ein Update Ihrer netzwerkeinstellungen vorzunehmen.

Andere Änderungen

Zabbix configuration

Die folgenden Passworter werden standardmäßig in der Zabbix Appliance vergeben:

Passwords

System:

 

Datenbank (MySQL):

 

Zabbix Frontend:

 

Um das Datenbank und Benutzerkennwort zu ändern müssen Sie folgende Konfigurationen anpassen:

Datei Verzeichnisse

Die Konfigurationsdateien für Zabbix sind in „/etc/zabbix“.

Die Zabbix Log-Dateien werden in „/var/log/zabbix“ erstellt.

Das Home Verzeichnis für die Benutzer von Zabbix ist „/var/lib/zabbix“.

Änderungen in der Zabbix Konfiguration

Sicherung der Konfiguration

If you are running live CD version of the appliance or for some other reason can't have persistent storage, you can create a backup of whole database, including all configuration and gathered data.

To create the backup, run:

 

Wenn Sie die Live-CD-Version von Zabbix ausführen können Sie keine dauerhafte Speicherung der Konfiguration auf dem Gerät vornehmen. Sie können aber ein Backup der gesamten Datenbank, einschließlich aller Konfigurations- und gesammelten Daten ausführen.
So erstellen Sie das Backup laufen:

mysqldump zabbix | bzip2 -9 > dbdump.bz2
 

Nun können Sie die erzeugte Datei dbdump.bz2 auf einem anderen Rechner kopieren.

Um die Datenbank Weiderherzustellen führen Sie folgenden Befehl aus:

bzcat dbdump.bz2 | mysql zabbix

 

Stellen Sie sicher daer der Zabbix Server voher gestoppt wurde, bevor Sie die Rücksicherung starten.

Frontend Zugriff

Der Zugriff zum Frontend erfolgt standardmäßgi unter folgenden IP-Adressen:

 

Das Root (/) Verzeichnis wird am Webserver auf „/zabbix“ umgeleitet, das Frontend kann unter dem URL „http://<host> oder unter „http://<host>/zabbix aufgerufen werden.

 

This can be customised in /etc/apache2/conf.d/zabbix.conf. You have to restart webserver after modifying this file. To do so, log in using SSH as root user and execute:

Dies kann in der Datei „/etc/apache2/conf.d/zabbix.conf“ angepasst werden. Der Webserver muss nach derVeränderungen an dieser Datei neu gestartet werden. Dazu in SSH als Root-Benutzer anmelden und ausführen:

service apache2 restart

Firewall

Standardmäßig sind nur zwei Ports offen - 22 (SSH) und 80 (HTTP). Um zusätzliche Ports zu öffnen - zum Beispiel, Zabbix Server und Agents-Ports - ändern Sie die „iptables“-Regeln mit dem SuSEfirewall2 Dienstprogramm:

 

SuSEfirewall2 open EXT TCP zabbix-trapper zabbix-agent

 

Dann laden Sie die Firewall Regel neu:

SuSEfirewall2 stop
SuSEfirewall2 start

Monitoring capabilities

 

Zabbix wurde zur Unterstutzung von folgenden Programmen kompiliert:

·         SNMP;

·         IPMI;

·         Web monitoring;

·         SSH2;

·         IPv6.

In the provided configuration Zabbix server itself is monitored with the help of locally installed agent for some base parameters, additionally Zabbix frontend is monitored as well using web monitoring.

Note that web frontend monitoring logs in - this can add lots of entries to the audit log.

 

In der mitgelieferten Konfigurations des Zabbix-Server wird ein lokaler Agent installiert, welcher einige der wichtigsten Basisparameter überwacht, zusätzlich wird auch Zabbix-Frontend mit einem Web-Monitoring überwacht.

Beachten Sie, dass Web-Frontend Anmeldung überwacht wird - dies kann eine Menge von Einträgen in das Logprotokoll erzeugen.

 

Aufruf vom Zabbix Server und Agenten

 

Die Zabbix-Daemons haben ihre Namen von Standard mit Unterstrich „_“ zu dem SUSE-Richtlinien mit dem Bindestrich „-„ entsprechend geändert. Sie heißen:

In der gelichen Art un Weise, wurden auch die Konfigurationsdateien benannt:

Es werden einige Init-Skripte zur Verfügung gestellt, damit können Sie den Zabbix-Server, steuern. Verwenden Sie eine der folgenden Optionen:

service zabbix-server status
rczabbix-server status
/etc/init.d/zabbix-server status

Ersetzen Sie server mit agentd für Ihren Zabbix-Agent Daemon.

Vordefinierte Skripte

There is a scheduled script, run from the crontab every 10 minutes that restarts Zabbix server if it is not running, /var/lib/zabbix/bin. It logs timestamped problems and starting attempts at /var/log/zabbix/server_problems.log. This script is available since Zabbix Appliance version 1.8.3.

Make sure to disable this crontab entry if stopping of Zabbix server is desired.

 

Es ist ein Skript vorhanden welches geplant, aus dem „crontab“ alle 10 Minuten überprüft ob der  Zabbix-Server läuft, und dann wenn er nicht läuft den Befehl „/var/lib/zabbix/bin“ ausführt. Es werden die Probleme und Startversuche unter der Datei „/var/ log/zabbix/server_problems.log“ mitgelogt. Dieses Skript ist seit Zabbix Appliance Version 1.8.3 verfügbar.


Achten Sie darauf, dass Sie diesen „crontab“ Eintrag deaktivieren, wenn Zabbix-Server gewünscht Anhalten wollen.

 

Zabbix Appliance für Xen

Benützen Sie dies um den Xen Server zu starten:

xm create -c file-with-suffix.xenconfig

Sehen Sie dazu Informationen auf der Xen Homepage:

To use Xen images with Citrix Xenserver you might need to convert images with XenConvert utility, available from Citrix website.

Wenn Sie Xen-Images mit dem Citrix XenServer verwenden, müssen Sie möglicherweise die Images mit dem XenConvert (erhältlich auf der Citrix Website) umwandeln.

 

Übersiedlung der Zabbix Installation auf einen anderen Server

1.     Sicherung der mySQL Datenbank anfertigen:
user@zabbix-1:~$ sudo mysqldump –u root –p zabbix > zabbix_backup.sql
user@zabbix-1:~$ sudo mysqldump –u root –p openaudit > openaudit_backup.sql
user@zabbix-1:~$ sudo mysqldump –u root –p oav2 > oav2_backup.sql

2.     Alle Dateien dann über SFTP (Bitvise Tunnelier) auf ein lokalen Laufwerk sichern.

3.     Jetzt noch folgendes Verzeichnis über SFTP sichern:
- /var/www
à das komplette Verzeichnis mit allen Unterverzeichnissen.

4.     Jetzt werden noch alle wichtigen Konfigurationsdateien über SFTP gesichert:
- /etc/apache2
à das komplette Verzeichnis mit allen Unterverzeichnissen
- /etc/zabbix
àdas komplette Verzeichnis

 

 

 

Neuen Benutzer für Ubuntu anlegen

 

user@zabbix-1:~$ sudo useradd zabbix –G root –d /home/zabbix

user@zabbix-1:~$ sudo passwd zabbix

 

 

IP-Adresse der Netzwerkkarte ändern

 

user@zabbix-1:~$ sudo nano /etc/network/interfaces

auto eth0

iface eth0 inet static

            address 10.254.222.218

 

Danach die Netzwerkkomponenten neu starten mit „sudo /etc/init.d/networking restart