Einrichtung der Infrastruktur

Installation Agent für Betriebsysteme mit apt Packetmanager

Nun agents für die Hosts installieren

Auf dem zu überwachenen des Host wo der Agent installiert werden soll, ein Verzeichnis checkmk_setup im root verzeichnis erstellen

mkdir -p /root/checkmk_setup

Nun mit dem Webbrowser auf dem Checkmk Server einloggen und dann
Dazu auf Setup -> Agents -> Windows, Linux, Solaris , AIX anklicken

Bildschirmfoto vom 2022-11-20 13-31-39.png

Nun auf DEB mit dem Ubuntu Symbol anklicken und downloaden

Bildschirmfoto vom 2022-11-20 13-33-01.png

Nun per scp die datei auf den server ins Home Verzeichnis von root/checkmk_stup  übertragen check_mk übertragen

scp Downloads/check-mk-agent_2.1.0p16-d88c216c6ad53a29_all.deb root@192.168.0.30:/root/checkmk_setup

Nun auf dem Server einloggen und in das Verzeichnis /root/checkmk_setup gehen und die rpm Datei installieren

cd /root/checkmk_setup
apt install ./check-mk-agent_2.1.0p16-d88c216c6ad53a29_all.deb

Ausgabe:

Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut… Fertig
Statusinformationen werden eingelesen… Fertig
Hinweis: »check-mk-agent« wird an Stelle von »./check-mk-agent_2.1.0p16-d88c216c6ad53a29_all.deb« gewählt.
Vorgeschlagene Pakete:
  time
