Checkmk 2.4.0p37 部署指南
Checkmk 2.4.0p37 Docker Compose 部署指南:官方 Raw 镜像选型、compose 编排、首次初始化、Web 控制台与 REST API 验证、数据持久化、环境变量与运维命令,基于 Ubuntu 22.04 全量实测。
Checkmk 2.4.0p37 部署指南
目标:用 Docker Compose 从零部署 Checkmk Raw 2.4.0p37 监控平台,覆盖镜像选型、首次初始化、Web 控制台验证、数据持久化、环境变量与日常运维。全部命令与回显已在 Ubuntu 22.04 + Docker Compose v2 环境实测通过。
一、环境信息
| 项目 | 值 |
|---|---|
| 操作系统 | Ubuntu 22.04(x86_64) |
| Checkmk 版本 | Raw Edition 2.4.0p37(镜像内置 2.4.0p37.cre) |
| 容器镜像 | checkmk/check-mk-raw:2.4.0p37(amd64/linux,解压后 3.06GB) |
| 镜像摘要 | sha256:8ac16beb6ff2ff32682ea71376c4bfe6fcd83833a2be213606c92c26fbb01da4 |
| Compose 编排 | Docker Compose v2(docker compose 子命令) |
| 监控 Web UI 端口 | 8140(映射到站点 Apache 5000) |
| Agent 上报端口 | 8141(映射到 agent receiver 8000) |
| 站点数据持久化目录 | /opt/checkmk/sites(挂载到容器 /omd/sites) |
| 管理账号 | cmkadmin / q1w2e3r4(首次初始化时通过环境变量设定) |
| 版本取证日期 | 2026-10-20(Raw 开源版当前最新稳定版,GitHub Releases 与官方下载站实查) |
二、镜像选型说明
Checkmk 官方在 Docker Hub 维护两套镜像仓库,选型时不要混用:
| 镜像仓库 | 对应版本线 | 适用场景 |
|---|---|---|
checkmk/check-mk-raw | Raw 开源版(GPLv2) | 免费全功能,本篇实测所用 |
checkmk/check-mk-enterprise | 企业版(CEE,需订阅激活) | 需 CMC 内核/agent bakery 等企业能力 |
本篇采用 checkmk/check-mk-raw:2.4.0p37,标签与 Raw 开源版最新稳定版补丁级一致(官方下载站 Raw 线最高 2.4.0,2.4.0p37 为该线最新补丁,2026-09-21 发布,查询日期 2026-10-20)。镜像内置完整的 OMD 运行环境:首次启动时自动完成「创建站点 → 初始化配置 → 启动全部服务」,无需人工介入。
💡 技术拓展:拉取镜像时可固定摘要防止标签漂移。
docker pull checkmk/check-mk-raw@sha256:8ac16beb6ff2ff32682ea71376c4bfe6fcd83833a2be213606c92c26fbb01da4等价于拉取当前 2.4.0p37 标签内容,生产部署建议在 compose 中用image: checkmk/check-mk-raw@sha256:...固定。本文为可读性仍写标签形式。
关键内部端口(compose 映射时需要了解):
| 容器内端口 | 用途 | 默认状态 |
|---|---|---|
| 5000 | 站点 Apache(Web UI 入口,站点 URL 前缀 /cmk/) | 开启(APACHE_TCP_ADDR: 0.0.0.0) |
| 8000 | Agent Receiver(被监控端 push agent 上报/注册) | 开启 |
| 6557 | Livestatus TCP(外部程序查询监控状态) | 关闭(LIVESTATUS_TCP: off,可用环境变量打开) |
| 6556 | 被监控端 agent 端口(在被监控主机上,不在监控服务端) | — |
三、前置条件
- Ubuntu 22.04 服务器,已安装 Docker Engine 与 Compose v2 插件:
docker version --format '{{.Server.Version}}' docker compose version - 端口 8140/8141 未被占用(
ss -ltn | grep -E "8140|8141"无输出)。 - 服务器时钟同步(NTP/chrony),监控数据与图表时间轴依赖系统时间。
- 磁盘空间 ≥ 10GB(镜像 3GB + 站点数据与 RRD 增长预留)。
- 持久化目录提前创建并归属 UID 1000(镜像内站点用户为 uid=1000):
mkdir -p /opt/checkmk/sites chown 1000:1000 /opt/checkmk/sites
四、部署步骤
4.1 编写 docker-compose.yml
在部署目录(本文用 /opt/checkmk)创建 docker-compose.yml:
services:
checkmk:
image: checkmk/check-mk-raw:2.4.0p37
container_name: checkmk-2-4-0p37-server
hostname: cmk-server
environment:
CMK_SITE_ID: cmk
CMK_PASSWORD: q1w2e3r4
CMK_AUTOMATION_USER: automation
CMK_AUTOMATION_PASSWORD: q1w2e3r4
ulimits:
nofile:
soft: 8192
hard: 8192
tmpfs:
- /opt/omd/sites/cmk/tmp:uid=1000,gid=1000,mode=750
volumes:
- /opt/checkmk/sites:/omd/sites
- /etc/localtime:/etc/localtime:ro
ports:
- "8140:5000"
- "8141:8000"
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5000/cmk/check_mk/"]
interval: 60s
timeout: 10s
retries: 3
start_period: 60s
networks:
- checkmk-net
networks:
checkmk-net:
driver: bridge
ipam:
config:
- subnet: 10.89.61.0/24
配置项逐项说明:
| 配置项 | 说明 |
|---|---|
CMK_SITE_ID | 站点名(OMD 实例名),URL 前缀随之变化;默认 cmk,本文显式声明 |
CMK_PASSWORD | cmkadmin 初始密码,仅首次初始化时生效,之后改密码走 Web 界面或 cmk-passwd |
CMK_AUTOMATION_USER / CMK_AUTOMATION_PASSWORD | 自动化接口用户(REST API/自动化调用用) |
ulimits.nofile | 官方镜像要求最低 1024,本文设 8192 应对中大规模监控项打开文件数 |
tmpfs | 把站点临时目录挂到内存,提升核心配置编译与检查吞吐;mode=750 与站点用户权限匹配 |
volumes | /omd/sites 是全部站点数据(配置、RRD、日志)所在,必须持久化;/etc/localtime 保持时区一致 |
ports | 8140→5000(Web UI)、8141→8000(agent 上报),按宿主机空闲端口调整 |
healthcheck | 直接探测 Web 入口,start_period 给首次初始化留 60 秒 |
networks.ipam | 显式指定子网,避免与既有 Docker 网段冲突 |
⚠️ 注意:官方文档示例中 tmpfs 写法为
u=rx,在新版 Docker Engine 上会报invalid tmpfs option "u"启动失败(实测报错原文:Error response from daemon: invalid tmpfs option "u")。请使用本文的uid=1000,gid=1000,mode=750写法。
4.2 启动并观察首次初始化
cd /opt/checkmk
docker compose up -d
实测回显(首次启动,数据目录为空时镜像内自动建站):
Network compose_checkmk-net Created
Container checkmk-2-4-0p37-server Creating
Container checkmk-2-4-0p37-server Created
Container checkmk-2-4-0p37-server Starting
Container checkmk-2-4-0p37-server Started
首次启动日志(docker compose logs checkmk | head -22 输出节选)可见建站全过程,且确认 CMK_PASSWORD 已生效:
### CREATING SITE 'cmk'
Generating configuration for core (type nagios)...
Precompiling host checks...OK
Adding /opt/omd/sites/cmk/tmp to /etc/fstab.
Going to set TMPFS to off.
Executing post-create script "01_create-sample-config.py"...OK
Executing post-create script "02_cmk-compute-api-spec"...OK
Executing post-create script "03_message-broker-certs"...OK
Updating core configuration...
Created new site cmk with version 2.4.0p37.cre.
The site can be started with omd start cmk.
The default web UI is available at http://cmk-server/cmk/
The admin user for the web applications is cmkadmin with password: q1w2e3r4
For command line administration of the site, log in with 'omd su cmk'.
After logging in, you can change the password for cmkadmin with 'cmk-passwd cmkadmin'.
日志尾部出现 ### CONTAINER STARTED 即初始化完成(实测 40–60 秒内完成,数据目录已存在时跳过建站直接启动):
Starting crontab...OK
### STARTING CRON
### CONTAINER STARTED
4.3 确认运行状态
docker compose ps
实测回显(同机若有其他无关服务会一并列出,关注 checkmk 一行):
NAME STATUS PORTS
checkmk-2-4-0p37-server Up 59 seconds (healthy) 6557/tcp, 0.0.0.0:8140->5000/tcp, [::]:8140->5000/tcp, 0.0.0.0:8141->8000/tcp, [::]:8141->8000/tcp
进入容器确认站点服务状态(omd status):
docker exec checkmk-2-4-0p37-server omd status cmk
实测回显:
agent-receiver: running
mkeventd: running
rrdcached: running
redis: running
npcd: running
automation-helper: running
ui-job-scheduler: running
nagios: running
apache: running
crontab: running
---------------------------
Overall state: running
4.4 验证 Web 控制台与 REST API
宿主机上用 curl 验证 Web UI(站点 URL 固定前缀为 /cmk/check_mk/,cmkadmin 密码来自 CMK_PASSWORD):
curl -s -o /dev/null -w "Web UI: HTTP %{http_code}\n" \
-u cmkadmin:q1w2e3r4 http://localhost:8140/cmk/check_mk/login.py
curl -s -u cmkadmin:q1w2e3r4 http://localhost:8140/cmk/check_mk/api/1.0/version
实测回显(登录重定向 302、API 返回版本信息):
Web UI: HTTP 302
{"site": "cmk", "group": "", "rest_api": {"revision": "0"}, "versions": {"apache": [2, 4, 52], "checkmk": "2.4.0p37.cre", "python": "3.12.13 (main, Aug 14 2026, 09:49:44) [GCC 14.2.0]", "mod_wsgi": [4, 9, 4], "wsgi": [1, 0]}, "edition": "cre", "demo": false}
浏览器访问 http://<服务器IP>:8140/cmk/check_mk/,浏览器会先弹出 HTTP Basic 认证框(Checkmk 站点在 Apache 层启用 htpasswd 认证),输入 cmkadmin / q1w2e3r4 后进入 Checkmk 主界面。
💡 说明:Apache 层的 htpasswd 认证是 OMD 站点默认行为,认证文件位于站点目录
etc/htpasswd。未认证的请求返回 401(实测响应头WWW-Authenticate: Basic realm="OMD Monitoring")。
五、数据持久化说明
所有监控数据都在容器的 /omd/sites/<站点名> 下,本方案整体挂载到宿主机 /opt/checkmk/sites。首次启动后目录结构:
/opt/checkmk/sites/
└── cmk/ # 站点名即目录名
├── etc/check_mk/ # WATO 配置(主机、规则集)
├── etc/htpasswd # Web 用户认证文件
├── var/check_mk/core/ # 监控核心状态
├── var/check_mk/rrd/ # 性能数据 RRD 文件
├── var/mkeventd/ # 事件控制台数据
└── log/ # 站点日志
备份与迁移:整个 /opt/checkmk/sites 打包即可带走全部配置与历史数据;也可以用 OMD 自带备份命令做单站点归档:
docker exec checkmk-2-4-0p37-server omd backup cmk /tmp/cmk-backup.tar.gz
恢复用 omd restore(先停站点再恢复,详见官方 OMD 管理文档)。
⚠️ 注意:不要只挂载
/omd/sites/cmk的某个子目录(如仅挂var/check_mk),首次建站时入口点需要对站点目录整体做初始化,部分挂载可能导致初始化失败。整目录挂载/omd/sites是最稳妥的方式。
六、环境变量表
镜像入口点识别以下环境变量(实测 docker exec checkmk-2-4-0p37-server env | grep -i cmk 回显与镜像文档核对):
| 环境变量 | 默认值 | 说明 |
|---|---|---|
CMK_SITE_ID | cmk | 站点名,决定 URL 前缀与数据目录名 |
CMK_PASSWORD | 随机生成 | cmkadmin 初始密码,仅首次建站生效 |
CMK_AUTOMATION_USER | automation | 自动化用户名 |
CMK_AUTOMATION_PASSWORD | 随机生成 | 自动化用户密码,仅首次建站生效 |
CMK_LIVESTATUS_TCP | 空(off) | 设为 on 时启用 Livestatus TCP 6557,供外部程序查询 |
CMK_CONTAINERIZED | TRUE(镜像内置) | 容器化运行标记,入口点据此关闭 tmpfs 自挂载等主机特权操作 |
💡 说明:
CMK_PASSWORD只在「数据目录为空、首次建站」时生效。忘记密码时可进入容器执行omd su cmk -c 'cmk-passwd cmkadmin'重置(按提示输入新密码)。
七、配置参数说明
站点级配置通过 omd config 管理(进入容器执行)。查看当前配置:
docker exec checkmk-2-4-0p37-server omd config cmk show | grep -E "APACHE|LIVESTATUS|AUTOSTART|TMPFS|CORE"
实测回显:
APACHE_MODE: own
APACHE_TCP_ADDR: 0.0.0.0
APACHE_TCP_PORT: 5000
AUTOSTART: on
LIVESTATUS_TCP: off
TMPFS: off
CORE: nagios
| 参数 | 含义 | 常用调整 |
|---|---|---|
CORE | 监控内核类型 | Raw 版固定 nagios(企业版镜像可选 cmc) |
APACHE_TCP_ADDR | 站点 Apache 监听地址 | 镜像内已设 0.0.0.0 以接受端口映射,勿改回 127.0.0.1 |
APACHE_TCP_PORT | 站点 Apache 端口 | 默认 5000,与 compose 端口映射对应 |
AUTOSTART | 容器启动时自动拉起站点 | 保持 on |
LIVESTATUS_TCP | Livestatus TCP 查询 | 外部对接(如自研看板)设 on,并在 compose 放行 6557 |
TMPFS | 站点 tmpfs 自挂载 | 容器内无挂载权限保持 off,由 compose 的 tmpfs 承担加速职责 |
修改示例(打开 Livestatus TCP,实测命令与回显):
docker exec checkmk-2-4-0p37-server omd config cmk set LIVESTATUS_TCP on
Creating temporary filesystem /opt/omd/sites/cmk/tmp...Reloading monitoring core...OK
八、配置文件挂载
如需把配置模板带入容器,可在 volumes 中追加只读挂载,常见两类:
volumes:
- /opt/checkmk/sites:/omd/sites
- /etc/localtime:/etc/localtime:ro
/omd/sites:站点全量数据(必挂,持久化核心)。/etc/localtime:ro:与宿主机时区保持一致,避免图表时间轴偏移(只读挂载)。
Checkmk 自身的监控配置(主机、规则)不走外部文件挂载,而是通过 Web 界面(WATO)或 REST API 管理,落盘在 /omd/sites/cmk/etc/check_mk/ 下,已随数据卷持久化。
九、等价 docker run
不用 Compose 时,等价的单命令启动方式:
docker run -d \
--name checkmk-2-4-0p37-server \
--hostname cmk-server \
-p 8140:5000 \
-p 8141:8000 \
-e CMK_SITE_ID="cmk" \
-e CMK_PASSWORD="q1w2e3r4" \
-e CMK_AUTOMATION_USER="automation" \
-e CMK_AUTOMATION_PASSWORD="q1w2e3r4" \
--ulimit nofile=8192:8192 \
--tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000,mode=750 \
-v /opt/checkmk/sites:/omd/sites \
-v /etc/localtime:/etc/localtime:ro \
--restart unless-stopped \
checkmk/check-mk-raw:2.4.0p37
与 Compose 方式行为一致(首次启动建站、后续直接启动),验证方法同 4.3/4.4。
十、常用运维命令
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看状态 | docker compose ps | 含 healthcheck 结果 |
| 跟踪日志 | docker compose logs -f checkmk | 首次建站日志也在这里 |
| 站点服务状态 | docker exec checkmk-2-4-0p37-server omd status cmk | 逐服务 running/stopped |
| 重启站点(不动数据) | docker exec checkmk-2-4-0p37-server omd restart cmk | 核心重编译配置并重启 |
| 重启容器 | docker compose restart | 数据卷不受影响 |
| 升级镜像 | 改 image: 标签 → docker compose up -d → docker exec checkmk-2-4-0p37-server omd update cmk | 站点数据卷跨版本保留,升级后需执行 omd update 迁移站点 |
| 站点备份 | docker exec checkmk-2-4-0p37-server omd backup cmk /tmp/cmk.tar.gz | 归档单站点 |
| 完全清理 | docker compose down -v 并清空 /opt/checkmk/sites | 连数据一起删除,慎用 |
⚠️ 注意:跨版本升级(如 2.4.0 → 2.4.1p1 或 2.5.x)必须逐线进行且先看官方兼容矩阵;企业版与 Raw 版镜像不能互换挂载同一数据目录后再降回,企业版写入的格式部分内容 Raw 版无法识别。
十一、常见问题
Q1:启动报 Error response from daemon: invalid tmpfs option "u"
官方文档示例的 tmpfs 写法 uid=1000,gid=1000,u=rx 在新版 Docker Engine 上不被接受(实测报错)。把 u=rx 改为 mode=750(本文 4.1 配置)即可正常启动。
Q2:首次启动后访问 Web 返回 401
这是 Apache 层 htpasswd 认证在等待凭据(WWW-Authenticate: Basic realm="OMD Monitoring"),不是故障。用 cmkadmin + CMK_PASSWORD 设定的密码通过 Basic 认证即可。若密码未知且非首次初始化设定,进容器 omd su cmk -c 'cmk-passwd cmkadmin' 重置。
Q3:CMK_PASSWORD 设了但登录密码不对
该变量只在数据目录为空的首次建站时生效。如果容器曾无此变量启动过(比如先跑了官方默认 compose),站点已用随机密码初始化;删掉数据目录重建,或按 Q2 重置密码。
Q4:外部工具连不上 Livestatus 6557
默认关闭(LIVESTATUS_TCP: off,实测 omd config cmk show 回显)。设 CMK_LIVESTATUS_TCP: on 环境变量(或在容器内 omd config cmk set LIVESTATUS_TCP on),并在 compose 的 ports 中增加 6557:6557。
Q5:容器 healthy 但 Web 无响应
检查是否访问了错误端口/路径:Web 入口是映射到站点 Apache 5000 的端口加 /cmk/check_mk/ 前缀(本篇为 8140),直接访问 / 会 302 重定向,属于正常行为。
十二、参考链接
- 官方容器部署文档:https://docs.checkmk.com/latest/en/deploy_container.html
- Raw 版镜像(Docker Hub):https://hub.docker.com/r/checkmk/check-mk-raw
- 官方下载站(版本核对):https://checkmk.com/download?edition=cre
- OMD 站点管理(backup/restore/update):https://docs.checkmk.com/latest/en/omd_management.html
- REST API 文档:https://docs.checkmk.com/latest/en/rest_api.html
- 本站认知篇:《Checkmk 2.4.0p37 介绍与选型指南》