Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:icinga2_-_dashing

Icinga2 - Dashing

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.

Dashing ist ein Möglichkeit schöne Dashboards erstellen zu können. Icinga Dashing verwendet die Icinga2-API, um zu visualisieren, welcher Status der Überwachung gerade in Icinga ermittelt wurde. Es kombiniert mehrere beliebte Widgets und bietet auch die Möglichkeit für eigene Implementierung und Erweiterungen. Das Dashboard von Icinga Dashing, erlaubt auch das Einbetten der von Icinga2-Web bereitgestellten Host- und Service-Problemlisten als iframe.

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 Dashing sind folgende Komponenten erforderlich:

  • Lauffähige Version von Icinga 2 ab der API Version 2.6+
    • Siehe auch den internen Link Icinga2
  • Lauffähiger Datenbank-Server z.B. MariaDB
  • Lauffähiger Web-Server z.B. Apache HTTP Server
  • RPM-Paket ruby, Programmierumgebung mit der Icinga Dashing realisiert wurde.
    • Siehe auch den externen Link Ruby
  • RPM-Paket rubygem-bundler, eine Möglichkeit um Ruby Anwendung zu verwalten
    • Siehe auch den externen Link Bundler
  • RPM-Paket ruby-devel, Entwicklungsumgebung für Ruby um einige Abhängigkeiten auflösen zu können.
  • RPM-Paket nodejs, ist ein JavaScript-Laufzeitumgebung
    • Siehe auch den externen Link Node.js
  • RPM-Paket gcc-c++, Compiler-Umgebung für das gem-Paket - dashing und das darin enthaltene gem-Paket - eventmachine

Nachfolgende gems (welches das offizielle Paketsystem für die Programmiersprache Ruby ist) siehe nachfolgenden externen Link

müssen ebenfalls Installiert werden:

  • bundler
  • dashing
  • execjs

Vorbereitung

Zur Installation von Icinga Dashing, muss nachfolgendes Repository genutzt bzw. eingebunden werden:

Repository: EPEL

Nachfolgende Beschreibung bindet das Drittanbieter-Repository von EPEL ein, damit darüber die Installation von Node.js erfolgen kann.

Herunterladen

icinga2-dashing

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/dashing-icinga2/archive/master.zip
--2016-12-26 10:37:44--  https://github.com/Icinga/dashing-icinga2/archive/master.zip
Resolving github.com (github.com)... 192.30.253.113, 192.30.253.112
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/dashing-icinga2/zip/master [following]
--2016-12-26 10:37:46--  https://codeload.github.com/Icinga/dashing-icinga2/zip/master
Resolving codeload.github.com (codeload.github.com)... 192.30.253.121, 192.30.253.120
Connecting to codeload.github.com (codeload.github.com)|192.30.253.121|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 575833 (562K) [application/zip]
Saving to: ‘/tmp/master.zip’

100%[======================================>] 575,833      132KB/s   in 4.3s   

2016-12-26 10:37:53 (132 KB/s) - ‘/tmp/master.zip’ saved [575833/575833]

Installation

RPM-Pakete

Nachdem das Drittanbieter-Repository

erfolgreich eingebunden wurde, können mit nachfolgendem Befehl, die rpm-Pakete -

  • ruby
  • rubygem-bundler
  • ruby-devel
  • nodejs

und die Compiler-Umgebung und deren Abhängigkeiten

  • gcc-c++

installiert werden:

# yum install ruby rubygem-bundler ruby-devel nodejs
Loaded plugins: changelog, priorities
382 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 1:6.9.1-4.el7 will be installed
--> Processing Dependency: npm = 1:3.10.8-1.6.9.1.4.el7 for package: 1:nodejs-6.9.1-4.el7.x86_64
--> Processing Dependency: libuv >= 1:1.9.1 for package: 1:nodejs-6.9.1-4.el7.x86_64
--> Processing Dependency: libuv.so.1()(64bit) for package: 1:nodejs-6.9.1-4.el7.x86_64
---> Package ruby.x86_64 0:2.0.0.648-29.el7 will be installed
--> Processing Dependency: ruby-libs(x86-64) = 2.0.0.648-29.el7 for package: ruby-2.0.0.648-29.el7.x86_64
--> Processing Dependency: rubygem(bigdecimal) >= 1.2.0 for package: ruby-2.0.0.648-29.el7.x86_64
--> Processing Dependency: ruby(rubygems) >= 2.0.14.1 for package: ruby-2.0.0.648-29.el7.x86_64
--> Processing Dependency: libruby.so.2.0()(64bit) for package: ruby-2.0.0.648-29.el7.x86_64
---> Package ruby-devel.x86_64 0:2.0.0.648-29.el7 will be installed
---> Package rubygem-bundler.noarch 0:1.7.8-3.el7 will be installed
--> Processing Dependency: rubygem(thor) >= 0.19.0 for package: rubygem-bundler-1.7.8-3.el7.noarch
--> Processing Dependency: rubygem(net-http-persistent) for package: rubygem-bundler-1.7.8-3.el7.noarch
--> Running transaction check
---> Package libuv.x86_64 1:1.9.1-1.el7 will be installed
---> Package npm.x86_64 1:3.10.8-1.6.9.1.4.el7 will be installed
---> Package ruby-libs.x86_64 0:2.0.0.648-29.el7 will be installed
---> Package rubygem-bigdecimal.x86_64 0:1.2.0-29.el7 will be installed
---> Package rubygem-net-http-persistent.noarch 0:2.8-5.el7 will be installed
---> Package rubygem-thor.noarch 0:0.19.1-1.el7 will be installed
---> Package rubygems.noarch 0:2.0.14.1-29.el7 will be installed
--> Processing Dependency: rubygem(rdoc) >= 4.0.0 for package: rubygems-2.0.14.1-29.el7.noarch
--> Processing Dependency: rubygem(psych) >= 2.0.0 for package: rubygems-2.0.14.1-29.el7.noarch
--> Processing Dependency: rubygem(io-console) >= 0.4.2 for package: rubygems-2.0.14.1-29.el7.noarch
--> Running transaction check
---> Package rubygem-io-console.x86_64 0:0.4.2-29.el7 will be installed
---> Package rubygem-psych.x86_64 0:2.0.0-29.el7 will be installed
---> Package rubygem-rdoc.noarch 0:4.0.0-29.el7 will be installed
--> Processing Dependency: ruby(irb) = 2.0.0.648 for package: rubygem-rdoc-4.0.0-29.el7.noarch
--> Processing Dependency: rubygem(json) >= 1.7.7 for package: rubygem-rdoc-4.0.0-29.el7.noarch
--> Running transaction check
---> Package ruby-irb.noarch 0:2.0.0.648-29.el7 will be installed
---> Package rubygem-json.x86_64 0:1.7.7-29.el7 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package                       Arch     Version                    Repository
                                                                           Size
