Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:icinga2_-_director

Dies ist eine alte Version des Dokuments!


Icinga2 - Director

Icinga ist eine vollständig auf Open-Source-Basis basierende, skalierbare und erweiterbare Monitoring-Lösung welche die Verfügbarkeit von definierten Ressource überprüft und über eine Benachrichtigungssystem verfügt.

Zur Einbindung von Icinga Director in Icinga, wird ein Modul namens

  • icingaweb2-module-director

benötigt.

Beschreibung Externer Link
Download https://github.com/Icinga/icingaweb2-module-director

Icinga Director ist eine grafische Möglichkeit die Konfiguration innerhalb von Icinga selbst durchzuführen. Hier werden durch die „restful API“ und über ein Web-Interface bzw. eine Web-Anwendung zur die Konfigurationsdateien verwaltet und auch auf die zu überwachenden Server übertragen.

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Voraussetzungen

Als Voraussetzung für die Installation von Icinga sind folgende Komponenten erforderlich:

Vorbereitung

:!: WICHTIG - Nachfolgende Installation zeigt den Umstieg von einer Datei basierten Konfiguration von Icinga auf eine Konfiguration durch den Icinga Director!!!

Bevor mit der Installation und auch des Icinga Director begonnen werden soll, soll hier die Konfiguration von Icinga komplett zurück auf en Ursprungszustand durchgeführt werden.

Dazu sind nachfolgende Schritte notwendig!

Icinga stoppen

Nachfolgender Befehl stoppt den Icinga-Dienst/Daemon:

 # systemctl stop icinga2.service

Datenlöschung

Anschließend sollen nachfolgende Verzeichisse mit nachfolgenden Befehlen geleert werden:

 # rm /var/lib/icinga2/* -f
 # rm /var/lib/icinga2/api/zones/* -rf
 # rm /var/lib/icinga2/api/repository/* -f
 # rm /var/lib/icinga2/api/packages/* -rf
 # rm /var/lib/icinga2/api/log/* -f
 # rm /var/lib/icinga2/repository/* -f
 # rm /var/lib/icinga2/ca/* -f

und

# rm /var/cache/icinga2/* -f

und entfernen die bereits erzeugten Zertifikate:

# rm /etc/icinga2/pki/* -f

Konfigurationssicherung

Mit nachfolgenden Befehl kann die bisher durchgeführte Konfiguration gesichert werden:

# tar czfv icinga2-config-backup.tar.gz /etc/icinga2 -C /root
...

/etc/icinga2/zones.conf

Nachfolgender Inhalt solltein der Konfigurationsdatei /etc/icinga2/zones.conf stehen, falls nicht kann dieser auf nachfolgenden Inhalt zurückgesetzt werden:

/*
 * Endpoint and Zone configuration for a cluster setup
 * This local example requires `NodeName` defined in
 * constants.conf.
 */
 
object Endpoint NodeName {
  host = NodeName
}
 
object Zone ZoneName {
  endpoints = [ NodeName ]
}
 
/*
 * Defines a global zone containing templates,
 * etc. synced to all nodes, if they accept
 * configuration. All remote nodes need
 * this zone configured too.
 */
 
/*
object Zone "global-templates" {
  global = true
}
*/
 
/*
 * Read the documentation on how to configure
 * a cluster setup with multiple zones.
 */
 
/*
object Endpoint "master.example.org" {
  host = "master.example.org"
}
 
object Endpoint "satellite.example.org" {
  host = "satellite.example.org"
}
 
object Zone "master" {
  endpoints = [ "master.example.org" ]
}
 
object Zone "satellite" {
  parent = "master"
  endpoints = [ "satellite.example.org" ]
}
*/

/etc/icinga2/constants.conf

Nachfolgender Inhalt solltein der Konfigurationsdatei /etc/icinga2/constants.conf stehen, falls nicht kann dieser auf nachfolgenden Inhalt zurückgesetzt werden:

/**
 * This file defines global constants which can be used in
 * the other configuration files.
 */
 
/* The directory which contains the plugins from the Monitoring Plugins project. */
const PluginDir = "/usr/lib64/nagios/plugins"
 
/* The directory which contains the Manubulon plugins.
 * Check the documentation, chapter "SNMP Manubulon Plugin Check Commands", for details.
 */
const ManubulonPluginDir = "/usr/lib64/nagios/plugins"
 
/* The directory which you use to store additional plugins which ITL provides user contributed command definitions for.
 * Check the documentation, chapter "Plugins Contribution", for details.
 */
const PluginContribDir = "/usr/lib64/nagios/plugins"
 
