Category Archive Tutorial

Fortinet FortiGate – Befehle

Fortinet bietet mit der Produktfamilie „FortiGate“ eine ganze Palette von mehrfach ausgezeichneten Appliances für den Schutz von Netzwerken.

 

Zum aktivieren des Traces loggen wir uns via Putty auf die Firewall.

Flow Trace zum debuggen (traced den transfer zu 51.22.0.123)

#deaktiviert und reset aktuelle Filter und Traces
diagnose debug disable 
diagnose debug flow trace stop 
diagnose debug flow filter clear 
diagnose debug reset 

#aktiviert die neuen Filter und Traces
diagnose debug flow filter addr  51.22.0.123
diagnose debug flow show console enable
diagnose debug flow show function-name enable
diagnose debug console timestamp enable
diagnose debug flow trace start 999
diagnose debug enable

 

Flow Trace zum debuggen (traced den transfer von 10.1.0.1)

#deaktiviert und reset aktuelle Filter und Traces
diagnose debug disable 
diagnose debug flow trace stop 
diagnose debug flow filter clear 
diagnose debug reset 

#aktiviert die neuen Filter und Traces
diagnose debug flow filter saddr  10.1.0.1
diagnose debug flow show console enable
diagnose debug flow show function-name enable
diagnose debug console timestamp enable
diagnose debug flow trace start 999
diagnose debug enable

 

Flow Trace zum debuggen (traced den transfer von 10.1.0.1 an 51.22.0.123)

#deaktiviert und reset aktuelle Filter und Traces
diagnose debug disable 
diagnose debug flow trace stop 
diagnose debug flow filter clear 
diagnose debug reset 

#aktiviert die neuen Filter und Traces
diagnose debug flow filter saddr  10.1.0.1
diagnose debug flow filter addr  51.22.0.123
diagnose debug flow show console enable
diagnose debug flow show function-name enable
diagnose debug console timestamp enable
diagnose debug flow trace start 999
diagnose debug enable

Ping ausführen

execute ping web.de

Trace Route ausführen

execute traceroute web.de

 

Befehle HP Switch 5900 mit Comware

Comware besitzt keine GUI. Der Switch muß also komplett über die CLI konfiguriert und administriert werden. Aber mit etwas Übung kann man sich schnell einarbeiten.
Als erstes sollte man das Konfigurationskabel an den Konsolenport anschließen und über die Konsole sich mit dem Switch verbinden. Hierzu kann das Programm „Putty“ verwendet werden.

 

Config modus aktivieren <Coreswitch> -> [Coreswitch]

system-view

Aktuelle Config anzeigen lassen

display current-configuration

Aktuelle Config eines Ports anzeigen lassen

display current-configuration interface GigabitEthernet 1/0/32

Neues VLAN erstellen

vlan 1337
name iscsi-new
quit

Alle VLAN´s incl. Ports anzeigen lassen

display vlan all

Alle VLAN´s ohne Ports anzeigen lassen

display vlan

Vorhandenes VLAN tagged auf einen Port legen

interface GigabitEthernet1/0/32
port link-mode bridge
port link-type trunk
port trunk permit vlan 1 1332
exit

Vorhandes VLAN untagged auf einen Port legen

interface Ten-GigabitEthernet4/0/12
port link-mode bridge
port access vlan 1000
exit

Routing anzeigen lassen

display ip routing-table

Route/Standardgateway definieren

ip route-static 0.0.0.0 0.0.0.0 192.168.66.254

Port deaktivieren

interface GigabitEthernet1/0/32
shutdown

Port wieder aktivieren

undo shutdown

SSH aktivieren / abfragen:

ssh server enable
display ssh server status
display ssh server session

SSH public-key erstellen:

public-key local create rsa (-> hier können die Standardvorgaben verwendet werden)

SSH user anlegen und network-admin recht zuweisen:

user-interface vty 0 15 (-> hier wird in das Management Interface gewechselt)
authentication-mode scheme
protocol inbound ssh
quit
local-user Berlin (-> hier wird der User "Berlin" angelegt)
password simple 5678 (-> hier wird das Passwort "5678" gesetzt)
service-type ssh
authorization-attribute user-role network-admin
quit
save

Configuration sichern via tftp

backup startup-configuration to ip_des_tftp-Server configname.cfg

Firmware updaten (Firmware auf den Switch laden)

tftp ip_des_tftp-Servers get xxx.ipe (-> läd das ipe File in das Root-Verzeichnis)

Firmware File aktivieren

boot-loader file flash:/xxx.ipe slot 1 main

Switchname vergeben:

sysname coreswitch

config speichern

save force

Update von Icinga 2.4.x, 2.5.x, 2.6.0 auf Icinga 2.7.0

Edit: Da ich nicht jedes Update dokumentiere – hier eine Anleitung mit ggf. verschiedenen Versionen. Der Weg ist allerdings der gleiche 😀
Edit2: Beim Update auf 2.7.0 wird kein Shema-Update der Datenbank benötigt.

Icinga2 V2.5.4 ist da. Allerdings bin ich beim update direkt ins stocken geraten.
Daher beschreibe ich hier einmal den Weg – wie das Update funktioniert.

 