================================================================================
Installing:
 nodejs                        x86_64   1:6.9.1-4.el7              epel   4.6 M
 ruby                          x86_64   2.0.0.648-29.el7           base    68 k
 ruby-devel                    x86_64   2.0.0.648-29.el7           base   128 k
 rubygem-bundler               noarch   1.7.8-3.el7                base   147 k
Installing for dependencies:
 libuv                         x86_64   1:1.9.1-1.el7              epel    79 k
 npm                           x86_64   1:3.10.8-1.6.9.1.4.el7     epel   2.4 M
 ruby-irb                      noarch   2.0.0.648-29.el7           base    89 k
 ruby-libs                     x86_64   2.0.0.648-29.el7           base   2.8 M
 rubygem-bigdecimal            x86_64   1.2.0-29.el7               base    80 k
 rubygem-io-console            x86_64   0.4.2-29.el7               base    51 k
 rubygem-json                  x86_64   1.7.7-29.el7               base    76 k
 rubygem-net-http-persistent   noarch   2.8-5.el7                  base    22 k
 rubygem-psych                 x86_64   2.0.0-29.el7               base    78 k
 rubygem-rdoc                  noarch   4.0.0-29.el7               base   319 k
 rubygem-thor                  noarch   0.19.1-1.el7               base    52 k
 rubygems                      noarch   2.0.14.1-29.el7            base   216 k

Transaction Summary
================================================================================
Install  4 Packages (+12 Dependent packages)

