InfluxDB - Aufbewahrung der Daten managen

Wenn eine Datenbank in Influx erstellt wird gibt es eine default RETENTION POLICY (Aufbewahrungsrichtlinie) mit den Namen "autogen" die DURATION ist dort auf Unendlich und die shardGroupDuration auf 7 Tage konfiguriert . Dies kann man auch bei der Erstellung einer Datenbank mitgeben (allerdings darf man das nicht vergessen ;-)) DATABASE MANAGMENT
>SHOW RETENTION POLICIES
name              duration  shardGroupDuration replicaN default
----              --------  ------------------ -------- -------
autogen           0s        168h0m0s           1        true
lässt man eine größere Umgebung mit diesen default Werten monitoren ist die Datenbank recht schnell voll und wächst und wächst .......

Um realistische Aufbewahrungsfristen zu realisieren kann man eine neue Policy schreiben, es kommt natürlich immer auf den jeweiligen Anwendungsfall an !
CREATE RETENTION POLICY "twelve_weeks_only" ON "collectd" DURATION 12w SHARD DURATION 1d DEFAULT
nun sieht die Retention Policy schon anders aus
>SHOW RETENTION POLICIES
name              duration  shardGroupDuration replicaN default
----              --------  ------------------ -------- -------
autogen           0s        168h0m0s           1        false
twelve_weeks_only 2016h0m0s 24h0m0s            2        true
die Werte müssen natürlich je nach Anwendungsfall angepasst werden.

Zur Erklärung :

Erstellt eine neue RETENTION POLICY in der Datenbank collectd mit den Namen twelve_weeks_only
CREATE RETENTION POLICY "twelve_weeks_only" ON "collectd"
Die Aufbewahrungsfrist der Daten beträgt hier 12 Wochen -> Duration units
DURATION 12w
In einer einzelnen Shard-Group können mehrere Shards vorhanden sein. Jeder Shard enthält eine bestimmte Reihe von Serien. Alle Punkte, die auf eine bestimmte Serie in einer bestimmten Shard-Gruppe fallen, werden im selben Shard (TSM-Datei) auf der Festplatte gespeichert.(auszug InfluxDB Doku)
SHARD / SHARD Groups / SHARD Duration
SHARD DURATION 1d
Setzt die neue Policy als DEFAULT für die Datenbank collectd
DEFAULT
Um mir wieder Platz zu schaffen habe ich danach die Policy "autogen" aus der InfluxDB gelöscht
DROP RETENTION POLICY "autogen" ON "collectd"

Nach der Erstellung der neuen RETENTION POLICY begann die Aufzeichnung der Messwerte wieder bei Null, sollte das nicht gewünscht werden kann man auch die RETENTION POLICY ändern. Der Weg ist aber ungetestet !!
ALTER RETENTION POLICY "autogen" ON "collectd" DURATION 12w SHARD DURATION 7d DEFAULT

Debian 9 : Grafana Dashboard bauen

Das erste Dashboard in Grafana ist schnell gebaut, ich zeig das hier mal exemplarisch für Load/Ram in einem Graph.

So soll unser Ziel dann aussehen
Grafana Dashboard load und ram

Dazu klicken wir erstmal auf "New Dashboard" um dann dem panel einen Graph hinzu zufügen.
Graph in Grafana

Unter Metrics stellt ihr folgende Konfiguration ein. Ich hab hier nur A und D expandiert die anderen Konfigurationen könnt ihr daraus entnehmen.
Metrics konfigurieren

Dann die Achsen konfigurieren
Grafana Graph - Axes


Jetzt die Darstellung unter Display konfigurieren
Grafana Display
Grafana Display 1

Jetzt schließen wir das mit dem kleinen x und der Graph sollte so wie unser Ziel aussehen.

Hier noch ein Beispiel für einen Netzwerkgraph.

Grafana Netwerk
Grafana Netwerk 1

ntop : Eigene Anwendung zu Port zuordnen

Erstmal was ist ntop eigentlich.
ntop (network top) ist eine quelloffene und freie Software, mit der Netzwerkverkehr mitgeschnitten und analysiert werden kann.
Quelle : https://de.wikipedia.org/wiki/Ntop

Diese Software kann schön genutzt werden um z.B. auf einem Gateway oder einer Firewall zu monitoren wo der Traffic so hin läuft. Es werden schon ein ganzer Pack Plugins mitgeliefert aber eigene Anwendungen werden nicht erkannt. Ich habe hier eine kleine Anwendung geschrieben die über udp Port 5404 Daten versendet. Jetzt möchte ich natürlich das auch in meinem Gateway angezeigt bekommen um zu beurteilen wieviel Traffic darüber läuft. Das kann man relativ einfach realisieren jedoch hat es mir auch etwas Arbeit gekostet diesen einfachen Weg zu finden ;-)

