Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| linux:icinga:docker-stack [2025/03/13 18:27] – adi | linux:icinga:docker-stack [2025/03/21 19:05] (aktuell) – [Graphite] adi | ||
|---|---|---|---|
| Zeile 39: | Zeile 39: | ||
| Danach auf dem Docker-Host den Ordner für die eigenen Checks erstellen und Checks dort ablegen. | Danach auf dem Docker-Host den Ordner für die eigenen Checks erstellen und Checks dort ablegen. | ||
| <code bash> | <code bash> | ||
| + | |||
| + | Hier ein Check zum Überwachen von QNap-NAS (Quelle: siehe Inhalt): | ||
| + | < | ||
| + | ############################# | ||
| + | # | ||
| + | # | ||
| + | # special thnaks to | ||
| + | # Nicola Bandini n.bandini@gmail.com | ||
| + | #			Tom Lesniak and Hugo Geijteman | ||
| + | # for the nice and useful inspiratipon | ||
| + | # | ||
| + | # This progmem 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; | ||
| + | # | ||
| + | # This progmem 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. | ||
| + | # GNU General Public License for more details. | ||
| + | # | ||
| + | # contact the author directly for more information at: matthias@xcontrol.de | ||
| + | ########################################################################################## | ||
| + | |||
| + | #Version 1.40 | ||
| + | |||
| + | |||
| + | usage=" | ||
| + | -ver Check_qnap Version | ||
| + | -C community default public | ||
| + | -t timeout default 10 secdons | ||
| + | -v snmpversion default 2c | ||
| + | -p snmpport defauilt 161 | ||
| + | -a checks you can use | ||
| + | cpuload: | ||
| + | cputemp: | ||
| + | systemp: | ||
| + | hdtemp: | ||
| + | diskusage: | ||
| + | mem: check´s the mem usage in perent | ||
| + | volstatus: | ||
| + | fan: check´s the Fan Speed | ||
| + | hdstatus: | ||
| + | cachediskstatus: | ||
| + | lunstatus: | ||
| + | raidstatus: | ||
| + | powerstatus: | ||
| + | sysinfo: | ||
| + | example | ||
| + | |||
| + | check_qanp -H 192.168.0.2 -a mem | ||
| + | |||
| + | responce: OK: Memory Total=15976MB used=9177MB free: | ||
| + | |||
| + | or | ||
| + | |||
| + | check_qanp -H myqnap.domain.com -C public -v 1 -p 123 -a cputemp -u F -w 40 -c 45 -t 60 | ||
| + | checked host myqnap.domain.com | ||
| + | community public | ||
| + | snmpversion 1 | ||
| + | snmpport 123 | ||
| + | check cpu Temperature | ||
| + | unit fahrenheit | ||
| + | warning 40 F | ||
| + | critical 45 F | ||
| + | timeout 60 seconds | ||
| + | |||
| + | " | ||
| + | |||
| + | while getopts H: | ||
| + | do | ||
| + | case $option in | ||
| + | H) hostaddress=$OPTARG;; | ||
| + | b) version=$OPTARG;; | ||
| + | C) community=$OPTARG;; | ||
| + | t) timeout=$OPTARG;; | ||
| + | v) snmpversion=$OPTARG;; | ||
| + | p) snmpport=$OPTARG;; | ||
| + | a) check=$OPTARG;; | ||
| + | w) warning=$OPTARG;; | ||
| + | c) critical=$OPTARG;; | ||
| + | u) unit=$OPTARG;; | ||
| + | h) help=1;; | ||
| + | esac | ||
| + | done | ||
| + | |||
| + | check() | ||
| + | { | ||
| + | |||
| + | if [[ " | ||
| + | echo " | ||
| + | exit; | ||
| + | fi | ||
| + | |||
| + | if  [[ -z " | ||
| + | echo " | ||
| + | ** Hostaddress and checkprocedure are mandatory ** | ||
| + | " | ||
| + | echo " | ||
| + | exit; | ||
| + | fi | ||
| + | |||
| + | } | ||
| + | check | ||
| + | |||
| + | if [[ -z " | ||
| + | community=public; | ||
| + | fi | ||
| + | |||
| + | if [[ -z " | ||
| + | timeout=10; | ||
| + | fi | ||
| + | |||
| + | if [[ -z " | ||
| + | snmpversion=2c; | ||
| + | fi | ||
| + | |||
| + | if [[ -z " | ||
| + | snmpport=161; | ||
| + | fi | ||
| + | |||
| + | if [[ -z " | ||
| + | warning=80; | ||
| + | fi | ||
| + | |||
| + | if [[ -z " | ||
| + | critical=90; | ||
| + | fi | ||
| + | |||
| + | if [[ -z " | ||
| + | unit=C; | ||
| + | fi | ||
| + | |||
| + | if [[ " | ||
| + | var1=" | ||
| + | if [[ " | ||
| + | var2=20 | ||
| + | var3=90 | ||
| + | else | ||
| + | var2=20 | ||
| + | var3=60 | ||
| + | fi | ||
| + | else | ||
| + | var1=" | ||
| + | if [[ " | ||
| + | var2=32 | ||
| + | var3=194 | ||
| + | else | ||
| + | var=32 | ||
| + | var=140 | ||
| + | fi | ||
| + | fi | ||
| + | |||
| + | output="" | ||
| + | niu=0 | ||
| + | count=0 | ||
| + | counter=0 | ||
| + | status="" | ||
| + | criticalqty=0 | ||
| + | warningqty=0 | ||
| + | okqty=0 | ||
| + | avg=0 | ||
| + | |||
| + | mysnmpcheck=" | ||
| + | |||
| + | |||
| + | # DISKUSAGE | ||
| + | |||
| + | if [[ " | ||
| + | capacity=$($mysnmpcheck 1.3.6.1.4.1.24681.1.2.17.1.4.1 | awk ' | ||
| + | free=$($mysnmpcheck 1.3.6.1.4.1.24681.1.2.17.1.5.1 | awk ' | ||
| + | unit=$($mysnmpcheck 1.3.6.1.4.1.24681.1.2.17.1.4.1 | awk ' | ||
| + | unit2=$($mysnmpcheck 1.3.6.1.4.1.24681.1.2.17.1.5.1 | awk ' | ||
| + | |||
| + | if [[ " | ||
| + | factor=$(echo " | ||
| + | elif [[ " | ||
| + | factor=$(echo " | ||
| + | else | ||
| + | factor=$(echo " | ||
| + | fi | ||
| + | |||
| + | if [[ " | ||
| + | factor2=$(echo " | ||
| + | elif [[ " | ||
| + | factor2=$(echo " | ||
| + | else | ||
| + | factor2=$(echo " | ||
| + | fi | ||
| + | |||
| + | capacitybytes=$(echo " | ||
| + | freebytes=$(echo " | ||
| + | usedbytes=$(echo " | ||
| + | used=$(echo " | ||
| + | usedperc=$(echo " | ||
| + | freeperc=$(echo " | ||
| + | |||
| + | output=" | ||
| + | |||
| + | if [[ $usedperc -ge $critical ]]; then | ||
| + | echo " | ||
| + | exit 2 | ||
| + | elif [[ $usedperc -ge $warning ]]; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | else | ||
| + | echo "OK: " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # CPULOAD | ||
| + | elif [[ " | ||
| + | cpuload=$($mysnmpcheck 1.3.6.1.4.1.24681.1.2.1.0 | awk ' | ||
| + | |||
| + | output=" | ||
| + | |||
| + | if [[ $cpuload -ge $critical ]]; then | ||
| + | echo " | ||
| + | exit 2 | ||
| + | elif [[ $cpuload -ge $warning ]]; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | else | ||
| + | echo "OK: " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # CPUTEMP | ||
| + | elif [[ " | ||
| + | temp=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.5.0 | awk ' | ||
| + | |||
| + | output=" | ||
| + | |||
| + | if [[ $temp -ge $critical ]]; then | ||
| + | echo " | ||
| + | exit 2 | ||
| + | elif [[ $temp -ge $warning ]]; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | else | ||
| + | echo "OK: " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # System Temperature | ||
| + | elif [[ " | ||
| + | |||
| + | temp=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.6.0 | awk ' | ||
| + | |||
| + | output=" | ||
| + | |||
| + | if [[ $temp -ge $critical ]]; then | ||
| + | echo " | ||
| + | exit 2 | ||
| + | |||
| + | elif [[ $temp -ge $warning ]]; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | else | ||
| + | echo "OK: " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # HD Temperature | ||
| + | elif [[ " | ||
| + | count=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.10.0 | awk ' | ||
| + | |||
| + | for (( c=1; c< | ||
| + | do | ||
| + | |||
| + | temp=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.11.1.3.$c | awk ' | ||
| + | |||
| + | if [[ " | ||
| + | crt=" | ||
| + | criticalqty=$(echo " | ||
| + | avg=$(echo " | ||
| + | elif [[ " | ||
| + | wrn=" | ||
| + | warningqty=$(echo " | ||
| + | avg=$(echo " | ||
| + | else | ||
| + | okqty=$(echo " | ||
| + | avg=$(echo " | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | avg=$(echo $avg/$count | bc ) | ||
| + | |||
| + | if [[ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | elif [[ " | ||
| + | echo " | ||
| + | exit 1 | ||
| + | else | ||
| + | echo "OK: $okqty HD´s Average temperature= $avg $unit|Average-HD-temp=$avg$unit; | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # Free mem | ||
| + | elif [[ " | ||
| + | total=$($mysnmpcheck 1.3.6.1.4.1.24681.1.2.2.0 | awk ' | ||
| + | used=$($mysnmpcheck 1.3.6.1.4.1.24681.1.2.3.0 | awk ' | ||
| + | perc=$(echo " | ||
| + | unit=$($mysnmpcheck 1.3.6.1.4.1.24681.1.2.2.0 | awk ' | ||
| + | free=$(echo " | ||
| + | |||
| + | output=" | ||
| + | |||
| + | if [[ $perc -ge $critical ]]; then | ||
| + | echo " | ||
| + | exit 2 | ||
| + | elif [[ $perc -ge $warning ]]; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | else | ||
| + | echo "OK: " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # Volumestatus | ||
| + | elif [[ " | ||
| + | count=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.16.0 | awk ' | ||
| + | |||
| + | for (( c=1; c< | ||
| + | do | ||
| + | status=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.17.1.6.$c | awk ' | ||
| + | if [[ $status == " | ||
| + | okqty=$(echo " | ||
| + | elif [[ $status == " | ||
| + | warningqty=$(echo " | ||
| + | else | ||
| + | criticalqty=$(echo " | ||
| + | fi | ||
| + | |||
| + | capacity=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.17.1.4.$c | awk ' | ||
| + | free=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.17.1.5.$c | awk ' | ||
| + | unit=$($mysnmpcheck 1.3.6.1.4.1.24681.1.2.17.1.4.$c | awk ' | ||
| + | unit2=$($mysnmpcheck 1.3.6.1.4.1.24681.1.2.17.1.5.$c | awk ' | ||
| + | if [[ " | ||
| + | factor=$(echo " | ||
| + | elif [[ " | ||
| + | factor=$(echo " | ||
| + | else | ||
| + | factor=$(echo " | ||
| + | fi | ||
| + | |||
| + | if [[ " | ||
| + | factor2=$(echo " | ||
| + | elif [[ " | ||
| + | factor2=$(echo " | ||
| + | else | ||
| + | factor2=$(echo " | ||
| + | fi | ||
| + | |||
| + | capacitybytes=$(echo " | ||
| + | freebytes=$(echo " | ||
| + | usedbytes=$(echo " | ||
| + | used=$(echo " | ||
| + | usedperc=$(echo " | ||
| + | freeperc=$(echo " | ||
| + | |||
| + | if [[ $usedperc -ge $critical ]]; then | ||
| + | crt=" | ||
| + | criticalqty=$(echo " | ||
| + | elif [[ $perc -ge $warning ]]; then | ||
| + | wrn=" | ||
| + | warningqty=$(echo " | ||
| + | fi | ||
| + | |||
| + | if [[ $c -lt $count ]]; then | ||
| + | output=" | ||
| + | else | ||
| + | output=" | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | if [[ $criticalqty -ge 1 ]]; then | ||
| + | echo " | ||
| + | exit 2 | ||
| + | elif [[ $warningqty -ge 1 ]]; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | else | ||
| + | echo "OK: $okqty Volumes, $output|Used=$usedperc%; | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # Fan | ||
| + | elif [[ " | ||
| + | count=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.14.0 | awk ' | ||
| + | |||
| + | for (( c=1; c< | ||
| + | do | ||
| + | speed=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.15.1.3.$c | awk ' | ||
| + | |||
| + | if [[ $speed -le 5000 ]]; then | ||
| + | okqty=$(echo " | ||
| + | avg=$(echo " | ||
| + | else | ||
| + | crt=" | ||
| + | criticalqty=$(echo " | ||
| + | avg=$(echo " | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | avg=$(echo $avg/$count | bc ) | ||
| + | |||
| + | if [[ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | else | ||
| + | echo "OK Fans $okqty Average Speed=$avg RPM|Average-Speed=$avg RPM; | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # HD Status | ||
| + | elif [[ " | ||
| + | count=$($mysnmpcheck .1.3.6.1.4.1.24681.1.2.10.0 | awk ' | ||
| + | |||
| + | for (( c=1; c< | ||
| + | do | ||
| + |  | ||
| + | |||
| + | if [[ $status == " | ||
| + |  | ||
| + | elif [[ " | ||
| + |  | ||
| + | else | ||
| + |  | ||
| + |  | ||
| + | fi | ||
| + | done | ||
| + | if [[ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | else | ||
| + | echo "OK: Online Disk $okqty, HD status = GOOD, Free Slot $niu" | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # Cachedisstatus | ||
| + | elif [[ " | ||
| + | count=$($mysnmpcheck .1.3.6.1.4.1.24681.1.4.1.1.1.1.6.1.0 | awk ' | ||
| + | |||
| + | for (( c=1; c< | ||
| + | do | ||
| + | status=$($mysnmpcheck .1.3.6.1.4.1.24681.1.4.1.1.1.1.6.2.1.4.$c | awk ' | ||
| + |  | ||
| + | if [[ " | ||
| + | okqty=$(echo " | ||
| + | else | ||
| + | crt=" | ||
| + | criticalqty=$(echo " | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | if [[ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | else | ||
| + | echo "OK: Cachedisk $okqty " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # LUN Status | ||
| + | elif [[ " | ||
| + | count=$($mysnmpcheck .1.3.6.1.4.1.24681.1.4.1.1.2.1.10.1.0 | awk ' | ||
| + | |||
| + | for (( c=1; c< | ||
| + | do | ||
| + |  | ||
| + | |||
| + | if [[ $status == " | ||
| + |  | ||
| + | else | ||
| + |  | ||
| + |  | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | if [[ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | else | ||
| + | echo "OK: LUN´s $okqty" | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # raid Status | ||
| + | elif [[ " | ||
| + | count=$($mysnmpcheck | ||
| + | |||
| + | for (( c=1; c< | ||
| + | do | ||
| + |  | ||
| + | |||
| + | if [[ $status == " | ||
| + |  | ||
| + | else | ||
| + |  | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | if [[ " | ||
| + | echo " | ||
| + | criticalqty=$(echo " | ||
| + | exit 2 | ||
| + | else | ||
| + | echo "OK: Raid $okqty Ready" | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # Power stuply status | ||
| + | elif [[ " | ||
| + | count=$($mysnmpcheck .1.3.6.1.4.1.24681.1.4.1.1.1.1.3.1.0 | awk ' | ||
| + | |||
| + | for (( c=1; c< | ||
| + | do | ||
| + | status=$($mysnmpcheck .1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.4.$c | awk ' | ||
| + |  | ||
| + | if [[ " | ||
| + | okqty=$(echo " | ||
| + | else | ||
| + | crt=" | ||
| + | criticalqty=$(echo " | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | if [[ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | else | ||
| + | echo "OK: Powersupply $okqty " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | #Model | ||
| + | elif [[ " | ||
| + | model=$($mysnmpcheck | ||
| + | hdnum=$($mysnmpcheck | ||
| + | count=$($mysnmpcheck | ||
| + | name=$($mysnmpcheck | ||
| + | firmware=$($mysnmpcheck | ||
| + | netuptime=$($mysnmpcheck .1.3.6.1.2.1.1.3.0 | awk ' | ||
| + | sysuptime=$($mysnmpcheck .1.3.6.1.2.1.25.1.1.0 | awk ' | ||
| + | |||
| + | echo NAS $name, Model $model, Firmware $firmware, Max HD number $hdnum, No. volume $count, system Uptime $sysuptime, Network Uptime $netuptime | ||
| + | exit 0 | ||
| + | |||
| + | |||
| + | # | ||
| + | # | ||
| + | else | ||
| + | echo -e " | ||
| + | fi | ||
| + | exit 0</ | ||
| Eigene Icinga-Constants erstellen. | Eigene Icinga-Constants erstellen. | ||
| Zeile 46: | Zeile 602: | ||
| < | < | ||
| const CustomPluginDir = " | const CustomPluginDir = " | ||
| - | |||
| - | Eigene Icinga-Service Konfiguration erstellen. | ||
| - | <code bash>/ | ||
| - | |||
| - | Inhalt am Beispiel vom Check für QNap-Nas: | ||
| - | < | ||
| - | import " | ||
| - | command = [ CustomPluginDir + "/ | ||
| - | arguments += { | ||
| - | " | ||
| - | description = "Host name, IP Address, or unix socket (must be an absolute path)" | ||
| - | value = " | ||
| - | } | ||
| - | " | ||
| - | description = " | ||
| - | value = " | ||
| - | } | ||
| - | " | ||
| - | description = "SNMP protocol version (defalt: 2c)" | ||
| - | value = " | ||
| - | } | ||
| - | " | ||
| - | description = "Port number (default: 161)" | ||
| - | value = " | ||
| - | } | ||
| - | " | ||
| - | description = " | ||
| - | value = " | ||
| - | } | ||
| - | " | ||
| - | description = " | ||
| - | value = " | ||
| - | } | ||
| - | } | ||
| - | vars.check_address = { | ||
| - | arguments = [ ] | ||
| - | deprecated = false | ||
| - | name = "< | ||
| - | side_effect_free = false | ||
| - | type = " | ||
| - | } | ||
| - | vars.check_ipv4 = false | ||
| - | vars.check_ipv6 = false | ||
| - | vars.qnap_address = " | ||
| - | } | ||
| - | </ | ||
| Nun noch den Icinga stack neu starten. | Nun noch den Icinga stack neu starten. | ||
| Zeile 98: | Zeile 608: | ||
| Jetzt kann der neu definierte Check im Director normal verwendet werden. | Jetzt kann der neu definierte Check im Director normal verwendet werden. | ||
| + | |||
| + | - neues Kommando erstellen | ||
| + | - Reiter Kommando | ||
| + | - **Kommandotyp**: | ||
| + | - **Kommandoname**: | ||
| + | - **Kommando**: | ||
| + | - Reiter Arguments | ||
| + | - Argument " | ||
| + | - **Argumentname**: | ||
| + | - **Beschreibung**: | ||
| + | - **Werttyp**: | ||
| + | - **Wert**: '' | ||
| + | - **Position**: | ||
| + | - **Bedingungsformat**: | ||
| + | - **Benötigt**: | ||
| + | - Argument " | ||
| + | - **Argumentname**: | ||
| + | - **Beschreibung**: | ||
| + | - **Werttyp**: | ||
| + | - **Wert**: '' | ||
| + | - **Position**: | ||
| + | - **Bedingungsformat**: | ||
| + | - **Benötigt**: | ||
| + | - Argument " | ||
| + | - **Argumentname**: | ||
| + | - **Beschreibung**: | ||
| + | - **Werttyp**: | ||
| + | - **Wert**: '' | ||
| + | - **Position**: | ||
| + | - **Bedingungsformat**: | ||
| + | - **Benötigt**: | ||
| + | - Neue Datenfelder anlegen | ||
| + | - Datenfeld " | ||
| + | - **Feldname**: | ||
| + | - **Beschriftung**: | ||
| + | - **Datentyp**: | ||
| + | - **Sichtbarkeit**: | ||
| + | - Datenfeld " | ||
| + | - **Feldname**: | ||
| + | - **Beschriftung**: | ||
| + | - **Datentyp**: | ||
| + | - **Sichtbarkeit**: | ||
| + | - Datenfeld " | ||
| + | - **Feldname**: | ||
| + | - **Beschriftung**: | ||
| + | - **Datentyp**: | ||
| + | - **Sichtbarkeit**: | ||
| + | - neue Service Vorlage erstellen | ||
| + | - hier das Check-Kommando " | ||
| + | - Reiter " | ||
| + | - hier die Felder " | ||
| + | - Reiter " | ||
| + | - das Feld " | ||
| + | - neue Host Vorlage erstellen | ||
| + | - hier das Feld " | ||
| + | - neuen Service, z.B. für CpuLoad, anlegen | ||
| + | - **Importe**: | ||
| + | - **Host**: die Host Vorlage die zuvor angelegt wurde | ||
| + | - **qnap_argument**: | ||
| + | |||
| + | ===== Notifications ===== | ||
| + | Damit Icinga Benachrichtungen per Mail senden kann muss man sich eine '' | ||
| + | Diese steuert den lokalen Mailbefehl '' | ||
| + | <code bash>cd / | ||
| + | mkdir -p etc_data/ | ||
| + | vi etc_data/ | ||
| + | |||
| + | Hier diesen Inhalt einfügen und nach belieben anpassen. | ||
| + | < | ||
| + | # On this port, TLS is activated via STARTTLS. | ||
| + | defaults | ||
| + | tls on | ||
| + | # | ||
| + | tls_trust_file | ||
| + | logfile | ||
| + | # | ||
| + | |||
| + | # Define a mail account | ||
| + | account | ||
| + | # Host name of the SMTP server | ||
| + | host            < | ||
| + | port            < | ||
| + | tls_starttls | ||
| + | # Envelope-from address | ||
| + | from            < | ||
| + | # Authentication | ||
| + | auth on | ||
| + | user            < | ||
| + | # | ||
| + | passwordeval | ||
| + | |||
| + | account default: < | ||
| + | |||
| + | Dann erstellt man sich die verschlüsslete Datei mit dem Passwort. | ||
| + | <code bash>vi etc_data/ | ||
| + | Hier das Passwort einfügen und danach verschlüsseln. | ||
| + | <code bash>gpg -c .msmtp-cred.txt</ | ||
| + | Die Passphrase merken, wird im Container jedes mal wenn er neu gestartet wurde abgefragt. | ||
| + | Möchte man gpg nicht verwenden, dann einfach wie oben beschrieben das Passwort als Plaintext einfügen. | ||
| + | |||
| + | Den Inhalt kann man so prüfen. | ||
| + | <cocde bash>gpg -d --no-tty -q .msmtp-cred.txt.gpg</ | ||
| + | |||
| + | Die beiden Dateien '' | ||
| + | Dazu in der " | ||
| + | < | ||
| + | - ./ | ||
| + | |||
| + | Jetzt noch die Konfiguration bekannt machen. | ||
| + | <code bash> | ||
| + | |||
| + | Die Grundlage zum Senden von Mails ist nun vorhanden. | ||
| + | Man kann im " | ||
| + | <code bash> | ||
| + | |||
| + | Jetzt noch IcingaWeb konfigurieren. | ||
| + | - Felder erstellen | ||
| + | - notification_from | ||
| + | - **Datentyp**: | ||
| + | - Zeitperiode erstellen | ||
| + | - im Reiter " | ||
| + | - Benutzer erstellen | ||
| + | - **Zeitraum**: | ||
| + | - **Benachrichtigungen senden**: ja | ||
| + | - **E-Mail**: Mailadresse des Benutzers | ||
| + | - **Zustände**: | ||
| + | - **Änderungsstypen**: | ||
| + | - Benachrichtigungsvorlage für Hosts und Services erstellen | ||
| + | - **Felder hinzufügen**: | ||
| + | - **Benutzer**: | ||
| + | - **Benachrichtigungskommando**: | ||
| + | - **Benachrichtigungsintervall**: | ||
| + | - **Zeitraum**: | ||
| + | - **notification_from**: | ||
| + | - **Zustände**: | ||
| + | - **Änderungsstypen**: | ||
| + | - Benachrichtigung für Hosts und Services erstellen | ||
| + | - **Importe**: | ||
| + | - **Benutzer**: | ||
| + | - **Anwenden auf**: Hosts bzw. Services | ||
| + | - **Zuweisen wo**: 1. Textfeld: " | ||
| + | |||
| + | Wenn nun noch der Host oder Service die Benachrichtigungen aktiviert hat, werden Mails gesendet. | ||
| + | Man kann in IcingaWeb an einem Host oder Server eine Benutzerdefinierte Benachrichtigung senden und dann im Log des Containers das senden der Mail sehen. | ||
| + | Dazu müssen Benutzerdefinierte Benachrichtigungen oben überall als Änderungsstypen angegeben werden. | ||
| + | Die Logs des Containers kann man sich so anzeigen. | ||
| + | <code bash>cd / | ||
| + | docker compose logs -f icinga2</ | ||
| + | ===== Graphite ===== | ||
| + | Mit Graphite kann man Performancedaten der einzelnen Checks grafisch darstellen. | ||
| + | Zum einbinden von Graphite folgendes tun. | ||
| + | - Docker Container erstellen <code bash>cd / | ||
| + | vi docker-compose.yml</ | ||
| + | - hier beim Service " | ||
| + | - danach folgendes unter den letzten Service einfügen < | ||
| + | container_name: | ||
| + | image: graphiteapp/ | ||
| + | restart: always | ||
| + | ports: | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | hostname: graphite | ||
| + | volumes: | ||
| + | #- ./ | ||
| + | #- ./ | ||
| + | - ./ | ||
| + | #- ./ | ||
| + | #- ./ | ||
| + | #- ./ | ||
| + | #- ./ | ||
| + | #- ./ | ||
| + | #- ./ | ||
| + | environment: | ||
| + | - GRAPHITE_TIME_ZONE=Europe/ | ||
| + | - GRAPHITE_DATE_FORMAT=%m/ | ||
| + | - COLLECTD=1</ | ||
| + | - Volumeordner für Graphite erstellen <code bash> | ||
| + | - Icinga Konfiguration zum senden von Performancedaten erstellen <code bash> | ||
| + | - hier die Datei graphite.conf mit folgendem Inhalt erstellen < | ||
| + | * The GraphiteWriter type writes check result metrics and | ||
| + | * performance data to a graphite tcp socket. | ||
| + | */ | ||
| + | |||
| + | object GraphiteWriter " | ||
| + | host = " | ||
| + | port = 2003 | ||
| + | }</ | ||
| + | - Graphite Container starten <code bash> | ||
| + | - ggf. in IcingaWeb unter Einstellungen (Zahnrad) -> " | ||
| + | - im Reiter " | ||
| + | - In der Ansicht eines Hosts oder Service werden nun die Graphen angezeigt, vorausgesetzt die Performancedaten sind in den jew. Icinga-Objekten eingeschaltet | ||
| + | - Über die URL " | ||