Die folgenden NEUEN Pakete werden installiert:
  check-mk-agent
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen noch 0 B von 4.517 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 4.555 kB Plattenplatz zusätzlich benutzt.
Holen:1 /root/checkmk_setup/check-mk-agent_2.1.0p16-d88c216c6ad53a29_all.deb check-mk-agent all 2.1.0p16-1.d88c216c6ad53a29 [4.517 kB]
Vormals nicht ausgewähltes Paket check-mk-agent wird gewählt.
(Lese Datenbank ... 35073 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../check-mk-agent_2.1.0p16-d88c216c6ad53a29_all.
deb ...
Entpacken von check-mk-agent (2.1.0p16-1.d88c216c6ad53a29) ...
check-mk-agent (2.1.0p16-1.d88c216c6ad53a29) wird eingerichtet ...


Deploying systemd units: check-mk-agent.socket cmk-agent-ctl-daemon.service chec
k-mk-agent-async.service check-mk-agent@.service
Deployed systemd
Creating/updating cmk-agent user account ...

WARNING: The agent controller is operating in an insecure mode! To secure the co
nnection run `cmk-agent-ctl register`.

Activating systemd unit 'check-mk-agent.socket'...
Created symlink /etc/systemd/system/sockets.target.wants/check-mk-agent.socket →
 /lib/systemd/system/check-mk-agent.socket.
Activating systemd unit 'cmk-agent-ctl-daemon.service'...
Created symlink /etc/systemd/system/multi-user.target.wants/cmk-agent-ctl-daemon
.service → /lib/systemd/system/cmk-agent-ctl-daemon.service.
Activating systemd unit 'check-mk-agent-async.service'...
Created symlink /etc/systemd/system/multi-user.target.wants/check-mk-agent-async
.service → /lib/systemd/system/check-mk-agent-async.service.
N: Der Download wird als root und nicht Sandbox-geschützt durchgeführt, da auf die Datei »/root/checkmk_setup/check-mk-agent_2.1.0p16-d88c216c6ad53a29_all.deb« durch den Benutzer »_apt« nicht zugegriffen werden kann. - pkgAcquire::Run (13: Keine Berechtigung)


!!!NUR durchführen wenn die Agents später NICHT regestriert werden sollen, was im Kaptitel Grundkonfiguration beschrieben wird!!!

Siehe hier !!!

Um Agents auch auf ipv4 lauschen zu lassen in der config file folgendes ändern.
Aber erstmal die Dienste stoppen und terminieren

systemctl stop check-mk-agent.socket
killall cmk-agent-ctl
killall check_mk_agent

Nun die Datei /lib/systemd/system/check-mk-agent.socket bearbeiten

nano /lib/systemd/system/check-mk-agent.socket

Und folgendes auskommentieren

#ListenStream=/run/check-mk-agent.socket

Und genau unter der Auskommentierten Zeile diese einfügen

ListenStream=0.0.0.0:6556

Speichern, systemctl reloaden und dienst n eustarten

systemctl daemon-reload
systemctl restart check-mk-agent.socket





Installation Agent für Betriebsysteme mit rpm Packetmanager

Nun agents für die Hosts installieren

Auf dem zu überwachenen des Host wo der Agent installiert werden soll, ein Verzeichnis checkmk_setup im root verzeichnis erstellen

mkdir -p /root/checkmk_setup

Nun mit dem Webbrowser auf dem Checkmk Server einloggen und dann
Dazu auf Setup -> Agents -> Windows, Linux, Solaris , AIX anklicken

Bildschirmfoto vom 2022-11-20 13-31-39.png

Nun auf RPM mit dem Redhat Symbol anklicken und downloaden

Bildschirmfoto vom 2022-11-20 13-33-01.png

Nun per scp die datei auf den server ins Home Verzeichnis von root/checkmk_stup  übertragen check_mk übertragen

scp Downloads/check-mk-agent-2.1.0p16-d88c216c6ad53a29.noarch.rpm root@192.168.0.30:/root/checkmk_setup

Nun auf dem Server einloggen und in das Verzeichnis /root/checkmk_setup gehen und die rpm Datei installieren

cd /root/checkmk_setup
rpm -i check-mk-agent-2.1.0p16-d88c216c6ad53a29.noarch.rpm

Ausgabe:

Removing deployed systemd units: check-mk-agent-async.service, check-mk-agent.socket, cmk-agent-ctl-daemon.service, check-mk-agent@.service


Deploying systemd units: check-mk-agent-async.service check-mk-agent.socket cmk-agent-ctl-daemon.service check-mk-agent@.service
Deployed systemd
Creating/updating cmk-agent user account ...

WARNING: The agent controller is operating in an insecure mode! To secure the connection run `cmk-agent-ctl register`.

Activating systemd unit 'check-mk-agent-async.service'...
Created symlink /etc/systemd/system/multi-user.target.wants/check-mk-agent-async.service → /lib/systemd/system/check-mk-agent-async.service.
Activating systemd unit 'check-mk-agent.socket'...
Created symlink /etc/systemd/system/sockets.target.wants/check-mk-agent.socket → /lib/systemd/system/check-mk-agent.socket.
Activating systemd unit 'cmk-agent-ctl-daemon.service'...
Created symlink /etc/systemd/system/multi-user.target.wants/cmk-agent-ctl-daemon.service → /lib/systemd/system/cmk-agent-ctl-daemon.service.
2022-11-20 16:34:32,252 - ha-helper[28335] - INFO - Synchronizing to node 192.168.177.2
2022-11-20 16:34:32,253 - ha-helper[28335] - INFO - Synchronizing... / -> root@192.168.177.2:/
2022-11-20 16:34:32,510 - ha-helper[28335] - INFO - Synchronization / -> root@192.168.177.2:/ done
280 run_parts async call


!!!NUR durchführen wenn die Agents später NICHT regestriert werden sollen, was im Kaptitel Grundkonfiguration beschrieben wird!!!


Um Agents auch auf ipv4 lauschen zu lassen in der config file folgendes ändern.
Aber erstmal die Dienste stoppen und terminieren

systemctl stop check-mk-agent.socket
killall cmk-agent-ctl
killall check_mk_agent

Nun die Datei /lib/systemd/system/check-mk-agent.socket bearbeiten

nano /lib/systemd/system/check-mk-agent.socket

Und folgendes auskommentieren

#ListenStream=/run/check-mk-agent.socket

Und genau unter der Auskommentierten Zeile diese einfügen

ListenStream=0.0.0.0:6556

Speichern, systemctl reloaden und dienst n eustarten

systemctl daemon-reload
systemctl restart check-mk-agent.socket





Installation Agent für andere Betriebsysteme ohne systemd / xinetd (Anbindung per ssh) tar.gz

Beschreibung

Es gibt Systeme auf denen gibt es kein Systemd und xinetd.
Der Checkmk Service lauscht normalerweise auf einen TCP Port.
Da es aber keine Services ohne xinetd und systemd gibt, gibt es eine weitere Methode.
und zwar das abrufen des Agents über ssh.
Allerdings funktioniert für diese Methode die Agnet Bakery natürlich nicht.

Agents für die Hosts installieren / entpacken

Auf dem zu überwachenden des Host wo der Agent installiert werden soll, ein Verzeichnis checkmk_setup im root verzeichnis erstellen

mkdir -p /root/checkmk_setup

Nun mit dem Webbrowser auf dem Checkmk Server einloggen und dann
Dazu auf Setup -> Agents -> Windows, Linux, Solaris , AIX anklicken

Bildschirmfoto vom 2022-11-20 13-31-39.png

Nun auf tar gz bei Linux mit dem gelben Symbol anklicken und downloaden

Bildschirmfoto vom 2022-11-20 13-33-01.png

Nun per scp die Datei auf den zu überwachenden Server ins Home Verzeichnis von root/checkmk_stup  übertragen check_mk übertragen

Nun  die  check-mk-agent_2.1.0p16-d88c216c6ad53a29.tar.gz tar auf dem zu überwachendem Host entpacken

tar -xf check-mk-agent_2.1.0p16-d88c216c6ad53a29.tar.gz -C /

SSH Schlüssel falls nicht schon vorhanden auf der Checkmkinstanz erstellen

Auf dem Checkmk server inloggen.
Dann in die instanz einloggen

omd su <instanzname>

Beispiel
omd su monitoring

Nun den Schlüssel erstellen ohne passphrase

ssh-keygen -t ed25519

Ausgabe

OMD[monitoring]:~$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/omd/sites/monitoring/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /omd/sites/monitoring/.ssh/id_ed25519.
Your public key has been saved in /omd/sites/monitoring/.ssh/id_ed25519.pub.
The key fingerprint is:
cc:87:34:d2:ed:87:ed:f7:1b:ec:58:1f:7c:23:00:e2 monitoring@mycmkserver
The key's randomart image is:
+--[ED25519  256--+
|                 |
|       . .       |
|      ..+..      |
|      .=.+.o     |
|       ES +.o    |
|         . o. o  |
|            ...B.|
|             .=.*|
|             . o+|
+-----------------+

Die Schlüssel liegen dann im .ssh Verzeichnis des Monitoring Verzeichnisses.
Dateien anzeigen

ll .ssh

Ausgabe

OMD[monitoring]:~$ ll .ssh
total 8
-rw------- 1 monitoring monitoring 1679 Feb 20 14:18 id_ed25519
-rw-r--r-- 1 monitoring monitoring  398 Feb 20 14:18 id_ed25519.pub

Der private Schlüssel heißt id_ed25519 und ist nur für den Instanzbenutzer lesbar (-rw-------) — und das ist auch gut so! Der öffentliche Schlüssel id_ed25519.pub sieht etwa so aus:

Ausgabe:

OMD[monitoring]:~$ cat .ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGb6AaqRPlbEmDnBkeIW3Q6Emb5lr2QEbWEQLmA5pb48 monitoring@mycmkserver

Nun auf dem zu überwachendem Host in einer zweiten SSH-Sitzung einloggen.
und die authorized_keys Datei bearbeiten

nano /root/.ssh/authorized_keys

Dort am ende den öffentlichen Schlüssel eintragen.
Davor aber noch ein command, der dient dazu, das nur der Agent aufgerufen werden kann und auch gleichzeitig beim einloggen aufgerufen wird.
Die ganze zeile in der  authorized_keys Datei sähe dann so aus

command="/usr/bin/check_mk_agent" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGb6AaqRPlbEmDnBkeIW3Q6Emb5lr2QEbWEQLmA5pb48 monitoring@mycmkserver

Nun ausloggen.

Testen der Verbindung

Nun auf dem Checkmkserver wieder in die instanz einloggen, wenn nicht noch von der vorherigen Sitzung eingeloggt

omd su <instanzname>

Beispiel
omd su monitoring

Nun einfach ssh root@<iphostname> und den Fingerprint des Schlüssels mit der Eingabe von yes bestätigen.
Der Fingerprint wird nur beim ersten mal abgefragt.

 ssh root@<ipfromtargetserver> 

Ausgabe

OMD[monitoring]:~$ ssh root@myhost23
The authenticity of host 'myhost23 (10.11.12.13)' can't be established.
ECDSA key fingerprint is SHA256:lWgVK+LtsMgjHUbdsA1FK12PdmVQGqaEY4TE8TEps3w.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
<<<check_mk>>>
Version: 2.1.0b6
AgentOS: linux
Hostname: myhost123
AgentDirectory: /etc/check_mk
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/lib/check_mk_agent/plugins
LocalDirectory: /usr/lib/check_mk_agent/local
<<<df>>>

fertig, Verbindung steht.

Einbinden des Hosts in Checkmk

Nun da die SSH Verbindung hergestellt ist, muss jetzt die SSH verbindung im Host in Checkmk eingetragen werden.
Dazu in der Weboberfläche von check mk gehen, den Host anlegen wenn noch nicht geschehen.
Sollte der Host schon bestehen. Kann das anlegen natürlich übersprungen werden.
Wichtig ist nur das in den Host Einstellungen folgendes gemacht ist

Hostanpassen

Dazu wieder auf Setup -> Hosts

Auswahl_007.png

Nun auf edit Host für den Host den man editieren will gehen (Stift)

Auswahl_010.png

Nun unter Monitoring Agents / API intergation: API integrations if configured, else Checkmk agent auswählen

Auswahl_013.png

Wenn die Einstellungen beim Host getätigt sind
Geht es  weiter auf : Setup -> Agents -> Other integrations

Auswahl_001.png

-> Custom integrations -> Individual program call instead of agent access klicken

Auswahl_002.png

Nun auf Add rule klicken

Auswahl_003.png

Hier nun folgende Sachen ausfüllen:

Description : Agent connection through SSH
Command to Execute : ssh -T root@$HOSTADDRESS$
Explicit Hosts: unser(e) Server die, die Verbindung über SSH aufbauen sollen.

Hinweis: Wir nutzen hier als Variable die $HOSTADDRESS$ dies bedeutet, dazu zum verbinden die IP vom Host genommen wird.
nun auf save klicken.

Auswahl_011.png

 Nun wieder oben rechts auf change klicken

Auswahl_005.png

Nun auf activate on selected sites

Auswahl_006.png

Nun wieder auf Setup -> Hosts

Auswahl_007.png

Nun auf edit Services für den Host gehen (gelber Würfel)

Auswahl_008.png

Nun wenn gewünscht über das X Services deaktivieren, die NICHT überwacht werden sollen.
Soll alles übernommen werden einfach auf Accept all

Auswahl_012.png

Fertig







Installation Agent für Windows

Beschreibung:

Installation Agent für Windows. Dieser wird dann ähnlich wie bei Linux über die Kommandozeile installiert.

Installation Agent

Auf der Check MK Seite anmelden und dann auf Setup -> Agents -> Windows, Linux, Solaris, AIX

Auswahl_916.png

Dort auf das Windows MSI Paket klicken.

Auswahl_917.png

Nun erscheint der Download Dialog eures Webbrowsers kann bei jedem anders aussehen, auf jeden Fall die Datei speichern.

Auswahl_918.png

Nun liegt diese Datei im Download Ordner. Dort ein Doppelklick drauf

Auswahl_919.png

Nun startet das Setup, auf Next klicken

Auswahl_920.png

Lizenbedinnungen akzeptieren und auf Next klicken

Auswahl_922.png

Clean install auswählen, alles andere abwählen und auf next klicken

Auswahl_923.png

Nun auf Install klicken

Auswahl_924.png

Nun auf Finish klicken

Auswahl_925.png

Registrieren





Anlegen von Hostgruppen und deren Verzeichnisse

Nach dem Einloggen sehen wir die Hauptseite

Bildschirmfoto vom 2022-11-20 13-16-32.png

Nun auf den Button dd group klicken

Bildschirmfoto vom 2022-11-20 13-20-32.png

und einen Gruppennamen vergeben.
bei uns RVS-SERVERS
Dann auf Save

Bildschirmfoto vom 2022-11-20 13-21-24.png

Nun eine weitere Gruppe anlegen namens PROXMOX-SERVERS

Bildschirmfoto vom 2022-11-20 13-22-04.png


Auf save klicken. Nun haben wir zwei gruppen.
Bildschirmfoto vom 2022-11-20 13-22-18.png

Nun oben rechts auf den Button changes klicken.
Denn unsere Änderungen die wir gemacht haben sind noch nicht aktiv.
Die Zahl zeigt an wie viele Änderungen wir gemacht haben.

Bildschirmfoto vom 2022-11-20 13-22-34.png

Nun auf Activate on selected sites klicken

Bildschirmfoto vom 2022-11-20 13-22-54.png

Nun gehen wir wieder auf Setup -> Hosts -> Hosts

Bildschirmfoto vom 2022-11-20 17-01-02.png

Dort erstellen wir Verzeichnisse mit den gleichen Namen wie die Gruppen.
Dazu klicken wir auf Add folder

Bildschirmfoto vom 2022-11-20 17-02-21.png

Nun den Verzeichnisnamen  eingeben. RVS-SERVERS (im Screenshot steht server hab das s vergessen)

Bildschirmfoto vom 2022-11-20 17-03-36.png

Das gleiche auch für PROXMOX-SERVERS
Dann sieht das ganze so aus.

Bildschirmfoto vom 2022-11-20 17-04-41.png

Wieder Änderungen übernehmen

Bildschirmfoto vom 2022-11-20 13-22-34.png

Nun auf Activate on selected sites klicken

Bildschirmfoto vom 2022-11-20 13-22-54.png

Fertig.

Anlegen von Hosts

Nun die Hosts anlegen.
Falls noch nicht getan die Agents auf die Hosts die überwacht werden sollen installieren


Siehe abschnitt Einrichtung

Nun Auf -> Setup -> Hosts klicken

image-1674392952713.png

Nun haben wir eine Übersicht unserer Verzeichnisse

image-1674393819279.png

In das Verzeichnis reinklicken wo wir gerne den / die Host(s) erstellen möchten und auf Add Host to the monitoring klicken.

image-1674393899663.png

Nun auszufüllen

Hostname : name des hostes rein.
IPv4 Adresse Haken rein und die ip Adresse eintargen
Checkmk  agent / API integration :  haken rein
Label : sinnvolle label vergeben, können auch mehrer sein.
Wir definieren hier ein neues Label mit einem wert servertyp : rvs

Nun auf Save & go to services configuration

image-1674394068875.png

Nun bekommen wir eine Liste mit allen Diensten.
Es werden auch zwei neue Labels erstellt: devicetyp und os_family
Wenn wir Dienste nicht überwacht ahben wollen klicken wir auf das rote x bei dem jeweiligen Dienst

Hier gibt es eine Checkmk Warnung weil wir den Agent noch nicht registriert haben, kommt später.

image-1674394254399.png

Wir sehen hier einen Fehler beim Dienst Postfix und beim systemd clam av.

image-1674394415904.png

Den Postfix fehler bekommen wir auch nicht weg, da auf diesem System Postfix unkonfiguriert ist. Entweder postfix konfigurieren wenn benötigt oder den Dienst von der Überwachung ausschließen. Wir klicken hier auf das rote X bei Postfix, weil wir den Dienst hier nicht brauchen.

Um die in der Vergagngenheit liegenden Fehler von Systemd zu löschen einfach im Terminal mit dem Befehl.

systemctl reset-failed

Das nur so nebenbei.

Nun ist der Postfix Dienst ausgeschlossen, weil wir diesen ja mit dem roten X entfernet haben.
Dieser steht unter Diabled Service, durch klick auf das grüne plus können wir diesen jederzeit wieder hinzufügen. Auch später, falls wir uns entscheiden doch postfix auf dem System zu nutzen

image-1674394690899.png

Wenn alle Dienste aussortiert, die nicht gerbaucht werden. Hier nur postfix dann auf Accept all klicken.

Auswahl_001.png

Nun die Änderungen wieder bestätigen

image-1674394824362.png

Wieder active on selected sites

image-1674394855690.png

Nun Auf Monitor und dann Main Dashboard.

image-1674394886646.png

Ein Dienst Critical,  und eine Warnung. Die Warnung kommt noch vom nicht registriertem Client.
Das kommt im nächsten Abschnitt, denn damit ein Client registriert werden kann muss er erst im System angelegt sein, was wir in diesem Abschnitt gemacht haben

image-1674394921718.png



Agents am CheckMK Server registrieren

Beschreibung:

Wenn im Service AGENT diese Warnung steh, ist der Host mit seinem agent beim Checkmk Server noch nicht registriert.
Der host wird erst im Checkmk angelegt und dann übers Terminal registriert. Ansosten steht diese Meldung hier.
Denn der Host kann den Agent ja erreichen, aber unverschlüsselt und fur jeden.

Bildschirmfoto vom 2022-11-20 18-49-13.png

Bildschirmfoto vom 2022-11-20 18-49-28.png

Warum das ganze?

Wenn der Agent unverschlüsselt läuft, kann jeder über den Port Daten vom Hostabgreifen

Befehl:

telnet 192.168.0.34 6556

Die Ausgabe

<<<check_mk>>>
Version: 2.1.0p16
AgentOS: linux
Hostname: rvs6-tecmata
AgentDirectory: /etc/check_mk
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/lib/check_mk_agent/plugins
LocalDirectory: /usr/lib/check_mk_agent/local
FailedPythonReason: 
SSHClient: 
<<<cmk_agent_ctl_status:sep(0)>>>
{"version":"2.1.0p16","agent_socket_operational":true,"ip_allowlist":[],"allow_legacy_pull":true,"connections":[]}
<<<checkmk_agent_plugins_lnx:sep(0)>>>
pluginsdir /usr/lib/check_mk_agent/plugins
localdir /usr/lib/check_mk_agent/local
<<<labels:sep(0)>>>
<<<df>>>
tmpfs                         tmpfs     1616236      1568   1614668       1% /run
/dev/mapper/rvs6test--vg-root ext4    243008916 169841472  60750420      74% /
tmpfs                         tmpfs     8081168     46800   8034368       1% /dev/shm
tmpfs                         tmpfs        5120         0      5120       0% /run/lock
/dev/nvme0n1p2                ext2       481642    124858    331799      28% /boot
/dev/nvme0n1p1                vfat       523248      3512    519736       1% /boot/efi
/dev/fuse                     fuse       131072        52    131020       1% /etc/pve
tmpfs                         tmpfs     1616232         0   1616232       0% /run/user/0
<<<df>>>
[df_inodes_start]
tmpfs                         tmpfs  2020292  1131  2019161    1% /run
/dev/mapper/rvs6test--vg-root ext4  15507456 61994 15445462    1% /
tmpfs                         tmpfs  2020292   106  2020186    1% /dev/shm
tmpfs                         tmpfs  2020292    21  2020271    1% /run/lock
/dev/nvme0n1p2                ext2    124928   352   124576    1% /boot
/dev/nvme0n1p1                vfat         0     0        0     - /boot/efi
/dev/fuse                     fuse    262144    38   262106    1% /etc/pve
tmpfs                         tmpfs   404058    20   404038    1% /run/user/0
[df_inodes_end]
[df_lsblk_start]
{
   "blockdevices": [
      {"name":"/dev/sda", "uuid":null},
      {"name":"/dev/sda1", "uuid":"77085686-971d-498a-8692-0fd8048da3a0"},
      {"name":"/dev/sr0", "uuid":null},
      {"name":"/dev/mapper/nvme0n1p3_crypt", "uuid":"ZZLFwZ-JMTb-Qdcu-akhk-5gEc-d2kd-6idwqE"},
      {"name":"/dev/mapper/rvs6test--vg-root", "uuid":"da0060ca-629b-4f24-96e4-2bc3dd1dde9a"},
      {"name":"/dev/mapper/rvs6test--vg-swap_1", "uuid":"08efe098-7e3a-4ab0-b961-5154eb194d89"},
      {"name":"/dev/nvme0n1", "uuid":null},
      {"name":"/dev/nvme0n1p1", "uuid":"04B7-49AB"},
      {"name":"/dev/nvme0n1p2", "uuid":"0c954140-e9ed-457d-8833-f4564326cdd5"},
      {"name":"/dev/nvme0n1p3", "uuid":"663f7527-3144-4b54-9768-454e65aad4b4"}
   ]
}
[df_lsblk_end]
<<<systemd_units>>>
[list-unit-files]

...
<<<timesyncd>>>
       Server: 129.70.132.34 (2.debian.pool.ntp.org)
Poll interval: 34min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: 81468952
    Precision: 1us (-24)
Root distance: 3.287ms (max: 5s)
       Offset: +2.726ms
        Delay: 15.787ms
       Jitter: 5.769ms
 Packet count: 2634
    Frequency: -9.423ppm
[[[1674394719]]]
<<<timesyncd_ntpmessage:sep(10)>>>
NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-24, RootDelay=381us, RootDispersion=3.097ms, Reference=81468952, OriginateTimestamp=Sun 2023-01-22 14:38:39 CET, ReceiveTimestamp=Sun 2023-01-22 14:38:39 CET, TransmitTimestamp=Sun 2023-01-22 14:38:39 CET, DestinationTimestamp=Sun 2023-01-22 14:38:39 CET, Ignored=no PacketCount=2634, Jitter=5.769ms }
Timezone=Europe/Berlin
<<<local:sep(0)>>>
Connection closed by foreign host.

Nachdem der Server registriert wurde, sieht die Ausgabe nun so aus. Nun kann nur noch der Checkmk Server mit dem Zertifkat die Daten abrufen und keine dritten mehr. Denn das wäre ja noch so ohne Probleme gegangen, wie die obere Ausgabe ja zeigt.

oot@checkmk:~# telnet 192.168.0.34 6556
Trying 192.168.0.34...
Connected to 192.168.0.34.
Escape character is '^]'.
16


Is still waiting here...
No Output anymore


Wie registrieren wir den Server nun?

Unter Linux:


Dazu auf Sem Server einloggen wo der Agent läuft und mit cmk-agent-ctl hinzufügen
Hier einmal die Hilfe die wir mit Paramter -h bekommen. Keine Panik, weiter unten zeige ich ein Beispiel.
Der Befehl

cmk-agent-ctl -h

Ausgabe:

cmk-agent-ctl 2.1.0p16
Checkmk agent controller.

USAGE:
    cmk-agent-ctl <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    daemon            Run as daemon and handle all pull and push connections
    delete            Delete a connection to a Checkmk instance
    delete-all        Delete all connections to Checkmk sites
    dump              Collect monitoring data and write it to standard output
    help              Prints this message or the help of the given subcommand(s)
    import            Import a pull connection from file or standard input
    proxy-register    Register with a Checkmk site on behalf of another host
    pull              Handle incoming connections from Checkmk sites collecting monitoring data
    push              Push monitoring data to all Checkmk sites configured for 'push'
    register          Register with a Checkmk site
    status            Query the registration status of this host

Hier die Parameter für den Befehl register aus der Hilfe

cmk-agent-ctl register -h

Ausgabe:

cmk-agent-ctl-register 1.0.0
Register with a Checkmk site

Register with a Checkmk instance for monitoring. The required information can be read from a config file or must be
passed via command line.

USAGE:
    cmk-agent-ctl register [FLAGS] [OPTIONS]

FLAGS:
    -d, --detect-proxy         Detect and use proxy settings configured on this system for outgoing HTTPS connections.
                               The default is to ignore configured proxies and to connect directly
    -h, --help                 Prints help information
        --trust-cert           Blindly trust the server certificate of the Checkmk site
        --validate-api-cert    Enable TLS certificate validation for querying the agent receiver port from the Checkmk
                               REST API. By default, certificate validation is disabled because it is not security-
                               relevant at this stage, see werk #14715
    -V, --version              Prints version information
    -v, --verbose              Enable verbose output. Use once (-v) for logging level INFO and twice (-vv) for logging
                               level DEBUG

OPTIONS:
    -H, --hostname <host-name>    Name of this host in the monitoring site
    -P, --password <password>     Password for API user. Can also be entered interactively
    -s, --server <server>         Address of the Checkmk site in the format "<server>" or "<server>:<port>"
    -i, --site <site>             Name of the Checkmk site
    -U, --user <user>             API user to use for registration

Welche Parameter brauchen wir?
Da wir ein selbstsigniertes Zertifikat haben brauchen wir folgende Parameter

 --trust-cert
 --password <password>
 --server <server> 
 --site <sitename/instanzname>
 --user <user> 

Also würde unser Befehl so aussehen:

cmk-agent-ctl register  --trust-cert --password *****unsersischerspass**** --hostname rvs6-tecmata --server 192.168.0.33 --site monitoring --user automation 

Erläuterung der Paramter:

--password das automation user api password
--hostname der Hostname des Servers den wir registrieren wollen, dieser name muss identisch mit dem im checkmk sein, im Feld hostname hier rvs6-tecmata
--server : unser checkmkserver an dem wir den client registrieren wollen
--site unsere site / intanz auf dem checkmk  server hier monitoring
--user der api user hier automation


Unter Windows

Eine Eingabeaufforderung mit Admin rechten Öffnen

Auswahl_926.png

Nun den Client mit -h öffnen um die Parameter zu bekommen.

C:\WINDOWS\system32>"C:\Program Files (x86)\checkmk\service\cmk-agent-ctl.exe" -h
cmk-agent-ctl 2.1.0p16
Checkmk agent controller.

USAGE:
    cmk-agent-ctl.exe <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    daemon            Run as daemon and handle all pull and push connections
    delete            Delete a connection to a Checkmk instance
    delete-all        Delete all connections to Checkmk sites
    dump              Collect monitoring data and write it to standard output
    help              Prints this message or the help of the given subcommand(s)
    import            Import a pull connection from file or standard input
    proxy-register    Register with a Checkmk site on behalf of another host
    pull              Handle incoming connections from Checkmk sites collecting monitoring data
    push              Push monitoring data to all Checkmk sites configured for 'push'
    register          Register with a Checkmk site
    status            Query the registration status of this host

C:\WINDOWS\system32>

Dann lassen wir uns die Hilfe für den Parameter register anzeigen

C:\WINDOWS\system32>"C:\Program Files (x86)\checkmk\service\cmk-agent-ctl.exe" register -h
cmk-agent-ctl.exe-register 1.0.0
Register with a Checkmk site

Register with a Checkmk instance for monitoring. The required information can be read from a config file or must be
passed via command line.

USAGE:
    cmk-agent-ctl.exe register [FLAGS] [OPTIONS]

FLAGS:
    -d, --detect-proxy         Detect and use proxy settings configured on this system for outgoing HTTPS connections.
                               The default is to ignore configured proxies and to connect directly
    -h, --help                 Prints help information
        --trust-cert           Blindly trust the server certificate of the Checkmk site
        --validate-api-cert    Enable TLS certificate validation for querying the agent receiver port from the Checkmk
                               REST API. By default, certificate validation is disabled because it is not security-
                               relevant at this stage, see werk #14715
    -V, --version              Prints version information
    -v, --verbose              Enable verbose output. Use once (-v) for logging level INFO and twice (-vv) for logging
                               level DEBUG

OPTIONS:
    -H, --hostname <host-name>    Name of this host in the monitoring site
    -P, --password <password>     Password for API user. Can also be entered interactively
    -s, --server <server>         Address of the Checkmk site in the format "<server>" or "<server>:<port>"
    -i, --site <site>             Name of the Checkmk site
    -U, --user <user>             API user to use for registration


Welche Parameter brauchen wir?
Da wir ein selbstsigniertes Zertifikat haben brauchen wir folgende Parameter

 --trust-cert
 --password <password>
 --server <server> 
 --site <sitename/instanzname>
 --user <user> 

Also würde unser Befehl so aussehen:

"C:\Program Files (x86)\checkmk\service\cmk-agent-ctl.exe" register --trust-cert --password *****unsersischerspass**** --hostname rvs6-tecmata --server 192.168.0.33 --site monitoring --user automation 

Wenn alles geklappt hat wird nichts als Ausgabe zurück gegeben.

Nun können wir den Status überpüfen:

"C:\Program Files (x86)\checkmk\service\cmk-agent-ctl.exe" status
Version: 2.1.0p16
Agent socket: operational
IP allowlist: any


Connection: ip:8000/monitoring
        UUID: 00bf5de9-7d67-4c76-a9c5-886310581f19
        Local:
                Connection type: pull-agent
                Certificate issuer: Site 'monitoring' local CA
                Certificate validity: Wed, 08 Mar 2023 12:14:56 +0000 - Mon, 09 Jul 3021 12:14:56 +0000
        Remote:
                Connection type: pull-agent
                Registration state: operational
                Host name: jtl-wawiclient

C:\WINDOWS\system32>



Nun ist die  Warnung weg.

Auswahl_002.png



Ob dieser abschnitt noch beötigt wird weiß ich nicht, ich lasse es erstmal stehen


Bleibt der Fehler bestehen und es ist noch eine CRIT Warnung dazu gekommen die lautet
[agent] Host is registered for TLS but not using itCRIT, Got no information from hostCRIT, execution time 0.1 sec 

Bildschirmfoto vom 2022-11-20 19-33-25.png




Checks Schwellenwerte / Limits anpassen

Beschreibung:

Es gibt situationen da passen die Standard Schwellenwerte / Limits einfach nicht.
Zum Beispiel weil ein Server zu wenig Festplattenspeicher für eine Temporäre Zeit hat oder der RAM übern Limit ist. Aber es eigentlich noch okay ist. Da kein weiterer RAM dazu gekauft wird.

Auszug aus den Emails.

Von OK auf Warning

Auswahl_146.png

Danach wieder von Warning auf OK

Auswahl_145.png

Einstellen der Limits

Auf dem Dashboard hat man unten rechts eine Schnellübersicht der Alarme der letzten 7 Tage.

02.png

Klickt man auf den Hosteintrag bekommt, man alle service Alerts. Klickt man auf den Service bekommt man die Alerts nur vom Service für den Host. Wir klicken auf Memory und bekommen dann folgende Ansicht.
Hier sehen wir Limits von 79,95% - 80% bei RAM und  Commit change 70- 72% gerundet

03.png

Nun klicken wir oben im Menü auf Service

04.png


Nun auf Das Burgermenu beiService Icons und dann auf Parameters for this service klicken

05.png

Nun haben wir eine Neue Übersicht.
Im Blauen Rahmen Rechts sieht man das dieser Check schon Standardwerte hat, nämlich Warnung bei 80% und Critical bei 90%.
Im roten Rahmen steht der Name des Checks. Diesen klicken wir an, um eine neue Regel zu erstellen.

06.png

Nun klicken wir auf Add Rule

07.png

Nun geben wir eine Beschreibung für die Rule ein.
unter Value können wir ankreuzen, welche Werte wir definieren wollen.
Wir wollen in diesem Beispiel den Memory und die Commit Change anpassen.
Unsere Werte waren gerundet, 79,95% - 80% bei RAM und  Commit change 70- 72%
Also legen wir RAM auf 88% Warn und 95% Crit um ein bisschen Puffer zu haben.
Und commit belieben auf standard auf 80% Warn und 90% Crit.
Wir stellen fest, das Commit mit den Standardwerten ausreicht.
Also Kreuz wieder raus.
unten bei Explicit Hosts ein Kreuz rein und den Host auswählen.
Will man das ganze für eine Gruppe Wählt man die Gruppe aus. Anstatt Main, irgendine andere.
Dazu muss der Haken dann bei explicit Host natürlich wieder raus.

Nun auf Save klicken

08.png



Nun auf Change klicken

09.png

Nun auf Activate on selected sites

10.png

Fertig.


Benachrichtungen für bestimmte Checks deaktivieren

Beschreibung:

Wer kennt sie nicht die Windows Ereignisanzeige. Da werden Fehler und Warnungen geloggt, die eigentlich nicht von belang sind. Sind aber im Log als Critical und Checkmk schickt auch sofort ein Alert raus.
Man möchte die Alters natürlich im Checkmk System behalten. Aber eben keine Emailbenachrichtung.
Wie also rausnehemn?

Emailbenachrichtung für einen Service rausnemen:

In der Checkmk Oberfläche anmelden.
Dann unter  Setup -> Hosts den Host raussuchen

01.png

Dort dann auf Services klicken

02.png

Bei den Service den man ändern möchte auf die Balken klicken
(man kann in diesem Atemzug auch mehrere Services in eine Rule packen. Dann einfach die Anderen Servicenamen wie hier 
Log Application, dann noch hinzufügen.) Sehen wir später im Rule Editor

03.png

Nun auf Enable Disable notification for services klicken

04.png

Nun Auf add Rule

05.png

Nun eine Beschreibung ausfüllen
Enable Diable notification for Services auf disabled stellen, denn das wollen wir ja
Bei Condition wieder angeben für wen das gelten soll, Gruppe oder Host etc. In unserem beispiel ein Host.
Hätten wir mehr Windows Server hätten wir das anhand eines Labels wie zum Beispiel Windows machen können.
nun die Services, wir können mehre definieren. Einfach den Service Namen eintragen.

Nun aus Save oben links klicken.

06.png

Nun auf change oben rechts klicken

07.png

Nun auf Activate on selected sites

08.png

Fertig nun werden für die Dienste keine Notifcations mehr rausgesendet.
Wenn man jetzt die Services wieder aufruft.
Dazu einfach in der Suche den host eingeben und drauf klicken

09.png

Dann sieht man alle Services und bei denen wo wir die deaktiviert ahben, sieht man ein duchgestrichendes Lautsprechersymbol.

10.png
Geht man mit der Maus drücber, steht da Notiifications are disabled for this service

11.png

Fertig.

Wartungszeiten - geplante Downtimes festlegen

Beschreibung:

Es kommt immer mal wieder vor das ein Dienst offline genommen wird.
Oder sogar jeden Tag ein Gerät nicht mehr erreichbar ist, zum Beispiel über ein Backup  was nachts läuft, oder
eine Zwangstrennung den internet Providers.
Hier kommen Wartungszeiten ins Spiel, die sogenannten "Scheduled Downtimes"
Hier gibt es zwei Kategorien.
Einmal Host und Service.
Es muss ja nur bei einem Update der SQL Datenbank zum Beispiel ja nicht der ganze Host weg sein.
Dann würde man da für einen oder mehrere Services eine Downtime einrichten.

Einrichtung:

Downtime eines Host definieren

Dazu loggen wir uns in der Checkmk Oberfläche ein.

Dann auf Setup ->Host monitoring rules

01.png

Dann ganz rechts auf Recurring downtimes for Hosts

02.png

Dann auf Add rule klicken

03.png

Hier definieren wir ein beispiel das jeden tag um 23:50 - 00:05 eine Downtime stattfindet, wegen Backups und so die Maschine nicht verfügbar ist.

Nun eine beschreibung vergeben für de Rule vergeben
Nun eine beschreibung vergeben, die die Downtime beschreibt

Wann die Downtime zum ersten mal stattfindet, hier 2023.05.04 um 23:50:00 UHR
Will man das die Downtime nur einmal ist, würde man den Haken downtime will not start anymore after einhaken. Was wir aber nicht wollen denn sie soll ja täglich ablaufen.
Dazu dann in repaet this downtime im dropdown menu  das intervall auswählen, in diesem Fall day für täglich.
Nun angeben, wie lang die Downtime sein soll. Hier 0 Stunden und 15 min.
Damit beginnt unsere Downtime 23:50 - 0:05 UHR

Jetzt wieder wie bei allen Regeln auswählen ob es Pro Host oder Gruppe oder sonst irgendwelchen Kretierien gelten soll.

04.png

Nun auf Save klicken

05.png

Nun auf change klicken

06.png

Und auf activate klicken

07.png

Downtime eines Service definieren

Den Namen des Service herausbekommen.

Damit wir die Regel anhand des Servicenamens definieren können brauchen wir zuerst den Namen der Regel.
In Unserem Beispiel geht es um einen HTTP Check.

Nun Auf Setup -> HTTP, TCP Email Checks klicken

13.png

Nun auf Check HTTP Service klicken

14.png

Nun sehen wir eine Liste mit den Checks und rechts die Service namen stehen.
Manchmal packt Checkmk noch was vor den den namen. Bei hTTP Check ist es das Wort HTTP oder HTTPS.
Je nachdem ob der Check HTTP oder HTTPS checkt. Darum setzten wir ein .* davor und am ende ein $
Denn dann ist egal ob der check später mal in HTTP oder HTTPS geändert wird. Weil der Name bleibt ja gleich.

15.png

Jetzt haben wir den Namen und können die Downtime regel angelegen

Downtime anlegen

Auf Setup-> Services -> Service monitoring rules klicken

08.png

Dann runterscrollen bis Notifcations und dann Recurring downtimes for Services anklicken

09.png

Dann auf Add rule klicken

10.png

Hier definieren wir ein beispiel das jeden tag um 23:50 - 00:05 eine Downtime stattfindet, wegen Backups und so die Maschine nicht verfügbar ist.

Nun eine beschreibung vergeben für de Rule vergeben
Nun eine beschreibung vergeben, die die Downtime beschreibt

Wann die Downtime zum ersten mal stattfindet, hier 2023.05.04 um 23:50:00 UHR
Will man das die Downtime nur einmal ist, würde man den Haken downtime will not start anymore after einhaken. Was wir aber nicht wollen denn sie soll ja täglich ablaufen.
Dazu dann in repeat this downtime im dropdown menu  das intervall auswählen, in diesem Fall day für täglich.
Nun angeben, wie lang die Downtime sein soll. Hier 0 Stunden und 15 min.
Damit beginnt unsere Downtime 23:50 - 0:05 UHR

Jetzt wieder wie bei allen Regeln auswählen ob es Pro Host oder Gruppe oder sonst irgendwelchen Kretierien gelten soll.
hier wählen wir service aus und geben den Service Namen an.
Beim Service wird immer der Anfang genommen und am Ende muss ein $ Zeichen sein, damit das System weiß hier ist Ende.
In unserem Beispiel : .*check-rvs-prod-https-available$

11.png

Nun die Condition einstellen.

12.png

Dann auf Save klicken

05.png

Dann auf change klicken.

06.png

Nun activate on selected site anklicken.

07.png

Fertig


Discovery anpassen -> Netzwerkkarten ausschliessen

Beschreibung:

Manchmal möchte man Geräte nicht erfassen, so wie die tap Adapter von VPNs oder Virtuellen machinen.
Dazu gibt es eine Möglichkeit Discovery Rules anzulegen.
In dem gleichen Menü kann man noch andere Discovery eigenschaften festlegen.
Hier werden wir die Netzwerkkarten festlegen.

Neue Rule erstellen

Dazu auf Setup -> Discovery Rules gehen.

Auswahl_013.png

Dort in unserem Fall auf Network interface and switch port discovery klicken

Auswahl_014.png

Add Rule anklicken

Auswahl_015.png

Nun folgendes ausfüllen:
Description: was die rule machen soll
Appearance of network interface : Use alias
Conditions for this rule to apply : specify matching condition
Match interface alias (regex) : anhaken
und dort alle interfaces rein die gefunden werden sollen. Im regex format ist .* ein asterisk

Auswahl_016.png

Diese dann speichern und übernehmen.
Diese Rule wird dann in Zukunft angewandt.
Sollten die Devices schon erkannt worden sein, die man nicht haben möchte müssen diese trotzdem noch manuell entfernt werden. Diese Rule gillt für Zukünftige Devices.
Fertig