checkmk - Dockerinstallation
-
Nachdem ich wieder ein wenig hier umgebaut habe, wollte ich eine checkmk Installation installieren. Aber wo? Ich habe hier eine pfSense, ok mit FreeBSD scheidet das als Installationsziel aus. Auf meinem ROCKPro64, mein neues NAS mit Debian Buster 10.1, scheiterte die Installation an nicht vorhandenem arm Pakete. Gut, das ich da noch über die Docker Installation gestolpert bin
Da auf meinem Haupt-PC sowieso Docker installiert ist, bot sich das an es mal auszuprobieren.
Die Anleitung zur Dockerinstallation findet man hier. https://checkmk.de/cms_introduction_docker.html
Installation
Docker
apt install docker.io
checkmk Container
root@debian:~# docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v monitoring:/omd/sites --name monitoring -v /etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest Unable to find image 'checkmk/check-mk-raw:1.6.0-latest' locally 1.6.0-latest: Pulling from checkmk/check-mk-raw 8f91359f1fff: Pull complete 3d794619eec5: Pull complete 1468b0cb296b: Pull complete 787a36ef0a12: Pull complete 159fac9366a1: Pull complete fefc9fe50b26: Pull complete Digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Status: Downloaded newer image for checkmk/check-mk-raw:1.6.0-latest
Nach der Installation müssen wir uns Logfile schauen, damit wir das Passwort bekommen.
root@debian:~# docker container logs monitoring ### CREATING SITE 'cmk' Adding /opt/omd/sites/cmk/tmp to /etc/fstab. Going to set TMPFS to off. Created new site cmk with version 1.6.0p5.cre. The site can be started with omd start cmk. The default web UI is available at http://xxxxxxxxxx/cmk/ The admin user for the web applications is cmkadmin with password: password (It can be changed with 'htpasswd -m ~/etc/htpasswd cmkadmin' as site user. ) Please do a su - cmk for administration of this site. ### STARTING XINETD [ ok ] Starting internet superserver: xinetd. ### STARTING SITE Starting mkeventd...OK Starting rrdcached...OK Starting npcd...OK Starting nagios...OK Starting apache...OK Initializing Crontab...OK ### STARTING CRON ### CONTAINER STARTED
Danach kann man den Container erreichen. Jetzt sollte man als erstes das generierte Passwort durch ein eigenes ersetzen. Dazu brauchen wird die ID des Containers
root@frank-MS-7C37:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b59475ab385b checkmk/check-mk-raw:2.0.0-latest "/docker-entrypoint.…" 3 minutes ago Up 3 minutes (healthy) 6557/tcp, 0.0.0.0:8080->5000/tcp monitoring
Jetzt einloggen
root@frank-MS-7C37:~# docker exec -it b59475ab385b bash root@b59475ab385b:/#
Jetzt sind wir innerhalb des Docker Containers. Und nun das Passwort wechseln!!
root@b59475ab385b:/# omd su cmk OMD[cmk]:~$ htpasswd etc/htpasswd cmkadmin New password: Re-type new password: Updating password for user cmkadmin
Nun steht dem Einloggen nichts mehr im Wege.
Und hier nach dem Einloggen.
Sicherheit
Bitte das hier unbedingt beachten. https://checkmk.de/cms_agent_linux.html#security
Docker
docker ps zeigt alle laufenden Docker Container an.
root@debian:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES Container-ID checkmk/check-mk-raw:1.6.0-latest "/docker-entrypoint.…" 25 hours ago Up 25 hours (healthy) 6557/tcp, 0.0.0.0:8080->5000/tcp monitoring
In die Kommandozeile des Containers wechseln.
docker exec -it Container-ID bash
Sicherheit der Agents
Dazu bitte die Dokumentation beachten!
-
Ich hatte damals vergessen, die CheckMK Installation zu sichern. Jo, dann halt von vorne. Aber das ist bei den Dockerinstallationen für mich alles noch was neu
Backup erstellen
Was muss in das Feld "Directory to save the backup to" rein!?!?!?
Es hat etwas gedauert, bis es bei mir Klick gemacht hat. Wenn man sich in die Dockerinstallation einloggt
docker exec -it Container-ID bash
dann wird es etwas klarer. Wir bewegen uns ja in diesem Dateiverzeichnis.
root@5e2e67e33438:/# ls -lha opt/omd/sites total 20K drwxr-xr-x 4 cmk 1001 4.0K Jun 12 22:27 . drwxr-xr-x 1 root root 4.0K Jun 10 18:52 .. drwxr-xr-x 3 cmk 1001 4.0K Jun 12 22:30 backup drwxr-xr-x 8 cmk 1001 4.0K Jun 11 20:23 cmk
Das Verzeichnis backup habe ich angelegt. Danach konnte ich mit CheckMK ein Backup anlegen. Jo, aber wo liegen die Daten auf dem Host?
Suche auf dem Host
Beim Startaufruf, wird das hier übergeben.
-v monitoring:/omd/sites
In der Anleitung steht folgendes.
Diese Option bindet die Daten der Instanz in diesem Container an eine persistente Stelle im Dateisystem des Docker-Node. Sie gehen daher nicht verloren, wenn der Container wieder entfernt wird.
Ok. Hilft mir leider noch nicht so richtig. Weiter suchen....
root@frank:/# docker volume inspect monitoring [ { "CreatedAt": "2020-06-12T22:27:13+02:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/monitoring/_data", "Name": "monitoring", "Options": null, "Scope": "local" } ]
Und hier finden wir dann den Mountpoint!
root@frank:/# ls -lha /var/lib/docker/volumes/monitoring/_data insgesamt 16K drwxr-xr-x 4 frank omd 4,0K Jun 12 22:27 . drwxr-xr-x 3 root root 4,0K Jun 11 20:23 .. drwxr-xr-x 3 frank omd 4,0K Jun 12 22:30 backup drwxr-xr-x 8 frank omd 4,0K Jun 11 20:23 cmk
Die Gruppe omd habe ich eingetragen, muss ich noch mal testen ob das überhaupt sein muss. Wird ergänzt.....
Und dort liegen jetzt die persistenten Daten der Docker Installation.
root@frank:/# ls -lha /var/lib/docker/volumes/monitoring/_data/backup/ insgesamt 12K drwxr-xr-x 3 frank omd 4,0K Jun 12 22:30 . drwxr-xr-x 4 frank omd 4,0K Jun 12 22:27 .. drwxrwxr-x 2 frank messagebus 4,0K Jun 12 22:30 Check_MK-5exxxxx3438-cmk-backup-complete
Und dieses Backup kann ich mir dann auf mein NAS schieben
-
Das hat so nicht geklappt
Dann mal schauen, wie man es noch machen könnte. Docker Container sichern.
Sicherung
root@frank-MS-7C37:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ba19e0a9d12 checkmk/check-mk-raw:1.6.0-latest "/docker-entrypoint.…" 14 hours ago Up 2 hours (healthy) 6557/tcp, 0.0.0.0:8080->5000/tcp monitoring root@frank-MS-7C37:~# docker commit -p 3ba19e0a9d12 checkmk_backup sha256:f75be0ea3c256be98979577b880d77718394352ab2b1551343a0a1a3db6a44dc root@frank-MS-7C37:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ba19e0a9d12 checkmk/check-mk-raw:1.6.0-latest "/docker-entrypoint.…" 14 hours ago Up 2 hours (unhealthy) 6557/tcp, 0.0.0.0:8080->5000/tcp monitoring root@frank-MS-7C37:~# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE checkmk_backup latest f75be0ea3c25 11 seconds ago 832MB checkmk/check-mk-raw 1.6.0-latest c3efcf4b5c6e 2 weeks ago 830MB root@frank-MS-7C37:~# docker save -o checkmk_backup.tar checkmk_backup
Danach haben wir eine Sicherung des Docker Containers auf der Platte.
root@frank-MS-7C37:~# ls -lha insgesamt 827M drwx------ 8 root root 4,0K Aug 1 09:57 . drwxr-xr-x 23 root root 4,0K Jul 26 11:14 .. -rw------- 1 root root 826M Aug 1 09:57 checkmk_backup.tar
Den können wir jetzt noch packen
root@frank-MS-7C37:~# gzip checkmk_backup.tar root@frank-MS-7C37:~# ls -lha insgesamt 307M drwx------ 8 root root 4,0K Aug 1 09:58 . drwxr-xr-x 23 root root 4,0K Jul 26 11:14 .. -rw------- 1 root root 307M Aug 1 09:57 checkmk_backup.tar.gz
Wiederherstellung
Ungetestet im Moment, kommt noch
docker load -i checkmk_backup.tar
Starten des Containers dann mit
docker container run -dit -p 8080:5000 --ulimit nofile=1024 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v monitoring:/omd/sites --name monitoring -v /etc/localtime:/etc/localtime:ro --restart always checkmk_backup
Quelle: https://www.laub-home.de/wiki/Docker_Backup_und_Restore_-_eine_kleine_Anleitung
-
Heute mal das Thema noch mal angefasst.
Das Backup heute erstellt und ausprobiert. Läuft
root@:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1ca31c7290b checkmk_backup "/docker-entrypoint.…" 31 seconds ago Up 31 seconds (health: starting) 6557/tcp, 0.0.0.0:8080->5000/tcp monitoring3
-
Das ganze jetzt auch mal praktisch umsetzen, damit der Docker Container auch immer schön gesichert wird.
#!/bin/sh # Script sichert den Docker Container von checkmk. Das Script funktioniert nur, da ich nur EINEN # Docker Container laufen habe! # Wir holen uns die Ausgabe von docker ps docker ps > ps.txt # Mich interessiert nur die 2. Zeile tail -n 1 ps.txt > ps_2.txt # Wir brauchen die ID und speichern diese zwischen ID="$(cut -d' ' -f1 ps_2.txt)" echo $ID # Docker Container sichern! # Damit wird eine Docker Kopie angelegt. docker commit -p $ID checkmk_backup # Hiermit sichern wir den Docker Container als .tar File im angegebenen Pfad. docker save -o /root/checkmk_Docker_Container/checkmk_backup.tar checkmk_backup # Den gesicherten Container aufs NAS schieben rsync -av /root/checkmk_Docker_Container/ /media/NAS/Dokumente/Sicherungen/checkmk_Docker_Container
-
Meine Dockersicherungen versagen immer kläglich, so bald sich die Versionen bei checkmk ändern. Da ich dieses checkmk aber unbedingt brauche, habe ich das mal als Cloud Server bei Hetzner getestet. Da bekam ich beim kleinsten Server, beim Anlegen eines Hostes sofort Speicherprobleme (2GB). Ok, seltsam.. Dann habe ich den Server auf 4GB hoch skaliert. Danach lief es.
Aber, jetzt das Problem. Das hätte ca. 72€ im Jahr nur fürs Monitoring verbrannt. Das war es mir nicht wert, obwohl für das Hobby schon der ein oder andere Euro drauf geht
Also, kommt wieder eine Dockerinstallation auf meine Haupt-PC. Der ist sowieso an und ich weiß das das gut funktioniert. Habe heute im Eingangspost ein paar Anpassungen vorgenommen, was einem halt so auffällt bei einer Neuinstallation.
Danach die ganzen Hosts anlegen, das muss ja einfacher gehen. In der Firma der SysAdmin importiert die ja auch. Also mal die checkmk Dokumentation durchsucht und fündig geworden.
Unter Punkt 6 findet man Import von CSV Dateien.
Das Beispiel aus der Dokumentation
hostname;ip address;alias;agent;snmp_ds lnx17.example.com;192.168.178.48;Webserver;cmk-agent; lnx18.exmpl.com;192.168.178.55;Backupserver;cmk-agent; switch47-11;;Switch47;no-agent;snmp-v2
Das bekommen wir hin, alle meine Server eingetragen,
Fertig, noch ein wenig Feinarbeit danach an den Diensten und es lief wieder.
-
Und noch was Wichtiges.
Damit sichert man den Datenaustausch ab.
Kapitel 7.4. Inbuilt encryption
Den Ordner findet man hier -> /etc/check_mk/encryption.cfg
-
-