Im ersten Schritt führen wir das Update durch.

[root@vlicinga002 ~]# yum update

Abhängigkeiten aufgelöst

=====================================================================================================================================
 Package                           Arch                 Version                            Paketquelle                         Größe
=====================================================================================================================================
Installieren:
 kernel                            x86_64               3.10.0-327.28.3.el7                updates                              33 M
 kernel-devel                      x86_64               3.10.0-327.28.3.el7                updates                              11 M
Aktualisieren:
 icinga2                           x86_64               2.5.4-1.el7.centos                 icinga-stable-release               9.0 k
 icinga2-bin                       x86_64               2.5.4-1.el7.centos                 icinga-stable-release                92 k
 icinga2-common                    x86_64               2.5.4-1.el7.centos                 icinga-stable-release                99 k
 icinga2-ido-mysql                 x86_64               2.5.4-1.el7.centos                 icinga-stable-release               167 k
 kernel-headers                    x86_64               3.10.0-327.28.3.el7                updates                             3.2 M
 kernel-tools                      x86_64               3.10.0-327.28.3.el7                updates                             2.4 M
 kernel-tools-libs                 x86_64               3.10.0-327.28.3.el7                updates                             2.3 M
 nodejs                            x86_64               0.10.46-1.el7                      epel                                2.0 M
 perf                              x86_64               3.10.0-327.28.3.el7                updates                             3.3 M
 python                            x86_64               2.7.5-38.el7_2                     updates                              89 k
 python-libs                       x86_64               2.7.5-38.el7_2                     updates                             5.6 M
 python-perf                       x86_64               3.10.0-327.28.3.el7                updates                             2.4 M
 uwsgi                             x86_64               2.0.13.1-2.el7                     epel                                360 k
 uwsgi-plugin-carbon               x86_64               2.0.13.1-2.el7                     epel                                 23 k
 uwsgi-plugin-common               x86_64               2.0.13.1-2.el7                     epel                                 48 k
Als Abhängigkeiten installiert:
 icinga2-libs                      x86_64               2.5.4-1.el7.centos                 icinga-stable-release               2.7 M

Transaktionsübersicht
=====================================================================================================================================
Installieren    2 Pakete (+1 Abhängiges Paket)
Aktualisieren  15 Pakete

Danach muss das Datenbank-Schema ebenfalls geupdatet werden (dies passiert nicht automatisch)

[root@vlicinga002 ~]# mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/upgrade/2.5.0.sql
Enter password:

Der Ordnungshalber mache ich danach ein reboot – um zu testen ob alle Dienste sauber starten (denn nach dem Update sind nicht alle Dienste gestartet).

[root@vlicinga002 ~]# reboot

fertig 😀

 

Grafana für Icinga2

Grafana ist eine der meist kommerziell genutzen OpenSource Software zur Visualisierung verschiedener Performance-Daten für Hard und Software. Daher ist es perfekt geeignet um die Daten aus Icinga (Graphite) zu visualisieren.

 

Quelle:
http://docs.grafana.org/installation/rpm/

 

[root@vlicinga002 ~]# yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.1-1470047149.x86_64.rpm

 

Abhängigkeiten aufgelöst

===========================================================================================================================================================================================================
 Package                                 Arch                                   Version                                             Paketquelle                                                      Größe
===========================================================================================================================================================================================================
Installieren:
 grafana                                 x86_64                                 3.1.1-1470047149                                    /grafana-3.1.1-1470047149.x86_64                                 113 M

Transaktionsübersicht
===========================================================================================================================================================================================================
Installieren  1 Paket

 

Services anpassen (automatisch Start, Service starten)

[root@vlicinga002 ~]# systemctl start grafana-server
[root@vlicinga002 ~]# systemctl enable grafana-server.service


[root@vlicinga002 ~]# systemctl status grafana-server
● grafana-server.service - Starts and stops a single grafana instance on this system
   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; enabled; vendor preset: disabled)
   Active: active (running) since Di 2016-08-16 14:24:43 CEST; 31s ago
     Docs: http://docs.grafana.org
 Main PID: 16411 (grafana-server)
   CGroup: /system.slice/grafana-server.service
           └─16411 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile= cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/...