Total download size: 11 M
Installed size: 39 M
Is this ok [y/d/N]: y
Downloading packages:
(1/16): libuv-1.9.1-1.el7.x86_64.rpm                       |  79 kB   00:00     
(2/16): npm-3.10.8-1.6.9.1.4.el7.x86_64.rpm                | 2.4 MB   00:00     
(3/16): nodejs-6.9.1-4.el7.x86_64.rpm                      | 4.6 MB   00:00     
(4/16): ruby-2.0.0.648-29.el7.x86_64.rpm                   |  68 kB   00:00     
(5/16): ruby-devel-2.0.0.648-29.el7.x86_64.rpm             | 128 kB   00:00     
(6/16): ruby-irb-2.0.0.648-29.el7.noarch.rpm               |  89 kB   00:00     
(7/16): rubygem-bigdecimal-1.2.0-29.el7.x86_64.rpm         |  80 kB   00:00     
(8/16): ruby-libs-2.0.0.648-29.el7.x86_64.rpm              | 2.8 MB   00:00     
(9/16): rubygem-bundler-1.7.8-3.el7.noarch.rpm             | 147 kB   00:00     
(10/16): rubygem-io-console-0.4.2-29.el7.x86_64.rpm        |  51 kB   00:00     
(11/16): rubygem-json-1.7.7-29.el7.x86_64.rpm              |  76 kB   00:00     
(12/16): rubygem-net-http-persistent-2.8-5.el7.noarch.rpm  |  22 kB   00:00     
(13/16): rubygem-psych-2.0.0-29.el7.x86_64.rpm             |  78 kB   00:00     
(14/16): rubygem-rdoc-4.0.0-29.el7.noarch.rpm              | 319 kB   00:00     
(15/16): rubygem-thor-0.19.1-1.el7.noarch.rpm              |  52 kB   00:00     
(16/16): rubygems-2.0.14.1-29.el7.noarch.rpm               | 216 kB   00:00     
--------------------------------------------------------------------------------
Total                                               15 MB/s |  11 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : ruby-libs-2.0.0.648-29.el7.x86_64                           1/16 
  Installing : rubygem-io-console-0.4.2-29.el7.x86_64                      2/16 
  Installing : rubygem-bigdecimal-1.2.0-29.el7.x86_64                      3/16 
  Installing : rubygem-json-1.7.7-29.el7.x86_64                            4/16 
  Installing : rubygem-psych-2.0.0-29.el7.x86_64                           5/16 
  Installing : ruby-irb-2.0.0.648-29.el7.noarch                            6/16 
  Installing : ruby-2.0.0.648-29.el7.x86_64                                7/16 
  Installing : rubygem-rdoc-4.0.0-29.el7.noarch                            8/16 
  Installing : rubygems-2.0.14.1-29.el7.noarch                             9/16 
  Installing : rubygem-thor-0.19.1-1.el7.noarch                           10/16 
  Installing : rubygem-net-http-persistent-2.8-5.el7.noarch               11/16 
  Installing : 1:libuv-1.9.1-1.el7.x86_64                                 12/16 
  Installing : 1:npm-3.10.8-1.6.9.1.4.el7.x86_64                          13/16 
  Installing : 1:nodejs-6.9.1-4.el7.x86_64                                14/16 
  Installing : rubygem-bundler-1.7.8-3.el7.noarch                         15/16 
  Installing : ruby-devel-2.0.0.648-29.el7.x86_64                         16/16 
  Verifying  : rubygems-2.0.14.1-29.el7.noarch                             1/16 
  Verifying  : ruby-libs-2.0.0.648-29.el7.x86_64                           2/16 
  Verifying  : ruby-devel-2.0.0.648-29.el7.x86_64                          3/16 
  Verifying  : 1:libuv-1.9.1-1.el7.x86_64                                  4/16 
  Verifying  : rubygem-thor-0.19.1-1.el7.noarch                            5/16 
  Verifying  : rubygem-bundler-1.7.8-3.el7.noarch                          6/16 
  Verifying  : rubygem-io-console-0.4.2-29.el7.x86_64                      7/16 
  Verifying  : ruby-irb-2.0.0.648-29.el7.noarch                            8/16 
  Verifying  : rubygem-bigdecimal-1.2.0-29.el7.x86_64                      9/16 
  Verifying  : rubygem-net-http-persistent-2.8-5.el7.noarch               10/16 
  Verifying  : rubygem-json-1.7.7-29.el7.x86_64                           11/16 
  Verifying  : 1:npm-3.10.8-1.6.9.1.4.el7.x86_64                          12/16 
  Verifying  : 1:nodejs-6.9.1-4.el7.x86_64                                13/16 
  Verifying  : rubygem-psych-2.0.0-29.el7.x86_64                          14/16 
  Verifying  : ruby-2.0.0.648-29.el7.x86_64                               15/16 
  Verifying  : rubygem-rdoc-4.0.0-29.el7.noarch                           16/16 

Installed:
  nodejs.x86_64 1:6.9.1-4.el7            ruby.x86_64 0:2.0.0.648-29.el7        
  ruby-devel.x86_64 0:2.0.0.648-29.el7   rubygem-bundler.noarch 0:1.7.8-3.el7  

Dependency Installed:
  libuv.x86_64 1:1.9.1-1.el7                                                    
  npm.x86_64 1:3.10.8-1.6.9.1.4.el7                                             
  ruby-irb.noarch 0:2.0.0.648-29.el7                                            
  ruby-libs.x86_64 0:2.0.0.648-29.el7                                           
  rubygem-bigdecimal.x86_64 0:1.2.0-29.el7                                      
  rubygem-io-console.x86_64 0:0.4.2-29.el7                                      
  rubygem-json.x86_64 0:1.7.7-29.el7                                            
  rubygem-net-http-persistent.noarch 0:2.8-5.el7                                
  rubygem-psych.x86_64 0:2.0.0-29.el7                                           
  rubygem-rdoc.noarch 0:4.0.0-29.el7                                            
  rubygem-thor.noarch 0:0.19.1-1.el7                                            
  rubygems.noarch 0:2.0.14.1-29.el7                                             

Complete!

Das rpm-Paket mit der Compiler-Umgebung gcc-c++ soll hier absichtlich extra installiert werden, damit dieses und dessen Abhängigkeiten nach der kompletten Installation wieder entfernt werden können.

# yum install gcc-c++
Loaded plugins: changelog, priorities
382 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package gcc-c++.x86_64 0:4.8.5-11.el7 will be installed
--> Processing Dependency: libstdc++-devel = 4.8.5-11.el7 for package: gcc-c++-4.8.5-11.el7.x86_64
--> Processing Dependency: gcc = 4.8.5-11.el7 for package: gcc-c++-4.8.5-11.el7.x86_64
--> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-c++-4.8.5-11.el7.x86_64
--> Processing Dependency: libmpc.so.3()(64bit) for package: gcc-c++-4.8.5-11.el7.x86_64
--> Running transaction check
---> Package gcc.x86_64 0:4.8.5-11.el7 will be installed
--> Processing Dependency: cpp = 4.8.5-11.el7 for package: gcc-4.8.5-11.el7.x86_64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-11.el7.x86_64
---> Package libmpc.x86_64 0:1.0.1-3.el7 will be installed
---> Package libstdc++-devel.x86_64 0:4.8.5-11.el7 will be installed
---> Package mpfr.x86_64 0:3.1.1-4.el7 will be installed
--> Running transaction check
---> Package cpp.x86_64 0:4.8.5-11.el7 will be installed
---> Package glibc-devel.x86_64 0:2.17-157.el7_3.1 will be installed
--> Processing Dependency: glibc-headers = 2.17-157.el7_3.1 for package: glibc-devel-2.17-157.el7_3.1.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.17-157.el7_3.1.x86_64
--> Running transaction check
---> Package glibc-headers.x86_64 0:2.17-157.el7_3.1 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-157.el7_3.1.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.17-157.el7_3.1.x86_64
--> Running transaction check
---> Package kernel-headers.x86_64 0:3.10.0-514.2.2.el7 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package              Arch        Version                    Repository    Size
================================================================================
Installing:
 gcc-c++              x86_64      4.8.5-11.el7               base         7.2 M