Erstellt eine Datei in der später die Protokolle hinzugefügt werden.
touch /usr/share/ntopng/httpdocs/protocol-app.txt
Jetzt füge ich meine Anwendung hinzu, das diese auch im Webfrontend nicht mehr unter UNKNOWN läuft.
echo "udp:5404 @MyApp" > /usr/share/ntopng/httpdocs/protocol-app.txt 
dann müssen wir noch dafür sorgen das diese Datei auch beim Start von ntopng gelesen wird dazu editieren wir das configfile unter /etc/ntopng mit dem Befehl.
echo "-p /usr/share/ntopng/httpdocs/protocol-app.txt" >> /etc/ntopng/ntopng.conf
Dann starten wir den Server neu mit dem Befehl
service ntopng restart
Wenn dann bei den Protokollen MyApp steht wurde alles richtig gemacht ;-) ntop beispiel

Mehr Infos :
http://www.ntop.org/ndpi/configuring-ndpi-for-custom-protocol-detection/

Raspberry Pi3 & OMD - Open Monitoring Distribution

Servermonitorring wird immer wichtiger je größer die zu überwachende Umgebung wird. Es gibt verschiedene Ansätze um dies zu realisieren. Die Jungs von Check_MK haben eine freie Alternative zu ihrem Produkt (CEE) geschaffen das für kleinere Umgebungen durchaus genügt.
Allerdings ist in der freien Version CRE oder OMD etwas mehr Handarbeit nötig, vor allem bei den Agents.

Da ich einen Raspberry Pi3 verwende habe ich mich für OMD entschieden da es hier schon fertige Packete für armv8 gibt.

Erstmal besorgt man sich ein aktuelles raspbian-lite und schreibt das Image auf eine Micro-SD, ich würde hier mind. 8 GB empfehlen.
Da dieser Schritt zu genüge im Internet erklärt ist gehe ich hier nicht weiter darauf ein.

Sobald das System läuft kann man sich über die IP anmelden. Ich habe dafür einfach auf meinem DHCP Server nachgeschaut.

1.) Anmelden über SSH auf dem RaspBerry Pi3
ssh pi@IP-Adresse
oder, für die Windows Benutzer, über Putty / Kitty. Default Zugangsdaten sind Benutzer : pi Passwort : raspberry

2.) Ändern der Passwörter
Bleibt nicht auf den Defaults das ist ein unnötiges Risiko.

Einmal das user Passwort ändern mit passwd und dann das root Passwort mit sudo passwd

3.) Mit root anmelden
su - root
man könnte auch alle Schritte mit sudo erledigen aber gerade für die Grundkonfiguration geht mir pers. das auf die Nerven

4.) Nachdem man mit root angemeldet ist das System auf den aktuellsten Stand bringen
apt-get update && apt-get -y upgrade


5.) ändern des Computernamen
raspi-config

Hostname Konfiguration raspbianHostname Konfiguration raspbian

6.) Einstellen der Länderspezifischen Sachen & Expand Filesystem

Für Deutschland empfehle ich diese Einstellungen
I1 = de_DE.UTF-8 UTF-8
I2 = Europe/Berlin
I4 = DE Germany

5 Internationalisation Options
Expand Filesystem

7.) System neu starten
Müsste von raspi-config sowieso verlangt werden, sollte dies nicht der Fall
reboot
oder
shutdown -r now


8.) Erneut am System via SSH anmelden (siehe 1. und 3.)

9.) Einbinden des OMD Repository & Cache erneuern

Erstmal installieren wir uns den GPG Key für das Repo
cd ~
wget -q "https://labs.consol.de/repo/stable/RPM-GPG-KEY" -O - | sudo apt-key add -

Jetzt fügen wir das Repository hinzu
echo "deb http://labs.consol.de/repo/stable/debian $(lsb_release -cs) main" > /etc/apt/sources.list.d/labs-consol-stable.list

Dann müssen wir den Packet Cache erneuern
apt-get update


10.) Jetzt können wir omd installieren
Das META Packet installiert die aktuellste Version incl. der Abhängigkeiten
apt-get install omd-labs-edition


11.) Während der Installation muss ein MySQL Passwort für den Benutzer root vergeben werden.

12.) Sicherstellen das das System für OMD vorbereitet ist.
omd setup

13.) eine Seite für die Überwachung in OMD anlegen
omd create demo
wobei demo euer Sitename ist

14.) Konfigurieren der Seite
omd config demo
ich zeige euch meine Konfiguration es gibt aber viele andere Möglichkeiten OMD zu konfigurieren !

CONFIG OMD