/* Our local instance name. By default this is the server's hostname as returned by `hostname --fqdn`.
 * This should be the common name from the API certificate.
 */
//const NodeName = "localhost"
 
/* Our local zone name. */
const ZoneName = NodeName
 
/* Secret key for remote node tickets */
const TicketSalt = ""

/etc/icinga2/icinga2.conf

Nachfolgender Inhalt solltein der Konfigurationsdatei /etc/icinga2/icinga2.conf stehen, falls nicht kann dieser auf nachfolgenden Inhalt zurückgesetzt werden:

/**
 * Icinga 2 configuration file
 * - this is where you define settings for the Icinga application including
 * which hosts/services to check.
 *
 * For an overview of all available configuration options please refer
 * to the documentation that is distributed as part of Icinga 2.
 */
 
/**
 * The constants.conf defines global constants.
 */
include "constants.conf"
 
/**
 * The zones.conf defines zones for a cluster setup.
 * Not required for single instance setups.
 */
include "zones.conf"
 
/**
 * The Icinga Template Library (ITL) provides a number of useful templates
 * and command definitions.
 * Common monitoring plugin command definitions are included separately.
 */
include <itl>
include <plugins>
include <plugins-contrib>
include <manubulon>
 
/**
 * This includes the Icinga 2 Windows plugins. These command definitions
 * are required on a master node when a client is used as command endpoint.
 */
include <windows-plugins>
 
/**
 * This includes the NSClient++ check commands. These command definitions
 * are required on a master node when a client is used as command endpoint.
 */
include <nscp>
 
/**
 * The features-available directory contains a number of configuration
 * files for features which can be enabled and disabled using the
 * icinga2 feature enable / icinga2 feature disable CLI commands.
 * These commands work by creating and removing symbolic links in
 * the features-enabled directory.
 */
include "features-enabled/*.conf"
 
/**
 * The repository.d directory contains all configuration objects
 * managed by the 'icinga2 repository' CLI commands.
 */
include_recursive "repository.d"
 
/**
 * Although in theory you could define all your objects in this file
 * the preferred way is to create separate directories and files in the conf.d
 * directory. Each of these files must have the file extension ".conf".
 */
include_recursive "conf.d"

API-Feature dekativieren

Nachfolgender Befehl dekativiert vorübergehend das API Feature, da sonst nicht gestartet werdeb kann:

# icinga2 feature disable api

Eine Überprüfung, ob dies erfolgreich durchgeführt wurde, kann mit nachfolgendem Befehl durchgeführt werden:

# icinga2 feature list
Disabled features: api debuglog gelf influxdb livestatus opentsdb perfdata syslog
Enabled features: checker command compatlog graphite ido-mysql mainlog notification statusdata

Icinga starten

Nachfolgender Befehl startet den Icinga-Dienst/Daemon:

 # systemctl start icinga2.service

Herunterladen

icingaweb2-module-director

Mit nachfolgendem Befehl kann direkt von GitHub eine gepackte Datei als Archiv direkt in das temporäre Verzeichnis /tmp heruntergeladen werden:

# wget -P /tmp https://github.com/Icinga/icingaweb2-module-director/archive/master.zip
--2016-09-23 12:12:01--  https://github.com/Icinga/icingaweb2-module-director/archive/master.zip
Resolving github.com (github.com)... 192.30.253.113
Connecting to github.com (github.com)|192.30.253.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/Icinga/icingaweb2-module-director/zip/master [following]
--2016-09-23 12:12:02--  https://codeload.github.com/Icinga/icingaweb2-module-director/zip/master
Resolving codeload.github.com (codeload.github.com)... 192.30.253.120
Connecting to codeload.github.com (codeload.github.com)|192.30.253.120|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1578803 (1.5M) [application/zip]
Saving to: ‘/tmp/master.zip’

100%[======================================>] 1,578,803   1.05MB/s   in 1.4s   

2016-09-23 12:12:04 (1.05 MB/s) - ‘/tmp/master.zip’ saved [1578803/1578803]

Installation

icingaweb2-module-director

Mit nachfolgendem Befehl kann die zuvor, wie unter nachfolgendem internen Link beschrieben

heruntergeladene Datei, in das Zielverzeichnis

  • /usr/share/icingaweb2/modules

entpackt werden:

# unzip /tmp/master.zip -d /usr/share/icingaweb2/modules

Abschließend muss nun noch das durch das entpacken neu entstandene Verzeichnis mit nachfolgendem Befehl umbenannt werden:

# mv /usr/share/icingaweb2/modules/icingaweb2-module-director-master /usr/share/icingaweb2/modules/director

Icinga neu starten

Nachfolgender Befehl startet den Icinga-Dienst/Daemon neu:

 # systemctl restart icinga2.service

Konfiguration: MariaDB

director: Datenbank

Nachfolgende SQL-Datei kann z.B. im Verzeichnis /tmp mit dem Namen

  • create_database_director.sql

erstellt werden, um die Neuanlage einer Datenbank mit dem Namen director durchzuführen:

-- CREATE DATABASE director;
CREATE DATABASE director;

Zur Ausführung der SQL-Datei kann nachfolgender Befehl genutzt werden, welcher jedoch die Kenntnis des root-Passwort für die Datenbank voraussetzt!:

# /usr/bin/mysql -u root -p < create_database_director.sql 
Enter password:

* Das Erscheinen keiner Fehlermeldung, bedeutet die korrekte Ausführung des Befehls!

director: Benutzer/Rechte

Nachfolgende SQL-Datei kann z.B. im Verzeichnis /tmp mit dem Namen

  • create_users_for_remote_access_to_database_director.sql

erstellt werden, um einen Benutzer für die Datenbank director zu erstellen und diesen mit den benötigten rechten auszustatten:

-- Use database.
USE mysql;
 
-- Create new users.
CREATE USER 'directoruser'@'192.168.0.110' IDENTIFIED BY 'geheim';
CREATE USER 'directoruser'@'server11.idmz.tachtler.net' IDENTIFIED BY 'geheim';
 
-- Grant privileges for database graphite to new users.
GRANT ALL PRIVILEGES ON director.* TO 'directoruser'@'192.168.0.110' IDENTIFIED BY 'geheim' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON director.* TO 'directoruser'@'server11.idmz.tachtler.net' IDENTIFIED BY 'geheim' WITH GRANT OPTION;
 
-- Make sure that priviliges are reloaded.
FLUSH PRIVILEGES;

Zur Ausführung der SQL-Datei kann nachfolgender Befehl genutzt werden, welcher jedoch die Kenntnis des root-Passwort für die Datenbank voraussetzt!:

# /usr/bin/mysql -u root -p < create_users_for_remote_access_to_database_director.sql
Enter password:

* Das Erscheinen keiner Fehlermeldung, bedeutet die korrekte Ausführung des Befehls!

:!: HINWEIS - Die Einrichtung der Tabellen erfolgt zu einem späteren Installationsschritt!

Konfiguration: Master für Remote Clients

Nachfolgend soll Icinga mit der Benutzung des Icinga-Clients zum Monitoring eingesetzt werden.

director: Master-Setup

Das Master Setup benötigt nachfolgende Komponenten

  • SSL CA und signierte Zertifikate für den Master
  • Aktiviertes API Feature (Möglichkeit), und einen lokalen „Endpoint“ und eine „Zone“-Objekt-Konfiguration

und zusätzliche nachfolgende

  • Firewall-Freischaltung für den Kommunikations-Port (standardmäßig ist dies der Port: 5665)

Um die vorhergehende Komponenten zu erstellen, kann nachfolgen der CLI command wizard (CLI Kommando Assistent) genutzt werden, um einen neuen Node (Knoten) auf dem Master zu erstellen.

:!: HINWEIS - Alle relevanten Icinga-Konfigurationsdateien werden automatisch angepasst!

Dazu muss als erster Schritt, ein Master Setup durchgeführt werden, was mit nachfolgendem Befehl realisiert werden kann:

:!: WICHTIG - Für ein Master Setup muss die erste Frage mit no (Nein) beantwortet werden!

:!: WICHTIG - Ein Bind Host und Bind Port ist nur erforderlich, wenn Icinga sich nur an eine bestimmtes Netzwerk-Interface binden soll!

# icinga2 node wizard
Welcome to the Icinga 2 Setup Wizard!

We'll guide you through all required configuration details.



Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: n
Starting the Master setup routine...
Please specifiy the common name (CN) [server11.idmz.tachtler.net]: 
Checking for existing certificates for common name 'server11.idmz.tachtler.net'...
Certificates not yet generated. Running 'api setup' now.
information/cli: Generating new CA.
information/base: Writing private key to '/var/lib/icinga2/ca/ca.key'.
information/base: Writing X509 certificate to '/var/lib/icinga2/ca/ca.crt'.
information/cli: Generating new CSR in '/etc/icinga2/pki/server11.idmz.tachtler.net.csr'.
information/base: Writing private key to '/etc/icinga2/pki/server11.idmz.tachtler.net.key'.
information/base: Writing certificate signing request to '/etc/icinga2/pki/server11.idmz.tachtler.net.csr'.
information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/server11.idmz.tachtler.net.crt'.
information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'.
Generating master configuration for Icinga 2.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Dumping config items to file '/etc/icinga2/zones.conf'.
warning/cli: Backup file '/etc/icinga2/zones.conf.orig' already exists. Skipping backup.
Please specify the API bind host/port (optional):
Bind Host []: 
Bind Port []: 
information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'.
information/cli: Updating constants.conf.
warning/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
Done.