Installing for dependencies:
 cpp                  x86_64      4.8.5-11.el7               base         5.9 M
 gcc                  x86_64      4.8.5-11.el7               base          16 M
 glibc-devel          x86_64      2.17-157.el7_3.1           updates      1.1 M
 glibc-headers        x86_64      2.17-157.el7_3.1           updates      668 k
 kernel-headers       x86_64      3.10.0-514.2.2.el7         updates      4.8 M
 libmpc               x86_64      1.0.1-3.el7                base          51 k
 libstdc++-devel      x86_64      4.8.5-11.el7               base         1.5 M
 mpfr                 x86_64      3.1.1-4.el7                base         203 k

Transaction Summary
================================================================================
Install  1 Package (+8 Dependent packages)

Total download size: 38 M
Installed size: 84 M
Is this ok [y/d/N]: y
Downloading packages:
(1/9): cpp-4.8.5-11.el7.x86_64.rpm                         | 5.9 MB   00:00     
(2/9): gcc-4.8.5-11.el7.x86_64.rpm                         |  16 MB   00:01     
(3/9): gcc-c++-4.8.5-11.el7.x86_64.rpm                     | 7.2 MB   00:00     
(4/9): glibc-devel-2.17-157.el7_3.1.x86_64.rpm             | 1.1 MB   00:00     
(5/9): glibc-headers-2.17-157.el7_3.1.x86_64.rpm           | 668 kB   00:00     
(6/9): libmpc-1.0.1-3.el7.x86_64.rpm                       |  51 kB   00:00     
(7/9): kernel-headers-3.10.0-514.2.2.el7.x86_64.rpm        | 4.8 MB   00:00     
(8/9): libstdc++-devel-4.8.5-11.el7.x86_64.rpm             | 1.5 MB   00:00     
(9/9): mpfr-3.1.1-4.el7.x86_64.rpm                         | 203 kB   00:00     
--------------------------------------------------------------------------------
Total                                               19 MB/s |  38 MB  00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : mpfr-3.1.1-4.el7.x86_64                                      1/9 
  Installing : libmpc-1.0.1-3.el7.x86_64                                    2/9 
  Installing : cpp-4.8.5-11.el7.x86_64                                      3/9 
  Installing : libstdc++-devel-4.8.5-11.el7.x86_64                          4/9 
  Installing : kernel-headers-3.10.0-514.2.2.el7.x86_64                     5/9 
  Installing : glibc-headers-2.17-157.el7_3.1.x86_64                        6/9 
  Installing : glibc-devel-2.17-157.el7_3.1.x86_64                          7/9 
  Installing : gcc-4.8.5-11.el7.x86_64                                      8/9 
  Installing : gcc-c++-4.8.5-11.el7.x86_64                                  9/9 
  Verifying  : glibc-headers-2.17-157.el7_3.1.x86_64                        1/9 
  Verifying  : glibc-devel-2.17-157.el7_3.1.x86_64                          2/9 
  Verifying  : gcc-c++-4.8.5-11.el7.x86_64                                  3/9 
  Verifying  : mpfr-3.1.1-4.el7.x86_64                                      4/9 
  Verifying  : kernel-headers-3.10.0-514.2.2.el7.x86_64                     5/9 
  Verifying  : cpp-4.8.5-11.el7.x86_64                                      6/9 
  Verifying  : gcc-4.8.5-11.el7.x86_64                                      7/9 
  Verifying  : libstdc++-devel-4.8.5-11.el7.x86_64                          8/9 
  Verifying  : libmpc-1.0.1-3.el7.x86_64                                    9/9 

Installed:
  gcc-c++.x86_64 0:4.8.5-11.el7                                                 

Dependency Installed:
  cpp.x86_64 0:4.8.5-11.el7                                                     
  gcc.x86_64 0:4.8.5-11.el7                                                     
  glibc-devel.x86_64 0:2.17-157.el7_3.1                                         
  glibc-headers.x86_64 0:2.17-157.el7_3.1                                       
  kernel-headers.x86_64 0:3.10.0-514.2.2.el7                                    
  libmpc.x86_64 0:1.0.1-3.el7                                                   
  libstdc++-devel.x86_64 0:4.8.5-11.el7                                         
  mpfr.x86_64 0:3.1.1-4.el7                                                     

Complete!

