Heute drüber gestolpert, man hat sich auch der alten Version des Thunderbirds angenommen.
0aa9e265-95b3-4de6-a8c8-b23c5b980f09-grafik.png
Damit sind zwei wichtige Programme jetzt hoffentlich immer auf dem aktuellsten Stand.
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
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.
Bitte das hier unbedingt beachten. https://checkmk.de/cms_agent_linux.html#security
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
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
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?
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.
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
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