Aug 16 14:24:44 vlicinga002.localhost grafana-server[16411]: t=2016-08-16T14:24:44+0200 lvl=info msg="Executing migration" logger=migrator id="create playlist table v2"
Aug 16 14:24:44 vlicinga002.localhost grafana-server[16411]: t=2016-08-16T14:24:44+0200 lvl=info msg="Executing migration" logger=migrator id="create playlist item table v2"
Aug 16 14:24:44 vlicinga002.localhost grafana-server[16411]: t=2016-08-16T14:24:44+0200 lvl=info msg="Executing migration" logger=migrator id="drop preferences table v2"
Aug 16 14:24:44 vlicinga002.localhost grafana-server[16411]: t=2016-08-16T14:24:44+0200 lvl=info msg="Executing migration" logger=migrator id="drop preferences table v3"
Aug 16 14:24:44 vlicinga002.localhost grafana-server[16411]: t=2016-08-16T14:24:44+0200 lvl=info msg="Executing migration" logger=migrator id="create preferences table v3"
Aug 16 14:24:44 vlicinga002.localhost grafana-server[16411]: t=2016-08-16T14:24:44+0200 lvl=info msg="Created default admin user: [admin]"
Aug 16 14:24:44 vlicinga002.localhost grafana-server[16411]: t=2016-08-16T14:24:44+0200 lvl=info msg="Starting plugin search" logger=plugins
Aug 16 14:24:44 vlicinga002.localhost grafana-server[16411]: t=2016-08-16T14:24:44+0200 lvl=warn msg="Plugin dir does not exist" logger=plugins dir=/var/lib/grafana/plugins
Aug 16 14:24:44 vlicinga002.localhost grafana-server[16411]: t=2016-08-16T14:24:44+0200 lvl=info msg="Plugin dir created" logger=plugins dir=/var/lib/grafana/plugins
Aug 16 14:24:44 vlicinga002.localhost grafana-server[16411]: t=2016-08-16T14:24:44+0200 lvl=info msg="Server Listening" logger=server address=0.0.0.0:3000 protocol=http subUrl=

 

Website öffnen:
http://IP-SERVER:3000/login
Username: admin
Passwort: admin

Grafana_Install (1)

DataSource einrichten

Grafana_Install (2)

Grafana_Install (3)

Grafana_Install (4)

Dashboard anlegen und Graphen nach belieben hinzufügen

Grafana_Install (5)

 

Graphite in IcingaWeb2 einbinden (Performancedaten)

Graphite ist eine Open Source Graphing Lösung, die stark auf Flexibilität und Performance ausgelegt ist. Somit eignet sich Graphite perfekt zum Erfassen von Daten aus einem Monitoring System wie Icinga2.
Installation unter CentOS7 mit Icinga2, IcingaWeb2.

Derzeit befindet sich Graphite noch in einer Vorabversion, daher wird es offiziell nicht unterstützt.

Voraussetzungen:
CentOS7 Betriebsystem
Icinga2 & IcingaWeb2 Installation

Keine Voraussetzung aber interessant:

Windows Clients via Icinga Agent überwachen
Icinga Director installieren
Dashing für Icinga2 installieren

Installation:

Benötigte Pakete nachinstallieren

[root@centos7_icinga2_demo ~]# yum install python-whisper python-carbon graphite-web MySQL-python uwsgi-plugin-carbon

Abhängigkeiten aufgelöst

================================================================================
 Package                           Arch       Version            Paketquelle
                                                                          Größe
================================================================================
Installieren:
 MySQL-python                      x86_64     1.2.3-11.el7       base      82 k
 graphite-web                      noarch     0.9.15-1.el7       epel     1.8 M
 python-carbon                     noarch     0.9.15-1.el7       epel     109 k
 python-whisper                    noarch     0.9.15-1.el7       epel      42 k
 uwsgi-plugin-carbon               x86_64     2.0.12-2.el7       epel      22 k
Als Abhängigkeiten installiert:
 mod_wsgi                          x86_64     3.4-12.el7_0       base      76 k
 pyOpenSSL                         x86_64     0.13.1-3.el7       base     133 k
 pyserial                          noarch     2.6-5.el7          base     124 k
 python-django                     noarch     1.6.11-5.el7       epel     4.0 M
 python-django-bash-completion     noarch     1.6.11-5.el7       epel      16 k
 python-django-tagging             noarch     0.3.1-11.el7       epel      58 k
 python-simplejson                 x86_64     3.3.3-1.el7        epel     171 k
 python-twisted-core               x86_64     12.2.0-4.el7       base     2.5 M
 python-zope-interface             x86_64     4.0.5-4.el7        base     138 k
 uwsgi                             x86_64     2.0.12-2.el7       epel     359 k
 uwsgi-plugin-common               x86_64     2.0.12-2.el7       epel      47 k

Transaktionsübersicht
================================================================================
Installieren  5 Pakete (+11 Abhängige Pakete)

IcingaWeb2 Modul herunterladen

wget https://github.com/philiphoy/icingaweb2-module-graphite/archive/master.zip

Entpacken

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

Ordner in das Icinga Modul Verzeichnis verschieben

mv /usr/share/icingaweb2/modules/icingaweb2-module-graphite-master/ /usr/share/icingaweb2/modules/graphite/

Pyton Carbon Konfiguration anpassen

vim /etc/carbon/carbon.conf

Vorher: 
ENABLE_LOGROTATION = False

Nachher:
ENABLE_LOGROTATION = True

Storage-Schema Konfiguration anpassen

vim /etc/carbon/storage-schemas.conf

[carbon]
pattern = ^carbon\.
retentions = 60:90d
 
[icinga2_default]
pattern = ^icinga2\.
retentions = 1m:2d,5m:10d,30m:90d,360m:4y
 
[default_1min_for_1day]
pattern = .*
retentions = 60s:1d

 

SQL-Datenbank anlegen

mysql -h localhost -u root -p