solltet ihr meine Konfiguration übernehmen müsst ihr noch eine Datei editieren. Es kann vorkommen das dieser Schritt nach jedem Update gemacht werden muss jedoch hatte ich noch keine Probleme damit.
nano /omd/sites/demo/etc/apache/conf.d/auth.conf
dort kommentiert ihr Auth* und require valid-user aus.
#  AuthName "OMD Monitoring Site demo"
#  AuthType Basic
#  AuthUserFile /omd/sites/demo/etc/htpasswd
#  require valid-user

wenn ihr das nicht macht bekommt ihr immer 2 Anmeldemasken , die 1. ist von Thruk die 2. von Check_MK/OMD

15.) Starten der OMD Seite
omd start demo


16.) Server selbst überwachen - OPTIONAL
Wenn ihr den Server selbst überwachen möchtet müsst ihr euch noch den passenden Agent installieren.
dpkg -i /omd/sites/demo/share/check_mk/agents/check-mk-agent_1.2.6p12-1_all.deb 
auch das überwachen auf neue Updates würde ich gleich mit auf dem lokalen Server nach dieser Anleitung einrichten


Weiterführende Links :
Raspberry - Temperatur in Prompt
SSH Login ohne Passwort
OMD/CHECK_MK Plugin - Quotas überwachen Windows 2008 R2
OMD/CHECK_MK Plugin - Aufgaben überwachen (inzw. incl.)
OMD/CHECK_MK Plugin - Debian auf Updates überwachen
Viele weitere Plugins für OMD/CHECK_MK

Quellen :
https://labs.consol.de/repo/stable/
http://omdistro.org/start
https://www.raspberrypi.org/downloads/raspbian/

Check_MK Plugin | LOCAL Check ! | geplante Aufgaben | scheduled Tasks

Problem : Man möchte die geplanten Tasks auf einem Windows System überwachen.

Lösung : Ich habe hier ein kleines Skript geschrieben das als lokaler Check auf einem Windows System funktioniert.

Download des Skriptes : task_watch.zip

Installation ist wie immer recht einfach , die ZIP Datei entpacken und in das check_mk\local Verzeichnis kopieren , dannach einen FULL SCAN in Check_MK ausführen.
Dannach sollte es als local Check auftauchen.

Das Ergebnis sieht dann so aus :

Alles TASK sind richtig durch gelaufen




Es gab Fehler beim TASK


Check_MK Plugin | LOCAL Check ! | Linux Updates

Ich habe hier als Server Überwachung Check_MK am laufen , die Serverüberwachung bringt die Möglichkeit mit Windows Systeme auf Updates zu überprüfen. Diese Funktion habe ich für Linux Systeme vermisst und habe einen local Check für Debian geschrieben der die selbe Aufgabe übernimmt.

eine Datei anlegen mit folgendem Inhalt z.B. debian_updates.sh


#!/bin/bash
LOGPATH=`dirname $(readlink -f ${0})`
LOGFILE=debian_updates.log
LOGFULL=$LOGPATH/logs/$LOGFILE
DEBVER=`cat /etc/debian_version`
TNOW=$(date "+%s");
STATUS=0

function Get_Updates {
         apt-get update > /dev/null 2> /dev/nul
         AVUP=`apt-get dist-upgrade -qq -y -s |  grep -c '^Inst '`
         AVPACK=`apt-get dist-upgrade -qq -y -s |  awk '/^Inst / { print $2 }' | sed ':a;N;$!ba;s/\n/ /g'`
         AVUPA=$(($AVUP + 1));
         AVUP=$(($AVUPA - 1));
         if [ $AVUP != 0 ]; then
              STATUS=1
              STATUSTXT="$AVUP Updates ( Debian Version : $DEBVER )__ $AVPACK"
         else
              STATUS=0
              STATUSTXT="System ist auf dem aktuellsten Stand ( Debian Version : $DEBVER )"
         fi

        echo "$STATUS Debian_Update - $STATUSTXT" > $LOGFULL
        echo "$STATUS Debian_Update - $STATUSTXT"
}


if [ -e $LOGFULL ];
   then
   TDATEI=$(stat -c %Z $LOGFULL);
   ALTER=$(($TNOW - $TDATEI));
   MAXALTER=86400;      # ---- Berechnet sich wie folgt 24*60*60=86400 Sekunden
                if [ $ALTER -gt $MAXALTER ];
                        then
                        Get_Updates
                        else
                        while read line; do
                                echo $line
                        done < $LOGFULL
                        exit;
                fi
   else
        Get_Updates
   fi

exit



die Datei ausführbar machen mit chmod u+x Dateiname und dann in /usr/lib/check_mk_agent/local/ kopieren. Ein Unterverzeichnis mit dem Namen logs anlegen und einen Full Scan auf die Maschine ausführen. Ab dann werden die Updates auch in der Serverüberwachung angezeigt.

z.B. keine Updates



z.B. Updates stehen zur Installation

“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)