:!: WICHTIG - Nach der erfolgreicher und kompletten Installation, könnten das rpm-Paket - gcc-c++ und dessen Abhängigkeiten auch wieder entfernt werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# yum remove gcc-c++ cpp gcc glibc-devel glibc-headers kernel-headers libmpc libstdc++-devel mpfr

GEM-Pakete

Nachdem die vorhergehenden rpm-Pakete, wie unter nachfolgendem internen Link beschrieben

installiert wurden, können auch die gem-Pakete nun installiert werden, was mit nachfolgendem Befehlen durchgeführt werden kann:

:!: HINWEIS - Damit die Installation nicht zu lange dauert und falls keine Dokumentation der gem-Pakete benötigt wird, ist es sinnvoll die Option –no-document bei der Installation zu verwenden!

bundler

# gem install bundler --no-document
Fetching: bundler-1.13.7.gem (100%)
Successfully installed bundler-1.13.7
1 gem installed

dashing

# gem install dashing --no-document
Fetching: sass-3.2.19.gem (100%)
Successfully installed sass-3.2.19
Fetching: coffee-script-source-1.12.2.gem (100%)
Successfully installed coffee-script-source-1.12.2
Fetching: execjs-2.0.2.gem (100%)
Successfully installed execjs-2.0.2
Fetching: coffee-script-2.2.0.gem (100%)
Successfully installed coffee-script-2.2.0
Fetching: rack-1.5.5.gem (100%)
Successfully installed rack-1.5.5
Fetching: tilt-1.4.1.gem (100%)
Successfully installed tilt-1.4.1
Fetching: rack-protection-1.5.3.gem (100%)
Successfully installed rack-protection-1.5.3
Fetching: sinatra-1.4.7.gem (100%)
Successfully installed sinatra-1.4.7
Fetching: backports-3.6.8.gem (100%)
Successfully installed backports-3.6.8
Fetching: rack-test-0.6.3.gem (100%)
Successfully installed rack-test-0.6.3
Fetching: multi_json-1.12.1.gem (100%)
Successfully installed multi_json-1.12.1
Fetching: sinatra-contrib-1.4.7.gem (100%)
Successfully installed sinatra-contrib-1.4.7
Fetching: eventmachine-1.2.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed eventmachine-1.2.1
Fetching: daemons-1.2.4.gem (100%)
Successfully installed daemons-1.2.4
Fetching: thin-1.6.4.gem (100%)
Building native extensions.  This could take a while...
Successfully installed thin-1.6.4
Fetching: thread_safe-0.3.5.gem (100%)
Successfully installed thread_safe-0.3.5
Fetching: tzinfo-1.2.2.gem (100%)
Successfully installed tzinfo-1.2.2
Fetching: rufus-scheduler-2.0.24.gem (100%)
Successfully installed rufus-scheduler-2.0.24
Fetching: hike-1.2.3.gem (100%)
Successfully installed hike-1.2.3
Fetching: sprockets-2.10.2.gem (100%)
Successfully installed sprockets-2.10.2
Fetching: dashing-1.3.7.gem (100%)
Successfully installed dashing-1.3.7
21 gems installed

execjs

# gem install execjs --no-document
Fetching: execjs-2.7.0.gem (100%)
Successfully installed execjs-2.7.0
1 gem installed

icinga2-dashing

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

heruntergeladene Datei, in das Zielverzeichnis

  • /usr/share/icinga2-dashing

entpackt werden:

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

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

# mv /usr/share/dashing-icinga2-master/ /usr/share/icinga2-dashing

Konfiguration

/etc/icinga2/conf.d/api-users.conf

Die Icinga2-API benötigt entweder „basic auth“ oder Client-Zertifikate für die Authentifizierung.

Nachfolgende API-User-Berechtigungen werden entsprechend den Anforderungen festgelegt. Standardmäßig werden nur Daten von den Endpunkten /v1/status und /v1/objects abgerufen, und daher werden auch keine Schreibberechtigungen benötigt.

Nachfolgende Ergänzungen in den Konfigurationsdatei /etc/icinga2/conf.d/api-users.conf müssen am Ende der Konfigurationsdatei angehängt werden, damit zur Icinga2-Konfiguration ein neues API-User-Objekt hinzugefügt wird:

(Komplette Konfigurationsdatei)

/**********************************************************************
 * The APIUser objects are used for authentication against the API.   *
 **********************************************************************/
 
object ApiUser "root" {
  password      = "supergeheim"
  // client_cn  = ""
 
  permissions   = [ "*" ]
}
 
object ApiUser "dashing" {
  password = "geheim"
  // client_cn  = ""
 
  permissions = [ "status/query", "objects/query/*" ]
}

Ergänzungen:

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

Hinzufügen eines neuen neues API-User-Objekts zur Icinga2-Konfiguration.

/usr/share/icinga2-dashing/config

Nachfolgende Konfigurationsdatei /usr/share/icinga2-dashing/config muss wie nachfolgend dargestellt angepasst werden. Es ist nur das Passwort abzuändern!:

(Komplette Konfigurationsdatei)

{
  "icinga2": {
    "api": {
      "host": "localhost",
      "port": 5665,
      "user": "dashing",
      "password": "geheim"
    }
  }
}