MariaDB [(none)]> CREATE DATABASE graphite;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON graphite.* TO 'graphite_user'@'localhost' IDENTIFIED BY 'BUsq4abGxrPysYeqdq61eujDlSHKv1xNyww';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON graphite.* TO 'graphite_user'@'127.0.0.1' IDENTIFIED BY 'BUsq4abGxrPysYeqdq61eujDlSHKv1xNyww';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> GRANT ALL ON graphite.* TO 'graphite_user'@'::1' IDENTIFIED BY 'BUsq4abGxrPysYeqdq61eujDlSHKv1xNyww';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit

Konfigurationsdatei „Graphite-Web“ anpassen

vim /etc/graphite-web/local_settings.py

vorher:
#SECRET_KEY = 'UNSAFE_DEFAULT'
#TIME_ZONE = 'America/Los_Angeles'

#DATABASES = {
#    'default': {
#        'NAME': '/opt/graphite/storage/graphite.db',
#        'ENGINE': 'django.db.backends.sqlite3',
#        'USER': '',
#        'PASSWORD': '',
#        'HOST': '',
#        'PORT': ''
#    }
#}
#

nachher: 
SECRET_KEY = '1r3ou$lSg71#cb2coery^hjbyc@6@yynfmd1$493^k8=l$lrs7'
TIME_ZONE = 'Europe/Berlin'

DATABASES = {
    'default': {
        'NAME': 'graphite',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'graphite_user',
        'PASSWORD': 'BUsq4abGxrPysYeqdq61eujDlSHKv1xNyww',
        'HOST': '127.0.0.1',
        'PORT': '3306'
    }
}

 

Whisper DB befüllen

[root@centos7_icinga2_demo ~]# /usr/lib/python*/site-packages/graphite/manage.py syncdb
Creating tables ...
Creating table account_profile
Creating table account_variable
Creating table account_view
Creating table account_window
Creating table account_mygraph
Creating table dashboard_dashboard_owners
Creating table dashboard_dashboard
Creating table events_event
Creating table url_shortener_link
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_session
Creating table django_admin_log
Creating table django_content_type
Creating table tagging_tag
Creating table tagging_taggeditem

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'):
Email address:
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

 

Apache V-Host config anpassen

vim /etc/httpd/conf.d/graphite-web.conf

vorher:
<VirtualHost *:80>
    ServerName graphite-web
    DocumentRoot "/usr/share/graphite/webapp"
    ErrorLog /var/log/httpd/graphite-web-error.log
    CustomLog /var/log/httpd/graphite-web-access.log common

    # Header set Access-Control-Allow-Origin "*"
    # Header set Access-Control-Allow-Methods "GET, OPTIONS"
    # Header set Access-Control-Allow-Headers "origin, authorization, accept"
    # Header set Access-Control-Allow-Credentials true

    WSGIScriptAlias / /usr/share/graphite/graphite-web.wsgi
    WSGIImportScript /usr/share/graphite/graphite-web.wsgi process-group=%{GLOBAL} application-group=%{GLOBAL}

    <Location "/content/">
        SetHandler None
    </Location>

    Alias /media/ "/usr/lib/python2.7/site-packages/django/contrib/admin/media/"
    <Location "/media/">
        SetHandler None
    </Location>

   <Directory "/usr/share/graphite/">
       <IfModule mod_authz_core.c>
           # Apache 2.4
           Require local
       </IfModule>
       <IfModule !mod_authz_core.c>
           # Apache 2.2
           Order Deny,Allow
           Deny from all
           Allow from 127.0.0.1
           Allow from ::1
       </IfModule>
   </Directory>
</VirtualHost>



nachher:

  # Graphite Web Basic mod_wsgi vhost

<VirtualHost *:80>
    ServerName graphite-web
    DocumentRoot "/usr/share/graphite/webapp"
    ErrorLog /var/log/httpd/graphite-web-error.log
    CustomLog /var/log/httpd/graphite-web-access.log common

    # Header set Access-Control-Allow-Origin "*"
    # Header set Access-Control-Allow-Methods "GET, OPTIONS"
    # Header set Access-Control-Allow-Headers "origin, authorization, accept"
    # Header set Access-Control-Allow-Credentials true

    WSGIScriptAlias / /usr/share/graphite/graphite-web.wsgi
    WSGIImportScript /usr/share/graphite/graphite-web.wsgi process-group=%{GLOBAL} application-group=%{GLOBAL}

    <Location "/content/">
        SetHandler None
    </Location>

    Alias /media/ "/usr/lib/python2.7/site-packages/django/contrib/admin/media/"
    <Location "/media/">
        SetHandler None
    </Location>

   <Directory "/usr/share/graphite/">
    <IfModule mod_authz_core.c>
        # Apache 2.4
        <RequireAll>
            Require all granted
        </RequireAll>
    </IfModule>

    <IfModule !mod_authz_core.c>
        # Apache 2.2
        Order allow,deny
        Allow from all
    </IfModule>
   </Directory>
</VirtualHost>

WebServer neustaten

systemctl restart httpd.service

Graphite Modul Konfiguration anlegen dabei ist zu beachten das man unter Konfiguration -> Module -> Graphite -> im Tab Configuration eine bsp. Config erhält.
Diese kopieren und in die config.ini einfügen.

Webkonfiguration
Konfiguration -> Module -> Graphite -> aktivieren

graphine_1

Config-Vorlage kopieren.

graphine_3

 

mkdir /etc/icingaweb2/modules/graphite

