openITCOCKPIT 5.9.0 常用 CLI 命令与工具详解

openITCOCKPIT 5.9.0 命令行工具体系实测详解:oitc(CakePHP console 封装)全命令组速览,nagios_export/config_generator/supervisor/cronjobs/reset_password/roles/acl.aco_sync/dump/system_health 等核心命令逐条实测回显,含 Docker 形态下 --verify 的落点差异与 gearadmin/naemon -v/monitoring-plugins 辅助工具验证。

openITCOCKPITopenITCOCKPIT自托管监控2026/11/01

openITCOCKPIT 5.9.0 常用 CLI 命令与工具详解

目标:系统实测 openITCOCKPIT 5.9.0 的 CLI 工具体系——平台主命令 oitc 的核心命令组(配置导出、配置生成、进程管控、定时任务、账号权限、数据导出、健康检查)与周边工具(gearadmin、naemon 校验、monitoring-plugins 插件集),每条命令给出参数说明与真实回显,作为 Web UI 之外的自动化运维入口手册。部署背景见《openITCOCKPIT Docker Compose 部署指南》,配置体系见《openITCOCKPIT 5.9.0 配置参数详解》。

一、环境信息

  • 被测版本:openITCOCKPIT Community Edition 5.9.0(Docker Compose 全栈,17 服务运行中;版本溯源见《openITCOCKPIT 介绍与选型指南》)
  • CLI 入口:openitcockpit 服务容器内 /usr/bin/oitc(实测 which oitc)
  • 引擎侧:naemon 服务容器(Naemon 1.5.1,实测 status.dat info.version=1.5.1),检查插件位于 mod_gearman_worker 服务容器
  • 执行方式:docker compose exec openitcockpit bash 进入平台容器后运行 oitc <command>(官方排障章节「Execute commands in a container」)

oitc 本体是 CakePHP console 的封装脚本,实测关键逻辑(节选自 /usr/bin/oitc):

# 保留全部环境变量(Docker 内配置生成所需,官方注释 ITC-2986)
export PATH="${PATH:+$PATH:}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
WWW_GID="$(getent group www-data | cut -d: -f3)"
# 新建文件组可写,保证 Web 进程可覆写
umask 002
# 以 root + www-data 组执行 CakePHP console
exec setpriv --reuid 0 --regid "$WWW_GID" --keep-groups -- /opt/openitc/frontend/bin/cake "$@"

要点:oitc 即 cake——帮助尾注原文 To run a command, type cake command_name [args|options];它只存在于 openitcockpit 服务容器(引擎容器内无此命令),所有平台级 CLI 操作都在这一侧完成。

二、工具概览

oitc --help 实测输出按组列出全部命令(60+ 项,节选核心):

Available Commands:

acl:
 - aco_sync
 └─── Perform a full sync on the ACO table...
 - aco_update
 - recover
app:
 - cmd
 - config_generator
 - cronjobs
 - dump
 - gearman_worker
 - nagios_export
 - reset_password
 - roles
 - setup
 - supervisor
 - system_health
 - version_check
 - wipe
cakephp:
 - cache clear / cache clear_all / routes / version
migrations:
 - migrations migrate / migrations seed / ...
checkmk_module: / grafana_module: / prometheus_module: / autoreport_module: ...

按用途归类,本文详解以下 9 组命令 + 3 个周边工具:

类别命令用途
配置导出oitc nagios_export数据库对象 → Naemon 配置文件
配置生成oitc config_generator环境变量 → config/*.php
进程管控oitc supervisor跨容器启停引擎/服务进程
任务调度oitc cronjobs内置定时任务列表/强制执行
账号权限oitc reset_password / roles / acl.aco_sync口令重置、角色授权、权限树同步
数据导出oitc dump配置对象批量导出 PHP 文件
健康与版本oitc system_health / version_check / statusengine_version状态自检
外部命令oitc cmd向引擎命令管道投递
周边工具gearadmin / naemon -v / check_* -V / mysql --defaults-file队列、校验、插件、数据库

三、前置条件

# 全栈在跑(按《openITCOCKPIT Docker Compose 部署指南》一文部署完成后)
docker compose ps --format '{{.Name}}\t{{.Status}}' | grep -c Up
17
# 进入平台容器
docker compose exec openitcockpit bash
which oitc
/usr/bin/oitc

四、各工具详解

4.1 oitc nagios_export —— 监控配置导出

把数据库中的主机/服务/命令等对象渲染成 Naemon 配置目录。参数实测(oitc nagios_export --help):

Usage:
cake nagios_export [-h] [-q] [--resource] [-v] [--verify]

--resource      Only write the file /opt/openitc/nagios/etc/resource.cfg
--verify        Verify Nagios/Naemon configuration files and exit.

执行导出(实测回显):

oitc nagios_export -v
Generating new monitoring configuration. This could take awhile...
Monitoring configuration successfully generated.
Execute "systemctl reload naemon" to load the new configuration

产物目录结构(实测 ls /opt/openitc/nagios/etc/config/,15 个子目录):

commands        hostdependencies  hostgroups     servicetemplates
contactgroups   hostescalations   hosts          timeperiods
contacts        hosttemplates     services
defaults        servicedependencies  serviceescalations  servicegroups

对象文件示例(实测 cat config/hosts/hosts_minified.cfg 节选)——默认启用 minified 模式(nagios.php export.minified=true),全部主机压缩进单文件:

;#########################################################################
;#    DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN  #
;#                   File generated by openITCOCKPIT                     #
;#########################################################################
define host{
    use                                 efbee68c-cf48-4b78-83f5-c856c56177f0
    host_name                           c36b8048-93ce-4385-ac19-ab5c90574b77
    display_name                        default host
    address                             127.0.0.1
}

(对象名使用 UUID 是 openITCOCKPIT 的固有设计:Web 端改名不影响引擎对象标识,display_name 才是展示名。)

Docker 形态注意:--verify 在 openitcockpit 容器内不可用(实测回显):

oitc nagios_export --verify
Verifying monitoring configuration files, please standby...
sudo: /opt/openitc/nagios/bin/nagios: command not found
2026-11-01 09:05:21 error: Error with Naemon / Nagios configuration! Verification failed!

原因:校验器调用引擎二进制,而引擎在独立服务容器。正确校验位置见 4.10 节 naemon -v。

4.2 oitc config_generator —— 平台配置再生成

环境变量 → config/*.php 的渲染器(模板在 src/config_templates/config/*.tpl,占位符 {{address}} 式替换)。参数实测(--help 仅 -h/-q/-v 三项)。执行回显:

oitc config_generator -v
Check for pending configuration files...
Ok

(Ok = 无待更新文件,幂等。)该命令由内置 cronjob 每 1 分钟自动执行,手工触发场景:改完 openitcockpit.env 重建服务后想立即确认渲染结果,或直接 cat /opt/openitc/frontend/config/gearman.php 核对。

4.3 oitc supervisor —— 跨容器进程管控

官方文档「Restarting services」指定的运维入口:从 openitcockpit 容器管控其他容器的 supervisor 进程。参数实测(oitc supervisor --help):

Usage:
cake supervisor [-h] [-q] [-v] <start|stop|restart|status> <oitc_cmd|gearman_worker|event-collectd|openitcockpit-websocket|prometheus_bridge|customalert_worker|naemon|prometheus|nsta|statusengine|openitcockpit-node|nginx|php-fpm|snmptrapd|snmptt>

(可选服务名 14 个,覆盖引擎、worker、websocket、图表桥等。)实测:

oitc supervisor status naemon
Service naemon is running. pid 53, uptime 0:17:56

官方示例集:oitc supervisor restart nginx、oitc supervisor stop nginx、oitc supervisor start nginx。

4.4 oitc cronjobs —— 内置定时任务

参数实测(--help):-f 全部强制执行、-l 列出、-t <Task> 单跑指定任务。列表实测(节选):

oitc cronjobs -l
+---------------------------------+------------------+----------+---------------------+
| Task                            | Plugin           | Interval | Last scheduled      |
+---------------------------------+------------------+----------+---------------------+
| CleanupTemp                     | Core             | 10       | 2026-11-01 09:04:01 |
| DatabaseCleanup                 | Core             | 1440     | 2026-11-01 08:44:01 |
| RecurringDowntimes              | Core             | 10       | 2026-11-01 09:05:01 |
| CpuLoad                         | Core             | 15       | 2026-11-01 09:00:01 |
| VersionCheck                    | Core             | 1440     | 2026-11-01 08:44:02 |
| SystemHealth                    | Core             | 1        | 2026-11-01 09:06:01 |
| SystemMetrics                   | Core             | 240      | 2026-11-01 08:44:04 |
| ConfigGenerator                 | Core             | 1        | 2026-11-01 09:06:01 |
| AgentSoftwareInventory          | Core             | 60       | 2026-11-01 08:44:04 |
| LdapUserImport                  | Core             | 1440     | n/a               |
| Autoreport                      | AutoreportModule | 720      | 2026-11-01 08:44:04 |
| GrafanaDashboard                | GrafanaModule    | 720      | 2026-11-01 08:44:04 |
+---------------------------------+------------------+----------+---------------------+

(Interval 单位分钟;LdapUserImport 未启用显示 ✗,模块任务以 Plugin 列区分。)

4.5 账号与权限:reset_password / roles / acl.aco_sync

oitc reset_password——管理员口令丢失的官方解法(实测用法):

oitc reset_password 1 --print --no-mail --enable

(参数:用户 id=1、--print 直接打印新随机口令、--no-mail 不发邮件、--enable 顺带启用被锁账号。实测打印出 8 位随机口令后可立即登录 Web UI;《openITCOCKPIT Docker Compose 部署指南》第十一节问题 2 即用它解 OITC_ADMIN_PASSWORD 未生效困局。)

oitc roles——角色默认权限修复,参数实测(--help):

Usage:
cake roles [--admin] [--enable-defaults] [-h] [-q] [-v]
--admin                Restore all default user role permissions for "Administrator" role
--enable-defaults      Re-Enables all default permissions of pre defined user groups
                       (Viewer) and keeps custom changes. (Excluding "Administrator")

平台升级脚本(UPGRADE.sh)初始化权限的正解即两连(实测源码行):

oitc acl.aco_sync
oitc roles --enable-defaults --admin

oitc acl.aco_sync——全量同步 ACO 权限树(创建缺失 controller/action 节点、清除孤儿节点)。实测权限数据分布:acos 表 939 个节点(root=controllers)、aros 表用户组节点、aros_acos 表 1131 条授权——排障时若 API 大面积 403「Identity is not authorized」,先跑这两条命令修复角色授权,而不是误判 ACO 树丢失(实测 oitc aco_update 输出同样指向 acos 独立表,勿混淆)。

4.6 oitc dump —— 配置对象批量导出

参数实测(--help,13 个导出维度):--all --commands --contacts --container --cronjobs --hosts --hosttemplates --macros --services --servicetemplates --systemsettings --timeperiods --usergroups。实测执行:

oitc dump --hosts
Dumping data to: /tmp/dump_hosts.php    Done

(产物为 PHP 数组文件,可用于跨环境迁移比对或审计。)

4.7 健康与版本:system_health / version_check / statusengine_version

oitc system_health
Fetch system health information...   Ok

oitc version_check
Checking for new openITCOCKPIT Version   Ok

oitc statusengine_version
Statusengine4

(system_health 对应 Web UI「System health」页与 SYSTEM_HEALTH 设置段;version_check 即 VersionCheck cronjob 的手动触发;statusengine_version 打印当前状态后端实现。)

4.8 oitc cmd —— 引擎外部命令管道

向 Naemon 的 nagios.cmd/oitc.cmd 投递外部命令(禁用检查、排程 downtimes 等),参数实测(--help):

Usage:
cake cmd [-h] [-p /opt/openitc/nagios/var/rw/oitc.cmd] [-q] [-v]
--pipe, -p     Path of the oitc.cmd (default: /opt/openitc/nagios/var/rw/oitc.cmd)

(该命令即 supervisor 服务列表中的 oitc_cmd 常驻进程,负责消费管道。)

4.9 数据库入口:mysql --defaults-file

官方排障标准入口(免密进 openitcockpit 库):

mysql --defaults-file=/opt/openitc/etc/mysql/mysql.cnf

凭据文件由服务启动脚本按环境变量生成([client] 段 host/user/password/port/database),详见配置篇 §5.1;注意 mysqladmin 对该文件兼容性的坑(部署篇问题 1)。

4.10 周边工具实测

gearadmin(Gearman 队列)——官方「Query Gearman status」入口,在 openitcockpit 容器执行:

gearadmin --status -h gearmand
statusngin_cmd	0	0	1
oitc_gearman	0	0	5
eventhandler	0	0	5
notification	0	0	5
service	0	0	5
host	0	0	5
.

(列义:队列名 / 运行中 / 等待中 / worker 槽位数;自定义地址用 -h $OITC_GEARMAN_ADDRESS。)

naemon -v(引擎配置校验)——必须在 naemon 容器内以 nagios 用户执行(root 被拒:ERROR: do not start naemon as root user.):

docker compose exec naemon su nagios -c '/opt/openitc/nagios/bin/naemon -v /opt/openitc/etc/nagios/nagios.cfg'
Total Warnings: 0
Total Errors:   0
Things look okay - No serious problems were detected during the pre-flight check

(引擎实际加载的主配置是 /opt/openitc/etc/nagios/nagios.cfg,其 cfg_dir=/opt/openitc/nagios/etc/config 引入 Web 导出对象。)

monitoring-plugins(检查插件集)——位于 mod_gearman_worker 容器 /opt/openitc/nagios/libexec/(实测 100+ 插件:check_apt/check_by_ssh/check_curl/check_disk/check_dns/check_http/check_icmp/check_ldap/check_load…),版本实测:

/opt/openitc/nagios/libexec/check_http -V
check_http v2.4.0 (monitoring-plugins 2.4.0)
/opt/openitc/nagios/libexec/check_ping -V
check_ping v2.4.0 (monitoring-plugins 2.4.0)

(注意 libexec 不在默认 PATH,须全路径调用;自研插件的容器化挂载方法见官方「Install your own monitoring plugins → Containerized method」。)

五、注意事项

  1. 执行位置分层:oitc 只在 openitcockpit 容器;naemon 二进制只在 naemon 容器;check_* 插件在 mod_gearman_worker 容器——跨层调用(如 nagios_export --verify)必然失败,属形态差异而非故障。
  2. oitc 的权限模型:以 root + www-data 组、umask 002 执行,产物组可写,Web 进程才能覆写;用其他用户(如 docker exec -u 指定)跑 oitc 生成的文件可能锁死 Web 覆写能力。
  3. 配置类命令幂等:config_generator/nagios_export 重复执行安全,可放外部 cron/CI;但导出后引擎不会自动 reload,需 oitc supervisor restart naemon 或 Web UI 触发 rollout。
  4. oitc wipe / cache clear_all 等破坏性命令:wipe 清空监控数据、cache clear 影响响应速度,生产慎用,执行前先 --help 确认参数。

六、常见问题

Q1:naemon 容器里执行 oitc 报 command not found? 设计如此:oitc 属平台侧命令(CakePHP console),引擎容器无 PHP 应用。进 openitcockpit 容器执行(docker compose exec openitcockpit bash)。

Q2:naemon -v 报 ERROR: do not start naemon as root user.? 引擎二进制拒绝 root 校验,切 nagios 用户:su nagios -c '/opt/openitc/nagios/bin/naemon -v /opt/openitc/etc/nagios/nagios.cfg'(实测通过,见 4.10)。

Q3:check_http -V 报 not found? 插件目录 /opt/openitc/nagios/libexec 不在 PATH,用全路径调用;worker 执行检查时由 mod_gearman 以 $USER1$ 宏(resource.cfg 实测 $USER1$=/opt/openitc/nagios/libexec)解析,无需 PATH。

Q4:oitc nagios_export 成功但界面状态不更新? 导出只写配置文件,引擎加载需 reload:oitc supervisor restart naemon(实测 status 回显 uptime 归零即生效);Web UI 上对应「Deploy」动作。

七、参考链接

openITCOCKPIT 5.9.0 常用 CLI 命令与工具详解 - Quzuo