Erklärungen:

  • "password": "geheim"

Ändern des Passworts auf das zuvor in der Konfigurationsdatei /etc/icinga2/conf.d/api-users.conf gesetzten Passworts.

/usr/share/icinga2-dashing/restart-dashing

Nachfolgende Anpassungen sind nicht erforderlich, tragen aber meiner Meinung nach, zu einer besseren Systemintegration bei.

#!/bin/bash
 
#/******************************************************************************
# * Icinga 2 Dashing Restart Script                                            *
# * Copyright (C) 2016 Icinga Development Team (https://www.icinga.org)        *
# *                                                                            *
# * This program is free software; you can redistribute it and/or              *
# * modify it under the terms of the GNU General Public License                *
# * as published by the Free Software Foundation; either version 2             *
# * of the License, or (at your option) any later version.                     *
# *                                                                            *
# * This program is distributed in the hope that it will be useful,            *
# * but WITHOUT ANY WARRANTY; without even the implied warranty of             *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              *
# * GNU General Public License for more details.                               *
# *                                                                            *
# * You should have received a copy of the GNU General Public License          *
# * along with this program; if not, write to the Free Software Foundation     *
# * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.             *
# ******************************************************************************/
 
# Tachtler
# default: if [ -d '/usr/share/dashing-icinga2' ]; then
# default:   DASHING_PWD='/usr/share/dashing-icinga2'
if [ -d '/usr/share/icinga2-dashing' ]; then
  DASHING_PWD='/usr/share/icinga2i-dashing'
else
  DASHING_PWD=`pwd`
fi
 
DASHING_PORT=8005
# Tachtler
# default: DASHING_PID_FILE="tmp/pids/thin.pid"
DASHING_PID_FILE="/var/run/thin.pid"
# Tachtler
# default: DASHING_BIN=dashing
DASHING_BIN=/usr/local/bin/dashing
 
usage(){
cat << EOF
usage: $0 options
 This script restarts the Dashing daemon.
 OPTIONS:
    -h        Show this message
    -p        Port where Dashing will listen (defaults to 3030)
    -P        PID file path (defaults to tmp/pids/thin.pid)
    -D        Change to this directory before starting the daemon (defaults to current directory)
    -b        Path to the dashing binary (defaults to just 'dashing' from system path)
EOF
}
 
while getopts ":p:P:D:b:h" opt; do
  case $opt in
    h)
      usage
      exit 1
      ;;
    p)
      DASHING_PORT=$OPTARG
      ;;
    P)
      DASHING_PID_FILE=$OPTARG
      ;;
    D)
      DASHING_PWD=$OPTARG
      ;;
    b)
      DASHING_BIN=$OPTARG
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      usage
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      usage
      exit 1
      ;;
  esac
done
 
# ensure that dashing runs with utf8
export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
 
export PATH="/usr/local/bin:$PATH"
 
cd $DASHING_PWD
 
if [ -f "$DASHING_PID_FILE" ]; then
  kill -9 $(<"$DASHING_PID_FILE") > /dev/null 2>&1
  rm -f $DASHING_PID_FILE
fi
 
$DASHING_BIN start -d -p $DASHING_PORT --pid $DASHING_PID_FILE
ERR=$?
 
if [ $ERR != 0 ]; then
    echo "Restart failed. Bailing out."
    exit $ERR
fi
 
# dashing might take a while to start
while [ ! -f "$DASHING_PID_FILE" ]; do
    sleep 1
done
 
PID=$(<"$DASHING_PID_FILE")
 
echo "Restarted Dashing with PID $PID listening on port $DASHING_PORT."
exit $ERR

Erklärungen:

  • # Tachtler
    # default: if [ -d '/usr/share/dashing-icinga2' ]; then
    # default:   DASHING_PWD='/usr/share/dashing-icinga2'
    if [ -d '/usr/share/icinga2-dashing' ]; then
      DASHING_PWD='/usr/share/icinga2i-dashing'
    else
      DASHING_PWD=`pwd`
    fi

Standardmäßige Änderung des Pfades, da damit alle installierten icinga-Produkte mindestens mit dem Wort icinga beginnen.

  • # Tachtler
    # default: DASHING_PID_FILE="tmp/pids/thin.pid"
    DASHING_PID_FILE="/var/run/thin.pid"

PID-File sollte grundsätzlich unter /var/run beheimatet sein.

  • # Tachtler
    # default: DASHING_BIN=dashing
    DASHING_BIN=/usr/local/bin/dashing

Angabe des absoluten Pfads zum binary von Icinga Dashing

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.service
● icinga2.service - Icinga host/service/network monitoring system
   Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2016-12-26 10:53:37 CET; 16s ago
  Process: 32190 ExecStart=/usr/sbin/icinga2 daemon -d -e ${ICINGA2_ERROR_LOG} (code=exited, status=0/SUCCESS)
  Process: 32127 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS)
 Main PID: 32221 (icinga2)
   CGroup: /system.slice/icinga2.service
           ├─32212 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -...
           └─32221 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -...