vim /etc/icingaweb2/modules/graphite/config.ini

 

[graphite]
metric_prefix = icinga2
base_url = http://<<IP-ADRESSE DES SERVERS>>/render?
legacy_mode = false
;if legacy mode is false (2.4 and newer):
service_name_template = "icinga2.$host.name$.services.$service.name$.$service.check_command$.perfdata.$metric$.value"
host_name_template = "icinga2.$host.name$.host.$host.check_command$.perfdata.$metric$.value"
;if legacy mode is true (pre 2.4):
;service_name_template = "icinga.$host.name$.services.$service.name$.$service.check_command$"
;host_name_template = "icinga.$host.name$.host.$host.check_command$"
;this template is used for the small image, macro $target$ can used.
graphite_args_template = "&target=$target$&source=0&width=300&height=120&hideAxes=true&lineWidth=2&hideLegend=true&colorList=049BAF"
;this template is used for the large image, macro $target$ can used.
;graphite_large_args_template = "&target=alias(color($target$_warn,'yellow'),'warning')&target=alias(color($target$_crit,'red'),'critical')&target=$target$&source=0&width=800&height=700&colorList=049BAF&lineMode=connected"
graphite_iframe_w=800px
graphite_iframe_h=700px

Diensteanpassungen durchführen

systemctl start carbon-cache.service

systemctl enable carbon-cache.service

systemctl status carbon-cache.service

Icinga2 Feature aktivieren

icinga2 feature enable graphite

systemctl restart icinga2

Dienst anschauen

graphine_2

 

 

Icinga2 auf Raspi3 in 20 Minuten installieren

Raspberry Pi 3 und Icinga2 incl. IcingaWeb2 sind eine super Kombination um in kleineren Netzwerken bis ca. 100 Hosts ein schnelles Monitoring zu implementieren.
In diesem Tutorial beschreibe ich wie schnell man den Raspi installiert und ein lauffähiges Icinga2 + IcingaWeb2 auf dem Raspi installiert.
Das ganze System ist dabei in ca. 20 Minuten voll einsatzbereit!

Nachdem wir das Image bei „https://www.raspberrypi.org/“ herunter geladen haben und via Win32DiskImager auf die SD-Karte kopiert haben, starten wir den Raspi – dabei bekommt der Raspi im Netzwerk via DHCP Adresse eine IP-Adresse zugewiesen.

Mit dem Advanced IP-Scanner suchen wir das Gerät und melden uns via SSH (Putty) auf dem Raspi an.

Login Daten:
Username: pi
Passwort: raspberry

Grundsetup durchführen (Kennwort ändern und Festplatte vergrößern)

sudo raspi-config

Expand FileSystem (siehe Video)
Set Password (siehe Video)

Hostname anpassen

sudo vi /etc/hostname
sudo vi /etc/hosts
sudo reboot

Icinga2 + IcingaWeb2 installieren

sudo apt-get update
sudo -s
wget -O - http://debmon.org/debmon/repo.key 2>/dev/null | apt-key add -

echo 'deb http://debmon.org/debmon debmon-jessie main' >/etc/apt/sources.list.d/debmon.list

apt-get update

apt-get install icinga2 -y

apt-get install php5-mysql mysql-server icinga2-ido-mysql apache2 libapache2-mod-php5 mysql-client php5-intl imagemagick php5-imagick php5-pgsql -y

MYSQL Kennwort definieren; MYSQL ILO Aktivieren

Features aktivieren

icinga2 feature enable ido-mysql

icinga2 feature enable command

Icinga neustarten bevor IcingaWeb2 installiert wird

service icinga2 restart

IcingaWeb2 installieren

apt-get install icingaweb2 -y

Benutzerrechte anpassen

usermod -a -G nagios www-data

Icingacli Config anpassen

icingacli setup config directory

Icinga Setup Token erstllen (wird später im WebSetup benötigt)

icingacli setup token create

letzte Anpassungen für IcingaWeb2

mkdir /etc/icingaweb2/modules/monitoring
chown root:icingaweb2 /etc/icingaweb2/modules/monitoring/
chmod g+w /etc/icingaweb2/modules/monitoring/
chmod g+w /var/run/icinga2/cmd/

PHP.ini anpassen

sed -i 's$;date.timezone =$date.timezone = Europe/Berlin$g' /etc/php5/apache2/php.ini
sed -i 's$;date.timezone =$date.timezone = Europe/Berlin$g' /etc/php5/cli/php.ini

letzter neustart vor dem Websetup

service apache2 restart

Websetup durchführen:

http://lokaleipadresse/icingaweb2/setup

Das Websetup wird Schritt für Schritt noch einmal im Video gezeigt.

CentOS7 auf Raspi 3 installieren

Da ich im nächsten Schritt gerne Icinga2 und IcingaWeb2 auf einen Raspi 3 installieren möchte – möchte ich hier einmal beschreiben wir man CentOS7 auf den Raspi zu installieren.

Zuerst Laden wir das CentOS7 Image herunter

http://mirror.centos.org/altarch/7/isos/armhfp/

Ebenfalls brauchen wir ein Tool zum kopieren des IMG auf die SD-Karte

