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
.
Beschreibung | Externer Link |
---|---|
Homepage | https://github.com/Icinga/dashing-icinga2 |
Dokumentation | https://github.com/Icinga/dashing-icinga2 https://www.icinga.com/2016/01/28/awesome-dashing-dashboards-with-icinga-2/ https://gist.github.com/hussfelt/a6fe71ebd7cce327df29 |
Andere HowTos | http://brunner-it.de/2016/08/04/icinga2-dashing-installieren/ |
Download | https://github.com/Icinga/dashing-icinga2 |
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
Als Voraussetzung für die Installation von Icinga Dashing sind folgende Komponenten erforderlich:
ruby
, Programmierumgebung mit der Icinga Dashing realisiert wurde. rubygem-bundler
, eine Möglichkeit um Ruby Anwendung zu verwaltenruby-devel
, Entwicklungsumgebung für Ruby um einige Abhängigkeiten auflösen zu können.nodejs
, ist ein JavaScript-Laufzeitumgebunggcc-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
* [[https://rubygems.org/?locale=de RubyGems]]
müssen ebenfalls Installiert werden:
* bundler
* dashing
* execjs
===== Vorbereitung =====
Zur Installation von Icinga Dashing, muss nachfolgendes Repository genutzt bzw. eingebunden werden:
* EPEL-Repository
==== Repository: EPEL ====
Nachfolgende Beschreibung bindet das Drittanbieter-Repository von EPEL ein, damit darüber die Installation von Node.js erfolgen kann.
* Siehe nachfolgenden internen Link: EPEL CentOS 7
===== 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
* EPEL CentOS 7
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:
<code>
# 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!
</code>
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**.
<code>
# 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!
</code>
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
* Icinga2 - Dashing - Installation - RPM-Pakete
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
* Icinga2 - Dashing - Herunterladen - icinga2-dashing
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/icinga2.json ====
Nachfolgende Konfigurationsdatei /usr/share/icinga2-dashing/config/icinga2.json
muss wie nachfolgend dargestellt angepasst werden. Es ist das password und die url abzuändern!:
(Komplette Konfigurationsdatei)
{
"icinga2": {
"api": {
"host": "localhost",
"port": 5665,
"user": "dashing",
"password": "geheim"
}
},
"icingaweb2": {
"url": "http://dashing-icinga2.tachtler.net/icingaweb2"
},
"dashboard": {
"show_only_hard_state_problems": false
}
}
Erklärungen:
*
"password": "geheim"
Ändern des Passworts auf das zuvor in der Konfigurationsdatei /etc/icinga2/conf.d/api-users.conf
gesetzten Passworts.
*
"url": "http://dashing-icinga2.tachtler.net/icingaweb2"
Ändern der URL um das eigene und bereits lauffähige Icinga bzw. icingaweb2 - siehe auch nachfolgenden Internen Link
* Icinga Web 2
bei einer Host/Service-Meldung in die Anzeige von Icinga Dashing einzubinden.
*
},
"dashboard": {
"show_only_hard_state_problems": false
}
Beeinflusst die Anzeige dahingehend, dass nicht nur „Harte“ Probleme angezeigt werden, sondern auch Probleme im Status „Soft“.
==== /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/icinga2-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/icinga2-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:
* http://localhost:8005
und sollte standardmäßig eine Ausgabe wie die nachfolgende zur Ansicht bringen:
Version 2.7.x:
Version 2.8.1:
===== 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
* Icinga Web 2
bei einer Host/Service-Meldung in die Anzeige von Icinga Dashing einzubinden.
==== /usr/share/icinga2-dashing/dashboards/icinga2.erb ====
HINWEIS - NUR bis Version 2.7.x erforderlich, NICHT mehr ab Version 2.8.1 !!!
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:
* http://localhost:8005
und sollte angepasst um die Einbindung von icingaweb2
eine Ausgabe wie die nachfolgende zur Ansicht bringen:
===== Optische Modifikationen =====
==== /usr/share/icinga2-dashing/dashboards/icinga2.erb ====
HINWEIS - NUR bis Version 2.7.x erforderlich, NICHT mehr ab Version 2.8.1 !!!
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 - -->
...
HINWEIS - AB bis Version 2.11.x erforderlich !!!
Änderung der Zeitzine in der Konfigurationsdatei
* /usr/share/icinga2-dashing/dashboards/icinga2.erb
Nachfolgendes Beispiel ändert die Zeitzone:
(Nur relevanter Ausschnitt)
Vorher:
<li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
<div data-view="Clock" data-title="UTC" data-timezone="UTC"></div>
</li>
Nachher:
<li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
<!-- Tachtler -->
<!-- default: <div data-view="Clock" data-title="UTC" data-timezone="UTC"></div> -->
<div data-view="Clock" data-title="Date/Time" data-timezone="Europe/Berlin"></div>
</li>