Dec 26 10:53:36 server11.idmz.tachtler.net icinga2[32190]: [2016-12-26 10:53:...
Dec 26 10:53:36 server11.idmz.tachtler.net icinga2[32190]: [2016-12-26 10:53:...
Dec 26 10:53:36 server11.idmz.tachtler.net icinga2[32190]: [2016-12-26 10:53:...
Dec 26 10:53:36 server11.idmz.tachtler.net icinga2[32190]: [2016-12-26 10:53:...
Dec 26 10:53:36 server11.idmz.tachtler.net icinga2[32190]: [2016-12-26 10:53:...
Dec 26 10:53:36 server11.idmz.tachtler.net icinga2[32190]: [2016-12-26 10:53:...
Dec 26 10:53:36 server11.idmz.tachtler.net icinga2[32190]: [2016-12-26 10:53:...
Dec 26 10:53:36 server11.idmz.tachtler.net icinga2[32190]: [2016-12-26 10:53:...
Dec 26 10:53:36 server11.idmz.tachtler.net icinga2[32190]: [2016-12-26 10:53:...
Dec 26 10:53:37 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 Start und der Status des Icinga-Servers ist.

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

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

Systemkonfiguration

Abschließend ist es einmalig erforderlich alle benötigten RubyGems in den Systempfad zu installieren, was mit nachfolgendem Befehl durchgeführt werden kann:

# bundle install --system
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Fetching gem metadata from https://rubygems.org/.........
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies...
Rubygems 2.0.14.1 is not threadsafe, so your gems will be installed one at a time. 
Upgrade to Rubygems 2.1.0 or higher to enable parallel gem installation.
Using backports 3.6.8
Using coffee-script-source 1.12.2
Using execjs 2.0.2
Using daemons 1.2.4
Using rack 1.5.5
Using thread_safe 0.3.5
Using sass 3.2.19
Using tilt 1.4.1
Using multi_json 1.12.1
Using hike 1.2.3
Using eventmachine 1.2.1
Installing thor 0.19.4
Installing unf_ext 0.0.7.2 with native extensions
Installing json 2.0.2 with native extensions
Installing mime-types-data 3.2016.0521
Installing netrc 0.11.0
Using bundler 1.13.7
Using coffee-script 2.2.0
Using rack-protection 1.5.3
Using rack-test 0.6.3
Using tzinfo 1.2.2
Using sprockets 2.10.2
Using thin 1.6.4
Installing unf 0.1.4
Installing mime-types 3.1
Using sinatra 1.4.7
Using rufus-scheduler 2.0.24
Installing domain_name 0.5.20161129
Using sinatra-contrib 1.4.7
Installing http-cookie 1.0.3
Using dashing 1.3.7
Installing rest-client 2.0.0
Bundle complete! 5 Gemfile dependencies, 32 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

icinga2-dashing: Start

Jetzt kann der icinga2-dashing-Server mit nachfolgendem Befehle erstmalig gestartet werden:

# /usr/share/icinga2-dashing/restart-dashing 
Restarted Dashing with PID 10956 listening on port 8005.

icinga2-dashing: Erster Aufruf

Unter Nachfolgendem Link, kann nun Icinga Dashing aufgerufen werden:

und sollte standardmäßig eine Ausgabe wie die nachfolgende zur Ansicht bringen:

Icinga-Dashing

systemd Konfigurationen

systemd-Startskript

Nachfolgendes systemd-Startskript kann verwendet werden, um Icinga Dashing auch nach einem Neustart des Servers automatisiert zu starten:

Das systemd-Startskript sollte z.B. in nachfolgendem Verzeichnis mit nachfolgendem Namen angelegt werden:

  • /etc/systemd/system/icinga2-dashing.service

(Komplette Konfigurationsdatei)

[Unit]
Description=Icinga2-Dashing host/service/network monitoring system
After=syslog.target network.target postgresql.service mariadb.service carbon-cache.service icinga2.service

[Service]
Type=forking
WorkingDirectory=/usr/share/icinga2-dashing
ExecStart=/usr/local/bin/dashing start -d -p 8005 --pid /var/run/thin.pid
ExecStop=/usr/local/bin/dashing stop

[Install]
WantedBy=multi-user.target

Nach der Erstellung des systemd-Startskript, muss nachfolgender Befehl ausgeführt werden, um diese Änderung dem systemd auch bekannt zu machen:

# systemctl daemon-reload

Dienst/Deamon-Start einrichten

Um Icinga Dashing, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:

# systemctl enable icinga2-dashing.service
Created symlink from /etc/systemd/system/multi-user.target.wants/icinga2-dashing.service to /etc/systemd/system
/icinga2-dashing.service.

Eine Überprüfung, ob beim Neustart des Server der icinga2-dashing-Dienst/Daemon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# systemctl list-unit-files --type=service | grep -e icinga2-dashing.service
icinga2-dashing.service                       enabled
bzw.
# systemctl is-enabled icinga2-dashing.service
enabled

icinga2-dashing: systemd Start

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

# systemctl start icinga2-dashing.service

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

# systemctl status icinga2-dashing.service
● icinga2-dashing.service - Icinga2-Dashing host/service/network monitoring system
   Loaded: loaded (/etc/systemd/system/icinga2-dashing.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2016-12-27 16:12:54 CET; 4s ago
  Process: 31679 ExecStop=/usr/local/bin/dashing stop (code=exited, status=0/SUCCESS)
  Process: 1198 ExecStart=/usr/local/bin/dashing start -d -p 8005 --pid /var/run/thin.pid (code=exited, status=0/SUCCESS)
 Main PID: 1227 (bundle)
   CGroup: /system.slice/icinga2-dashing.service
           └─1227 thin server (0.0.0.0:8005)

Dec 27 16:12:53 server11.idmz.tachtler.net systemd[1]: Starting Icinga2-Dashi...
Dec 27 16:12:54 server11.idmz.tachtler.net systemd[1]: Started Icinga2-Dashin...
Hint: Some lines were ellipsized, use -l to show in full.

:!: HINWEIS - Auch ein Stoppen über das systemd-Skript ist nun möglich!

icingaweb2 einbinden

Nachfolgende Änderungen sind erforderlich, um das eigene und bereits lauffähige Icinga bzw. icingaweb2 - siehe auch nachfolgenden Internen Link

bei einer Host/Service-Meldung in die Anzeige von Icinga Dashing einzubinden.

/usr/share/icinga2-dashing/dashboards/icinga2.erb

Nachfolgende Änderungen müssen in der Konfigurationsdatei /usr/share/icinga2-dashing/dashboards/icinga2.erb durchgeführt werden:

(Nur relevanter Ausschnitt):

...
 
    <!-- Icinga Web 2 iFrame -->
    <li data-row="4" data-col="1" data-sizex="2" data-sizey="2">
      <!-- Tachtler -->
      <!-- default:  <div data-id="iframe" data-view="Iframe" data-url="http://192.168.33.5/icingaweb2/monitoring/list/hosts?host_problem=1&sort=host_severity&showFullscreen&showCompact"></div>
      -->
      <div data-id="iframe" data-view="Iframe" data-url="http://dashing-icinga2.tachtler.net/icingaweb2/monitoring/list/hosts?host_problem=1&sort=host_severity&showFullscreen&showCompact"></div>
    </li>
    <li data-row="4" data-col="3" data-sizex="2" data-sizey="2">
      <!-- Tachtler -->      
      <!-- default: <div data-id="iframe" data-view="Iframe" data-url="http://192.168.33.5/icingaweb2/monitoring/list/services?service_problem=1&sort=service_severity&dir=desc&showFullscreen&showCompact"></div>
      -->
      <div data-id="iframe" data-view="Iframe" data-url="http://dashing-icinga2.tachtler.net/icingaweb2/monitoring/list/services?service_problem=1&sort=service_severity&dir=desc&showFullscreen&showCompact"></div>
    </li>
  </ul>
 
</div>

Erklärung:

  •       <div data-id="iframe" data-view="Iframe" data-url="http://dashing-icinga2.tachtler.net/icingaweb2/monitoring/list/hosts?host_problem=1&sort=host_severity&showFullscreen&showCompact"></div>

Es muss jeweils die IP-Adresse 192.168.33.5 gegen die eigene URL zur Anzeige der Hosts mit Problemen ausgetauscht werden!

  •       <div data-id="iframe" data-view="Iframe" data-url="http://dashing-icinga2.tachtler.net/icingaweb2/monitoring/list/services?service_problem=1&sort=service_severity&dir=desc&showFullscreen&showCompact"></div>

Es muss jeweils die IP-Adresse 192.168.33.5 gegen die eigene URL zur Anzeige der Services mit Problemen ausgetauscht werden!

:!: HINWEIS - Falls der Webserver mit der X-Frame_option: „SAMEORIGIN“ betrieben wird, ist hier eine mögliche Lösung, die Einbindung von icingaweb2 als erreichbaren Alias zur Verfügung zu stellen, falls sich die icingaweb2 und dashing-icinga2 auf dem selben Webserver befinden!

Unter Nachfolgendem Link, kann nun Icinga Dashing aufgerufen werden:

und sollte angepasst um die Einbindung von icingaweb2 eine Ausgabe wie die nachfolgende zur Ansicht bringen:

Icinga-Dashing inklusive icingaweb2

Optische Modifikationen

/usr/share/icinga2-dashing/dashboards/icinga2.erb

Durch Aufhebung des Kommentars am Anfang der Konfigurationsdatei

  • /usr/share/icinga2-dashing/dashboards/icinga2.erb

können Werte aus der eigentlichen Konfigurationsdatei

  • /usr/share/icinga2-dashing/assets/javascripts/application.coffee

überschrieben werden:

Nachfolgendes Beispiel ändert die anzuzeigenden Spalten von 6 auf 4:

(Nur relevanter Ausschnitt)

Vorher:

<!--
<script type='text/javascript'>
$(function() {
  // These settings override the defaults set in application.coffee. You can do this on a per dashboard basis.
  Dashing.widget_base_dimensions ||= [300, 420]
  Dashing.numColumns ||= 6
});
</script>
-->
...

Nachher:

<!-- Tachtler - enabled - -->
<script type='text/javascript'>
$(function() {
  // These settings override the defaults set in application.coffee. You can do this on a per dashboard basis.
  Dashing.widget_base_dimensions = [300, 300]
  Dashing.numColumns = 4
});
</script>
<!-- Tachtler - enabled - -->
...

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/icinga2_-_dashing.txt · Zuletzt geändert: 2016/12/28 20:29 von klaus