https://sourceforge.net/projects/win32diskimager/

Entpacken des IMG. Hierzu einfach 7-Zip benutzen

Unzip 7-Zip das *.img.xz to *.img

Mit Win32 Disk Imager das Image auf den Raspi spielen.

 

CentOS_on_Raspi (1)

CentOS_on_Raspi (2)

CentOS_on_Raspi (3)

CentOS_on_Raspi (4)

der Raspi ist jetzt bereit zum Booten, Netzwerkkabel anschließen, SD-Karte einstecken und Stom einstecken.

Im Netzwerk bekommt der Raspi seine IP-Konfiguration über einen DHCP-Server zugewiesen.

Login auf dem Raspi:

User: root
Passwort: centos

 

Hostname anpassen

[root@centos-rpi3 ~]# hostnamectl status
   Static hostname: centos-rpi3
         Icon name: computer
        Machine ID: c86851c595a149019a820550c3ccec08
           Boot ID: 65a32a6d55fc4fce9ff22d0bc6353e2b
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 4.1.19-v7
      Architecture: arm

[root@centos-rpi3 ~]# hostnamectl set-hostname icingaras01

[root@centos-rpi3 ~]# hostnamectl status
   Static hostname: icingaras01
         Icon name: computer
        Machine ID: c86851c595a149019a820550c3ccec08
           Boot ID: 65a32a6d55fc4fce9ff22d0bc6353e2b
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 4.1.19-v7
      Architecture: arm

 

 

 

Icinga2 Dashing installieren

Dashing ist auf Sinatra basierendes Framework, mit dem man sehr schöne Dashboards bauen kann.

 

In das Verzeichnis /usr/share wechseln

[root@vlicinga002 ~]# cd /usr/share/

Pakete nachinstallieren

[root@vlicinga002 share]# yum install ruby ruby-devel nodejs

Abhängigkeiten aufgelöst

================================================================================
 Package                 Arch        Version                    Paketquelle
                                                                          Größe
================================================================================
Installieren:
 nodejs                  x86_64      0.10.42-4.el7              epel      2.0 M
 ruby                    x86_64      2.0.0.598-25.el7_1         base       67 k
 ruby-devel              x86_64      2.0.0.598-25.el7_1         base      127 k
Als Abhängigkeiten installiert:
 libuv                   x86_64      1:0.10.34-2.el7            epel       62 k
 libyaml                 x86_64      0.1.4-11.el7_0             base       55 k
 ruby-irb                noarch      2.0.0.598-25.el7_1         base       88 k
 ruby-libs               x86_64      2.0.0.598-25.el7_1         base      2.8 M
 rubygem-bigdecimal      x86_64      1.2.0-25.el7_1             base       79 k
 rubygem-io-console      x86_64      0.4.2-25.el7_1             base       50 k
 rubygem-json            x86_64      1.7.7-25.el7_1             base       75 k
 rubygem-psych           x86_64      2.0.0-25.el7_1             base       77 k
 rubygem-rdoc            noarch      4.0.0-25.el7_1             base      318 k
 rubygems                noarch      2.0.14-25.el7_1            base      212 k

Transaktionsübersicht
================================================================================
Installieren  3 Pakete (+10 Abhängige Pakete)

 

Bundler installieren

[root@vlicinga002 share]# gem install bundler

Dashing installieren

[root@vlicinga002 share]# gem install dashing

Exexjs installieren

[root@vlicinga002 dashing-icinga2]# gem install execjs

api-user.conf anpassen

[root@vlicinga002 ~]# vim /etc/icinga2/conf.d/api-users.conf

folgendes ergänzend eintragen

object ApiUser "dashing" {
password = "icinga2ondashingr0xx"
permissions = [ "status/query", "objects/query/*" ]
}

Icinga2 Service neustarten

[root@vlicinga002 ~]# systemctl restart icinga2

Git Repo von Dashing herunterladen

[root@vlicinga002 ~]# git clone https://github.com/Icinga/dashing-icinga2.git

Ins Dashing Verzeichnis wechseln

[root@vlicinga002 ~]# cd dashing-icinga2/

Bundle ausführen

[root@vlicinga002 ~]# bundle install --path binpaths

Dashing starten

[root@vlicinga002 ~]# ./restart-dashing
Restarted Dashing with PID 10083 listening on port 8005.

http://serveradresse:8005 öffnen

dashing1

 

Da mich aktuell nicht nur interessiert wieviele Hosts oder Services Probleme haben – sondern vorallem welcher – habe ich das widget „Iframe“ bentutz um IcingaWeb2 ebenfalls in Dashing einzubauen.

Hierzu habe ich folgende Anpassungen durchgeführt:

unter /usr/share/dashing-icinga2/widgets/iframe

folgende Dateien anpassen (alle): iframe.coffee; iframe.html, iframe.scss

iframe.coffee

[root@vlicinga002 iframe]# cat iframe.coffee

class Dashing.Iframe extends Dashing.Widget

  ready: ->
    $(@node).find(".iframe").attr('src', @get('src'))

  onData: (data) ->
    $(@node).find(".iframe").attr('src', data.src)

iframe.html

[root@vlicinga002 iframe]# cat iframe.html
<iframe class=“iframe“ data-bind-src=“src“ scrolling=“no“></iframe>

