From cf03abe3dcd914c2006711a3eba09eebf1815188 Mon Sep 17 00:00:00 2001 From: DoTheEvo Date: Thu, 13 Jun 2024 19:09:43 +0200 Subject: [PATCH] update --- checkmk/readme.md | 163 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 checkmk/readme.md diff --git a/checkmk/readme.md b/checkmk/readme.md new file mode 100644 index 0000000..34b0f28 --- /dev/null +++ b/checkmk/readme.md @@ -0,0 +1,163 @@ +# checkmk + +###### guide-by-example + +![logo](https://i.imgur.com/yMDhlLJ.png) + +# Purpose + +Monitoring of machines, containers, services, logs, ... + +* [Official site](https://checkmk.com/) +* [github](https://github.com/Checkmk/checkmk) + +Monitoring in this case means gathering and showing information on how services +or machines or containers are running. +Can be cpu, io, ram, disk use, network throughput, latency,... +can be number of http requests, errors, results of backups... + +# Overview + +[Good youtube overview.](https://www.youtube.com/watch?v=7OnhuCsR7jg) + +checkmk is a fork of nagios and is mostly written in python.
+Interesting fact is that there is no database where data are stored, +RRD files for metrics and plaintext logs for everything else. + + +![overview](https://i.imgur.com/HB0bLyU.png) + +### Editions + +[Docs](https://docs.checkmk.com/master/en/intro_setup.html#editions) + +* **raw** - 100% open source, unlimited use, some features are missing + or are harder to set up. For example no containers monitoring, + no push mode from agents. +* **cloud** - full featured with better performing version of the monitoring micro core, + but with 750 services limit + +I am gonna go with cloud for now, as 750 sounds like enough for my use cases. + +# Files and directory structure + +``` +/home/ + └── ~/ + └── docker/ + └── checkmk/ + ├── 🗁 checkmk_data/ + ├── 🗋 docker-compose.yml + └── 🗋 .env +``` + +* `checkmk_data/` - a directory where checkmk_data stores its persistent data +* `.env` - a file containing environment variables for docker compose +* `docker-compose.yml` - a docker compose file, telling docker how to run the containers + +The two files must be provided.
+The directory is created by docker compose on the first run. + +# docker-compose + +A simple compose.
+Of note is use of ram as tmpfs mount into the container +and setting a 1024 limit for max open files by a single process. + +*Note* - the port is only `expose`, since theres expectation of use +of a reverse proxy and accessing the services by hostname, not ip and port. + +[Docs](https://docs.checkmk.com/latest/en/ports.html) on ports used in cmk. + +`docker-compose.yml` +```yml +services: + checkmk: + image: checkmk/check-mk-raw + container_name: checkmk + hostname: checkmk + restart: unless-stopped + env_file: .env + ulimits: + nofile: 1024 + tmpfs: + - /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 + volumes: + - ./checkmk_data:/omd/sites + - /etc/localtime:/etc/localtime:ro + expose: + - "5000" # webgui + ports: + - 8000:8000 # agents who push + +networks: + default: + name: $DOCKER_MY_NETWORK + external: true +``` + +`.env` + +```bash +# GENERAL +DOCKER_MY_NETWORK=caddy_net +TZ=Europe/Bratislava + +# CMK + +CMK_SITE_ID=dom +CMK_PASSWORD=WUx666yd0qCWh +``` + +**All containers must be on the same network**.
+Which is named in the `.env` file.
+If one does not exist yet: `docker network create caddy_net` + +## Reverse proxy + +Caddy v2 is used, details +[here](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/caddy_v2).
+ +`Caddyfile` +```php +cmk.{$MY_DOMAIN} { + reverse_proxy checkmk:5000 +} +``` + + + +--- +--- + + + +# Push + + +# Alerts + + +# Logs + +# Update + +Manual image update: + +- `docker-compose pull`
+- `docker-compose up -d`
+- `docker image prune` + +# Backup and restore + +#### Backup + +Using [borg](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/borg_backup) +that makes daily snapshot of the entire directory. + +#### Restore + +* down the containers `docker-compose down`
+* delete the entire monitoring directory
+* from the backup copy back the monitoring directory
+* start the containers `docker-compose up -d`