Now restart your Icinga 2 daemon to finish the installation!

Nachfolgende Dateien wurden für die CA (Certificate Authority) neu erstellt:

  • /var/lib/icinga2/ca/ca.key - Schlüssel der CA
  • /var/lib/icinga2/ca/ca.crt - Root-Zertifikat der CA

Nachfolgende Dateien wurden für das Master-Zertifikat neu erstellt:

  • /etc/icinga2/pki/server11.idmz.tachtler.net.csr - Zertifikats-Request
  • /etc/icinga2/pki/server11.idmz.tachtler.net.key - Schlüssel des Zertifikats
  • /etc/icinga2/pki/server11.idmz.tachtler.net.csr - Zertifikat

Nachfolgende Konfigurationsdatei wurden neu erstellt oder angepasst:

  • /etc/icinga2/conf.d/api-users.conf
  • /etc/icinga2/zones.conf
  • /etc/icinga2/features-available/api.conf
  • /etc/icinga2/features-enabled/api.conf
  • /etc/icinga2/constants.conf

Nachfolgender Befehl zeigt nun an, das das Feature (Möglichkeit) - api - aktuell in Icinga zusätzlich aktiviert ist:

# icinga2 feature list
Disabled features: compatlog debuglog gelf graphite icingastatus livestatus opentsdb perfdata statusdata syslog
Enabled features: api checker command ido-mysql mainlog notification

director: /etc/icinga2/zones.conf

Nachfolgender Inhalt muss in der Konfigurationsdatei /etc/icinga2/zones.conf ergänzt werden, da sonst keine Übertragung vom Master an die Satelliten erfolgen kann:

(nur relevanter Ausschnitt):

...
object Zone "director-global" {
  global = true
}
...

(Komplette Konfigurationsdatei):

/*
 * Generated by Icinga 2 node setup commands
 * on 2016-09-23 13:28:12 +0200
 */
 
object Endpoint NodeName {
}
 
object Zone ZoneName {
        endpoints = [ NodeName ]
}
 
# Tachtler
object Zone "director-global" {
  global = true
}

director: icinga2-Neustart

Danach kann der icinga2-Server mit nachfolgendem Befehle neu gestartet werden:

# systemctl restart icinga2

Mit nachfolgendem Befehl kann der Status des Icinga-Servers abgefragt werden:

# systemctl status icinga2
icinga2.service - Icinga host/service/network monitoring system
   Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled)
   Active: active (running) since Tue 2015-12-01 14:34:31 CET; 3s ago
  Process: 19103 ExecStart=/usr/sbin/icinga2 daemon -d -e ${ICINGA2_ERROR_LOG} (code=exited, status=0/SUCCESS)
  Process: 19008 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, 
status=0/SUCCESS)
 Main PID: 19143 (icinga2)
   CGroup: /system.slice/icinga2.service
           └─19143 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -...

Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:...
Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:...
Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:...
Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:...
Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:...
Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:...
Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:...
Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:...
Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:...
Dec 01 14:34:31 server11.idmz.tachtler.net systemd[1]: Started Icinga host/se...
Hint: Some lines were ellipsized, use -l to show in full.

Nachfolgende LOG-Dateien sollten Auskunft darüber geben, wie der Neustart und der Status des Icinga-Servers ist.

  • /var/log/icinga2/icinga2.log
  • /var/log/icinga2/error.log

Der Inhalt der LOG-Datei /var/log/icinga2/icinga2.log könnte demnach wie folgt aussehen:

[2015-12-01 14:34:31 +0100] information/Application: Received request to shut down.
[2015-12-01 14:34:31 +0100] information/Application: Shutting down...
[2015-12-01 14:34:31 +0100] information/CheckerComponent: Checker stopped.
[2015-12-01 14:34:31 +0100] information/DbConnection: Pausing IDO connection: ido-mysql
[2015-12-01 14:34:31 +0100] information/DbConnection: Resuming IDO connection: ido-mysql
[2015-12-01 14:34:31 +0100] information/ConfigItem: Activated all objects.
[2015-12-01 14:34:31 +0100] information/ConfigCompiler: Compiling config file: /var/lib/icinga2/modified-
attributes.conf
[2015-12-01 14:34:31 +0100] information/IdoMysqlConnection: MySQL IDO instance id: 1 (schema version: '1.14.0')