iframe.scss

[root@vlicinga002 iframe]# cat iframe.coffee
class Dashing.Iframe extends Dashing.Widget

  ready: ->
    $(@node).find(".iframe").attr('src', @get('src'))

  onData: (data) ->
    $(@node).find(".iframe").attr('src', data.src)
[root@vlicinga002 iframe]# cat iframe.html
<iframe class="iframe" data-bind-src="src" scrolling="no"></iframe>
[root@vlicinga002 iframe]# cat iframe.scss
// ----------------------------------------------------------------------------
// Sass declarations
// ----------------------------------------------------------------------------
$background-color:  #FFF;

$title-color:       #333;
$moreinfo-color:    #333;

$iframe-background:  darken($background-color, 25%);

// ----------------------------------------------------------------------------
// Widget-iframe styles
// ----------------------------------------------------------------------------
.widget-iframe {

  background-color: $background-color;
  padding: 0 !important;
  margin: 0 !important;

  iframe {
    width: 100%;
    height: 100%;
    border: 0;
    padding: 0;
    margin: 0;
    overflow: hidden;
  }

}

Nun müssen wir das Widget im Dashboard plazieren hierzu das Dashboard im editor öffnen:

[root@vlicinga002 dashboards]# vi /usr/share/dashing-icinga2/dashboards/icinga2.erb

 

Und folgendes zwischen dem letzen </li> und dem </ul> einfügen

<!-- IcingaWeb2 -->
<li data-row="1" data-col="1" data-sizex="2" data-sizey="3">
      <div data-id="iframeId1" data-view="Iframe" data-src="http://10.61.0.152/icingaweb2/"></div>
</li>

Um jetzt das ganze auf FullHD anzupassen muss die größe der angzeigten Widgets angepasst werden. Hierzu die application.coffee anpassen.

[root@vlicinga002 javascripts]# vi /usr/share/dashing-icinga2/assets/javascripts/application.coffee

Folgende Zeile muss angepasst werden (erster Wert = breite, zweiter Wert = höhe)

Dashing.widget_base_dimensions ||= [300, 353]

Interessant ist auch der Wert von „Dashing.numColumns“ dieser gibt an – wieviel Widgets pro Zeile angezeigt werden soll.

 

dashing-problem2

IMG_3641

 

 

Icinga Agent – erster Windows Client überwachen

Der Icinga 2 Agent authentifiziert Verbindungen an Hand von Zertifikaten der eigenen PKI. Den Agenten gibt es in der aktuellen Version im Bundle mit dem NSClient, damit sind die Plugins des NSClient++ auch weiterhin vom Agenten aus nutzbar.

 

Icinga2 Agent herunterladen

http://packages.icinga.org/windows/

Icinga-agent_client (1)

Vorbereitungen auf dem Icinga Server:

Master Node erstellen (muss nur einmal initial gemacht werden!)

[root@vlicinga002 tmp]# 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) [vlicinga002.localhost]:
Checking for existing certificates for common name 'vlicinga002.localhost'...
Certificate '/etc/icinga2/pki/vlicinga002.localhost.crt' for CN 'vlicinga002.localhost' already existing. Skipping certificate generation.
Generating master configuration for Icinga 2.
information/cli: API user config file '/etc/icinga2/conf.d/api-users.conf' already exists, not creating config file.
'api' feature already enabled.
information/cli: Dumping config items to file '/etc/icinga2/zones.conf'.
information/cli: Created backup file '/etc/icinga2/zones.conf.orig'.
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.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
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!

[root@vlicinga002 tmp]# systemctl restart icinga2.service

 

Host im Icinga Director anlegen

Als erstes legen wir uns eine Vorlage für Windows Agent Clients an

icinga-agent2-director (1)

icinga-agent2-director (2)

Nachdem die Vorlage angelegt ist können wir das eigentliche Hostobjekt anlegen. Hier sollte der fqdn eingetragen werden (aus Datenschutz habe ich ihn hier einmal weggelassen).

Als „Import“ wählen wir jetzt unsere zuvor angelegte Vorlage „Windows Agent“ aus.

icinga-agent2-director (3)

Wir finden unter dem Reiter „Agent“ im „Host“ unser Ticket welches wir für die manuelle Installation des Windows Agent benötigen.

icinga-agent2-director (4)

Agent Installation auf dem Windows Client

Icinga-agent_client (2)

Icinga-agent_client (3)

Icinga-agent_client (4)

Icinga-agent_client (5)

Icinga-agent_client (6)

Icinga-agent_client (7)

Icinga-agent_client (8)

Icinga-agent_client (9)

Icinga-agent_client (10)

Icinga-agent_client (11)

Icinga-agent_client (12)

Icinga-agent_client (13)

icinga-agent-web2-1

zum überprüfen ob der Agent läuft und mit dem icinga2 Server kommuniziert folgendes auf dem Server ausführen

[root@vlicinga002 tmp]# icinga2 node list
Node 'L0999.bit.local' (last seen: Thu Aug  4 10:47:36 2016)
    * Host 'L0999.bit.local'
        * Service 'disk'
        * Service 'disk C:'
        * Service 'icinga'
        * Service 'load'
        * Service 'ping4'
        * Service 'ping6'
        * Service 'procs'
        * Service 'swap'
        * Service 'users'

 

Weitere Services des Windows Clients überprüfen

IcingaAgent2_Services (1)

IcingaAgent2_Services (2)

IcingaAgent2_Services (3)

IcingaAgent2_Services (4)

IcingaAgent2_Services (5)

IcingaAgent2_Services (6)

IcingaAgent2_Services (7)

IcingaAgent2_Services (8)

IcingaAgent2_Services (9)

IcingaAgent2_Services (10)

IcingaAgent2_Services (11)

IcingaAgent2_Services (12)

IcingaAgent2_Services (13)

Installation des Icinga Director

Mit dem Icinga Director steht jetzt ein brandneues Konfigurationstool bereit, um die Arbeit mit den beiden noch angenehmer zu gestalten. Dabei will der Director zwei große Zielgruppen ansprechen. Jene die ihr Datacenter durchgehend automatisieren sowie jene, die sich ein komfortables Frontend wünschen, um alltägliche Anpassungen des Monitorings sorglos delegieren zu können. Und im Idealfall das alles zur selben Zeit.

Voraussetzungen:

  1. Betriebsystem (Anleitung zur CentOS7 Installation)
  2. Icinga2 + IcingaWeb2 (Anleitung „wie installiere ich Icinga2 und IcingaWeb2“)
  3. MYSQL-Server (haben wir während der Installation von Icingaweb2 schon angelegt)
  4. php-curl Erweiterung

Installation:

Überprüfen ob „php-curl“ installiert ist

[root@vlicinga002 ~]# yum install php-curl
Geladene Plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.vooservers.com
 * epel: ftp.astral.ro
 * extras: mirrors.vooservers.com
 * updates: mirrors.vooservers.com
Paket php-common-5.4.16-36.1.el7_2.1.x86_64 ist bereits in der neuesten Version installiert.

Datenbank anlegen:

Anmelden

[root@vlicinga002 ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 754
Server version: 5.5.47-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Datenbank und Datenbankuser anlegen

MariaDB [(none)]> CREATE DATABASE director CHARACTER SET 'utf8';
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON director.* TO director@localhost IDENTIFIED BY 'director';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye

 

Datenbankressouce in IcingaWeb2 anlegen

icinga-director-ressource (1)

icinga-director-ressource (2)

Beim anlegen der Ressouce ist es sehr wichtig den Zeichensatz „utf8“ einzutragen!

icinga-director-ressource (3)

 

icinga-director-ressource (4)

Icinga Director Modul für IcingaWeb2 installieren

Wechsel in das tmp Verzeichnis

[root@vlicinga002 ~]# cd /tmp/

Download Link des Icinga Director Moduls (https://github.com/Icinga/icingaweb2-module-director)

[root@vlicinga002 tmp]# git clone https://github.com/Icinga/icingaweb2-module-director.git
Klone nach 'icingaweb2-module-director'...
remote: Counting objects: 15764, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 15764 (delta 22), reused 0 (delta 0), pack-reused 15707
Empfange Objekte: 100% (15764/15764), 3.19 MiB | 397.00 KiB/s, done.
Löse Unterschiede auf: 100% (9606/9606), done.

Das Modul in das Icingaweb2 Modul-Verzeichnis verschieben - dabei ist es wichtig, das das Modul nur "director" genannt wird.
[root@vlicinga002 tmp]# mv /tmp/icingaweb2-module-director/ /usr/share/icingaweb2/modules/director

API-Feature aktivieren

[root@vlicinga002 tmp]# icinga2 api setup
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/vlicinga002.localhost.csr'.
information/base: Writing private key to '/etc/icinga2/pki/vlicinga002.localhost.key'.
information/base: Writing certificate signing request to '/etc/icinga2/pki/vlicinga002.localhost.csr'.
information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/vlicinga002.localhost.crt'.
information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'.
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.
Done.

Now restart your Icinga 2 daemon to finish the installation!

[root@vlicinga002 tmp]# systemctl restart icinga2.service

API Passwort für root auslesen

[root@vlicinga002 tmp]# cat /etc/icinga2/conf.d/api-users.conf |grep password
  password = "supersicher"

 

Icinga Director Modul aktivieren

icinga-director-modul (1)

icinga-director-modul (2)

Datenbankressouce zuweisen und Schema erstellen

icinga-director-modul (3)

icinga-director-modul (4)

Configuration des Moduls (Kickstarter) Name des Endpunks ist der Static Hostname.

Wichtig ist es den kompletten hostname „vlicinga002.localhost“ einzutragen!

Um diesen herauszufinden bitte wie folgt vorgehen:

[root@vlicinga002 tmp]# hostnamectl status
   Static hostname: vlicinga002.localhost
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 582c22167d60414b98f9192398267186
           Boot ID: 43d34f402ca548e98964c01e106bb31f
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-327.22.2.el7.x86_64
      Architecture: x86-64

icinga-director-modul (5)

Konfiguration sichern

icinga-director-modul (6)

Icinga Director ist aktiviert und kann sofort benutzt werden!

icinga-director-modul (7)