Die LOG-Datei /var/log/icinga2/error.log sollte hingegen leer sein!

icingaweb2: Director (Setup)

Nach der erfolgreichen Inbetriebnahme des Icinga-Servers, kann nun die Web-Anwendung aufgerufen werden und die Konfiguration und Aktivierung des Icinga Director durchgeführt werden.

Bevor die Konfiguration und Aktivierung von Icinga Director durchgeführt werden kann, ist es erforderlich sich über die Icinga-Web-Anwendung anzumelden.

Icinga Web 2 - Anmeldung

Nach erfolgreicher Anmeldung an der Icinga-Web-Anwendung ist der Menüpunkt: Konfiguration | Module auszuwählen, wonach nachfolgende Ansicht zur Anzeige kommen sollte:

Icinga2 Web - Konfiguration - Module

Durch die Auswahl des Module | director werden weitere Konfigurationen zum Modul director angezeigt, darunter auch die Status disabled aktivieren (welche noch auf disabled eingestellt ist). Durch die Auswahl des [Links] aktivieren, kann nun Icinga Director aktiviert werden:

Icinga2 Web - Konfiguration - Module - Director - aktivieren

Nach erfolgreicher Aktivierung, sollte sich die Anzeige wie folgt verändert haben:

Icinga2 Web - Konfiguration - Module - Director - aktivieren - fertig

Icinga Director ist nun aktiviert!

icingaweb2: Director (Datenbank)

Nach der erfolgreichen Inbetriebnahme des Icinga-Servers und erfolgreicher Aktivierung des Icinga Director, kann nun die Web-Anwendung aufgerufen werden und die Konfiguration der Datenbank des Icinga Director durchgeführt werden.

Bevor die Konfiguration der Datenbank des Icinga Director durchgeführt werden kann, ist es erforderlich sich über die Icinga-Web-Anwendung anzumelden.

Icinga Web 2 - Anmeldung

Neue Ressource erstellen

Nach der Anmeldung sollte der Menüpunkt: Konfiguration | Anwendung und der Reiter [Ressourcen] ausgewählt werden, wie nachfolgend dargestellt.

Icinga Web 2 - Dashboard - Menüpunkt - Konfiguration - Anwendung - Auswahl: Ressourcen

Nach der Auswahl des Reiters [Ressourcen], kann nun die Schaltfläche [Neue Ressource erstellen] betätigt werden, wie nachfolgend dargestellt.

Icinga Web 2 - Dashboard - Menüpunkt - Konfiguration - Anwendung - Auswahl: Ressourcen - Neue Ressource erstellen

Nachfolgende Angaben sind erforderlich, um eine Verbindung zur SQL-datenbank herstellen zu können:

  • Ressourcentyp SQL Datenbank
  • Ressourcenname icingadirector_db
  • Datenbanktyp MySQL
  • Host db.idmz.tachtler.net
  • Port [leer]
  • Datenbankname director
  • Benutzername directoruser
  • Kennwort geheim
  • Zeichensatz utf8
  • Persistent [leer]

Nach Eingabe der erforderlichen Daten, sollte nun die Schaltfläche [Konfiguration validieren] betätigt werden.

Icinga Web 2 - Dashboard - Menüpunkt - Konfiguration - Anwendung - Ressourcen - Neue Ressource erstellen - SQL Datenbank - Konfiguration validieren

Nach erfolgreicher Validierung der Konfiguration sollte nachfolgende Meldung am oberen Bildschirmbereich erscheinen:

Validierungslog

Connection to icingadirector as icingadirector on db.idmz.tachtler.net: successful
protocol_version: 10
version: 5.5.50-MariaDB
version_compile_os: Linux

Abschließend kann nun die Schaltfläche [Änderungen speichern] betätigt werden und es sollte eine Ausgabe, wie nachfolgende, am Bildschirm erscheinen, wenn die Neue Ressource erfolgreich erstellt wurde:

Icinga Web 2 - Dashboard - Menüpunkt - Konfiguration - Anwendung - Ressourcen - Neue Ressource erstellen - SQL datenabank - Fertig

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/icinga2_-_director.1474685617.txt.gz · Zuletzt geändert: 2016/09/24 04:53 von klaus