Icinga 2.16.5 常用 CLI 命令与工具详解

Icinga 2.16.5 命令行工具全解:icinga2 的 daemon/feature/object/variable/console/pki/ca/api/node 子命令与 icingacli 的 module/monitoring 命令,外加 REST API 常用调用,每条命令与回显均在 Ubuntu 22.04 实测。

IcingaIcinga监控2026/10/20

Icinga 2.16.5 常用 CLI 命令与工具详解

目标:把 Icinga 2 日常运维要用的两套命令行工具——监控核心的 icinga2 与 Web 层的 icingacli——逐子命令讲透,覆盖配置校验、特性管理、对象查询、脚本控制台、PKI 证书、REST API 调用与监控数据查询。全部命令与回显在 Ubuntu 22.04.5(icinga2 r2.16.5-1 + Icinga Web 2.12.7)上实测采集,每条都能照抄执行。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS,x86_64,主机名 icinga1.example.com
  • Icinga 2:r2.16.5-1(安装过程见《Ubuntu 22.04 安装 Icinga 2.16.5 指南》)
  • Icinga Web 2:2.12.7,monitoring 模块 2.12.6 已启用
  • 已启用特性:api checker ido-mysql mainlog notification
  • API 账号:root / q1w2e3r4(演示值,5665 端口,自建 CA 证书)
  • 默认安装路径:配置 /etc/icinga2、状态 /var/lib/icinga2、缓存 /var/cache/icinga2、日志 /var/log/icinga2

二、工具概览

Icinga 的命令行分两套,职责不同:

工具归属面向对象典型用途
icinga2监控核心守护进程本身配置校验、特性开关、对象/变量查询、证书 PKI、集群节点注册、脚本控制台
icingacliIcinga Web 2Web 与模块模块启停、Setup 初始化、监控数据查询、Web 服务调试

icinga2 不带参数或执行未知命令时打印用法总览(实测):

icinga2 --help
icinga2 - The Icinga 2 network monitoring daemon (version: r2.16.5-1)

Usage:
  icinga2 <command> [<arguments>]

Supported commands:
  * api setup (setup for API)
  * ca list (lists pending certificate signing requests)
  * ca remove (removes an outstanding certificate request)
  * ca restore (restores a removed certificate request)
  * ca sign (signs an outstanding certificate request)
  * console (Icinga console)
  * daemon (starts Icinga 2)
  * feature disable (disables specified feature)
  * feature enable (enables specified feature)
  * feature list (lists all available features)
  * node setup (set up node)
  * node wizard (wizard for node setup)
  * object list (lists all objects)
  * pki new-ca (sets up a new CA)
  * pki new-cert (creates a new CSR)
  * pki request (requests a certificate)
  * pki save-cert (saves another Icinga 2 instance's certificate)
  * pki sign-csr (signs a CSR)
  * pki ticket (generates a ticket)
  * pki verify (verify TLS certificates: CN, signed by CA, is CA; Print certificate)
  * variable get (gets a variable)
  * variable list (lists all variables)

Global options:
  -h [ --help ]             show this help message
  -V [ --version ]          show version information
  --color                   use VT100 color codes even when stdout is not a
                            terminal
  -D [ --define ] arg       define a constant
  -I [ --include ] arg      add include search directory
  -x [ --log-level ] arg    specify the log level for the console log.
                            The valid value is either debug, notice,
                            information (default), warning, or critical
  -X [ --script-debugger ]  whether to enable the script debugger

💡 说明:2.16.5 的命令树就这 22 条。注意没有独立的 icinga2 configtest(老命令已并入 icinga2 daemon -C),也没有 icinga2 troubleshoot 子命令(输入它只会回显本总览)。icingacli 的命令树见第十三节。

三、前置条件

  1. 已按《Ubuntu 22.04 安装 Icinga 2.16.5 指南》完成核心安装,systemctl is-active icinga2 为 active。
  2. 涉及 API 调用的示例依赖一个 ApiUser(本文用 root/q1w2e3r4)与 5665 端口可达。
  3. icinga2 的多数子命令以 root 运行;pki new-cert/save-cert/sign-csr 等涉及文件写入的命令内部会以 nagios 用户落盘,输出文件路径必须 nagios 可写(/tmp 可以,/root 不行——实测在 /root 下报 Permission denied)。

四、icinga2 全局选项与版本信息

本节先掌握所有子命令共享的全局选项,日常最有用的是 -x(日志级别)与 -D(定义常量,临时覆盖配置测试用)。

icinga2 --version
icinga2 - The Icinga 2 network monitoring daemon (version: r2.16.5-1)

Copyright (c) 2012-2026 Icinga GmbH (https://icinga.com/)
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl-3.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

System information:
  Platform: Ubuntu
  Platform version: 22.04.5 LTS (Jammy Jellyfish)
  Kernel: Linux
  Kernel version: 6.8.0-138-generic
  Architecture: x86_64

Build information:
  Compiler: GNU 11.4.0
  Build host: runner-5jugdrtyg-project-575-concurrent-5
  OpenSSL version: OpenSSL 3.0.2 15 Mar 2022

Application information:

General paths:
  Config directory: /etc/icinga2
  Data directory: /var/lib/icinga2
  Log directory: /var/log/icinga2
  Cache directory: /var/cache/icinga2
  Spool directory: /var/spool/icinga2
  Run directory: /run/icinga2

Internal paths:
  Package data directory: /usr/share/icinga2
  State path: /var/lib/icinga2/icinga2.state
  Modified attributes path: /var/lib/icinga2/modified-attributes.conf
  Objects path: /var/cache/icinga2/icinga2.debug
  Vars path: /var/cache/icinga2/icinga2.vars
  PID path: /run/icinga2/icinga2.pid

常用全局选项速查(均为 --help 实测原文):

选项作用默认值
-x <level>控制台日志级别information(可选 debug/notice/warning/critical)
-D <name>=<value>定义常量,优先级高于配置文件无
-I <dir>追加 include 搜索目录无
-X启用脚本调试器关闭
-V打印版本信息—

五、icinga2 daemon:运行与配置校验

daemon 是核心本体(systemd 服务背后就是它),日常最常用的是校验模式。

icinga2 daemon --help
Usage:
  icinga2 daemon [<arguments>]

Starts Icinga 2.

Command options:
  -c [ --config ] arg       parse a configuration file
  -z [ --no-config ]        start without a configuration file
  -C [ --validate ]         exit after validating the configuration
  --dump-objects            write icinga2.debug cache file for icinga2 object
                            list
  -e [ --errorlog ] arg     log fatal errors to the specified log file (only
                            works in combination with --daemonize or
                            --close-stdio)
  -d [ --daemonize ]        detach from the controlling terminal
  --close-stdio             do not log to stdout (or stderr) after startup

改完配置后的标准动作——校验再重载(实测回显):

icinga2 daemon -C
[2026-10-19 20:30:04 +0000] information/ConfigItem: Instantiated 3 ServiceGroups.
[2026-10-19 20:30:04 +0000] information/ConfigItem: Instantiated 3 TimePeriods.
[2026-10-19 20:30:04 +0000] information/ConfigItem: Instantiated 12 Services.
[2026-10-19 20:30:04 +0000] information/ConfigItem: Instantiated 1 ScheduledDowntime.
[2026-10-19 20:30:04 +0000] information/ScriptGlobal: Dumping variables to file '/var/cache/icinga2/icinga2.vars'
[2026-10-19 20:30:04 +0000] information/cli: Finished validating the configuration file(s).

Finished validating the configuration file(s) 即校验通过;有错时会给出文件名与行列号。校验通过后 systemctl reload icinga2 平滑生效。

为 object list 生成对象缓存(--dump-objects 只能配合 -C 使用,见第七节排障实录):

icinga2 daemon -C --dump-objects
[2026-10-19 20:30:16 +0000] information/ConfigItem: Instantiated 12 Services.
[2026-10-19 20:30:16 +0000] information/ScriptGlobal: Dumping variables to file '/var/cache/icinga2/icinga2.vars'
[2026-10-19 20:30:16 +0000] information/cli: Finished validating the configuration file(s).

六、icinga2 feature:特性管理

特性是 Icinga 2 的功能开关体系:enable/disable 实际操作 /etc/icinga2/features-enabled/ 软链,list 展示全景。

icinga2 feature list
Disabled features: command compatlog debuglog elasticsearch gelf graphite icingadb influxdb influxdb2 journald livestatus opentsdb perfdata syslog
Enabled features: api checker ido-mysql mainlog notification

启用/停用的实测回显(以演示特性 gelf 为例,启用后立即停用还原):

icinga2 feature enable gelf
icinga2 feature disable gelf
Enabling feature gelf. Make sure to restart Icinga 2 for these changes to take effect.
Disabling feature gelf. Make sure to restart Icinga 2 for these changes to take effect.
icinga2 feature disable gelf   # 对本就未启用的特性执行,实测回显:
warning/cli: Feature 'gelf' already disabled.

⚠️ 注意:enable/disable 只改软链,必须重启服务(systemctl restart icinga2)或按特性文档 reload 才生效。每个特性一个配置文件在 /etc/icinga2/features-available/<name>.conf,开特性前先看一眼默认参数(如 ido-mysql.conf 的数据库连接串)。

七、icinga2 object list:对象查询

查询当前生效的监控对象及每个属性的来源(声明位置带文件行号,排查"这条配置哪来的"非常有效)。

排障实录:直接查询会报缓存缺失——

icinga2 object list --type Host
critical/cli: Cannot open objects file '/var/cache/icinga2/icinga2.debug'.
critical/cli: Run 'icinga2 daemon -C --dump-objects' to validate config and generate the cache file.

按提示先生成缓存(第五节命令),再查询:

icinga2 object list --type Host
Object 'icinga1.example.com' of type 'Host':
  % declared in '/etc/icinga2/conf.d/hosts.conf', lines 18:1-18:20
  * __name = "icinga1.example.com"
  * action_url = ""
  * address = "127.0.0.1"
    % = modified in '/etc/icinga2/conf.d/templates.conf', lines 16:3-16:21
  * address6 = "::1"
  * check_command = "hostalive"
    % = modified in '/etc/icinga2/conf.d/templates.conf', lines 19:3-19:29
  * check_interval = 60
  * display_name = "icinga1.example.com"
  * enable_active_checks = true
  ...(输出节选:对象全部属性与覆盖来源随查询展开,本机默认对象约百余行)

常用形态:--type Host / --type Service / --type User / --type Zone;--name <对象名> 精确到单个对象。--types 不是有效选项(实测 unrecognised option '--types'),合法类型名以配置文件里的对象类型为准(Host、Service、CheckerComponent、ApiListener 等)。

八、icinga2 variable:变量查询

查询 DSL 运行时变量——常量、全局变量、模板库注入的路径变量都在这。

icinga2 variable get NodeName
icinga2 variable list
icinga1.example.com
ActiveStages = {
        _api = "d3af4814-220d-4199-a544-0cf6e06ef5d7"
}
Icinga = Object of type 'Namespace'
Internal = Object of type 'Namespace'
ManubulonPluginDir = /usr/lib/nagios/plugins
...(输出节选:变量众多,含 PluginDir、PluginContribDir、MaxConcurrentChecks 等)

variable get NodeName 返回本节点名——写集群配置、API 过滤器前先核对它;variable list 全量列出,配合 grep 找变量名(如 icinga2 variable list | grep Plugin)。

九、icinga2 console:脚本控制台

Icinga DSL 的交互/求值控制台,可本地求值,也可连到运行中的守护进程查询真实对象。

icinga2 console --help
Usage:
  icinga2 console [<arguments>]

Interprets Icinga script expressions.

Command options:
  -c [ --connect ] arg      connect to an Icinga 2 instance
  -e [ --eval ] arg         evaluate expression and terminate
  -r [ --file ] arg         evaluate a file and terminate
  --syntax-only             only validate syntax (requires --eval or --file)
  --sandbox                 enable sandbox mode

本地模式(不连守护进程):能做表达式运算与语法验证,但查不到运行时对象——

icinga2 console --eval 'get_host("icinga1.example.com").name'
icinga2 console --eval '2 + 3 * 4'
null
14

get_host(...) 返回 null 是因为本地模式没有加载守护进程的对象缓存,查对象必须连守护进程。

连接模式:--connect 必须写完整 URL(实测结论):

icinga2 console --connect 'https://root:q1w2e3r4@localhost:5665/' --eval 'get_host("icinga1.example.com").name'
icinga2 console --connect 'https://root:q1w2e3r4@localhost:5665/' --eval 'len(get_services("icinga1.example.com"))'
"icinga1.example.com"
6

URL 写法的实测边界(写错时的真实报错,便于对照排错):

输入实测报错
root@localhost:5665critical/ConsoleCommand: Invalid URL Scheme.
https://localhost:5665(无路径)critical/ConsoleCommand: Invalid URL: Missing '/' after authority.
icinga2://root:...@localhost:5665critical/ConsoleCommand: Invalid URL: Missing '/' after authority.
https://root:q1w2e3r4@localhost:5665/正常执行

结论:scheme 必须是 https,且 URL 末尾带 / 路径;账号密码以 user:pass@ 形式内嵌。

十、icinga2 pki:证书与 PKI

集群(satellite/agent 接入)与 API 安全全靠这套命令。以下全部实测。

生成 CA(本机已有 CA 时拒绝重复生成):

icinga2 pki new-ca
warning/cli: CA files '/var/lib/icinga2/ca//ca.crt' and '/var/lib/icinga2/ca//ca.key' already exist.

为新节点生成私钥与 CSR(输出路径必须是 nagios 可写目录):

icinga2 pki new-cert --cn web1.example.com --csr /tmp/web1.csr --key /tmp/web1.key
information/base: Writing private key to '/tmp/web1.key'.
information/base: Writing certificate signing request to '/tmp/web1.csr'.

生成接入票据(ticket):agent/satellite 向 master 自动签发证书时校验身份的 HMAC 凭据,--salt 必须显式给出(master 侧自定义并妥善保管,同一 salt 生成的 ticket 才能被接受):

icinga2 pki ticket --cn web1.example.com --salt "1e29f0a4c7b35d68"
0a6868af10b54cb06af7fdd94f8177bae0ca7ea3

抓取对端证书(自签环境互相信任的第一步):

icinga2 pki save-cert --host localhost --port 5665 --trustedcert /tmp/peer.crt
information/pki: Writing certificate to file '/tmp/peer.crt'.

校验证书(CN 匹配性 + CA 签名链,正反两个实测样例):

icinga2 pki verify --cn icinga1.example.com --cert /var/lib/icinga2/certs/icinga1.example.com.crt
 Valid Until:         Nov 20 20:25:04 2027 GMT
 Serial:              A47F59948C6EF06E0A432FD829693C9035953558
 Signature Algorithm: sha256WithRSAEncryption
 Subject Alt Names:   icinga1.example.com
 Fingerprint:         9F 54 CC CE 5E FD 65 17 2C 86 88 0C 07 DE 65 4F 6B 47 3D 6E CD FF 15 E0 EB B7 55 3A 77 C5 56 9D
information/cli: OK: CN 'icinga1.example.com' matches certificate CN 'icinga1.example.com'.
icinga2 pki verify --cn web1.example.com --cert /tmp/peer.crt
 Fingerprint:         9F 54 CC CE 5E FD 65 17 2C 86 88 0C 07 DE 65 4F 6B 47 3D 6E CD FF 15 E0 EB B7 55 3A 77 C5 56 9D
critical/cli: CRITICAL: CN 'web1.example.com' does NOT match certificate CN 'icinga1.example.com'.

签发 CSR(测试环境手工签发节点证书):

icinga2 pki sign-csr --csr /tmp/web1.csr --cert /tmp/web1.crt
information/pki: Writing certificate to file '/tmp/web1.crt'.

💡 技术拓展:Icinga 的证书签发有两条路线——手动路线(本节的 new-cert/ticket/save-cert/sign-csr 组合,适合排查或极端隔离环境)与自动路线(agent 用 icinga2 node setup --parent_host --ticket 发起,master 侧经 ca 系列命令自动签)。生产建议走自动路线,手动路线留作排障手段。

十一、icinga2 ca:CA 请求队列管理

查看/审批经 node wizard 发来的证书请求(本机没有待签请求,实测输出为空表):

icinga2 ca list
Fingerprint                                                      | Timestamp                | Signed | Subject
-----------------------------------------------------------------|--------------------------|--------|--------

配套子命令:ca sign --fingerprint <指纹> 签发、ca remove --fingerprint <指纹> 删除(可用 ca restore 恢复)。agent 端 ticket 校验通过时会自动签署,ca list 主要用于排查"agent 一直在等证书"类问题。

十二、icinga2 api setup 与 node:节点角色配置

api setup:单机/master 的 API 一键初始化(生成 CA、节点证书、ApiUser、写 NodeName/ZoneName 常量),实测完整回显:

icinga2 api setup
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Reading '/etc/icinga2/icinga2.conf'.
information/cli: Enabling the 'api' feature.
warning/cli: Feature 'api' already enabled.
information/cli: Updating 'NodeName' constant in '/etc/icinga2/constants.conf'.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating 'ZoneName' constant in '/etc/icinga2/constants.conf'.
information/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup.
Done.

Now restart your Icinga 2 daemon to finish the installation!

node wizard:交互式向导(agent/satellite 接入或 master 初始化),回车默认走 agent/satellite 路线(实测截取):

icinga2 node wizard
Welcome to the Icinga 2 Setup Wizard!

We will guide you through all required configuration details.

Please specify if this is an agent/satellite setup ('n' installs a master setup) [Y/n]:

非交互场景用 node setup 直接传参(--help 实测节选):

Usage:
  icinga2 node setup [<arguments>]

Sets up an Icinga 2 node.

Command options:
  --zone arg                  The name of the local zone
  --endpoint arg              Connect to remote endpoint; syntax:
                              cn[,host,port]
  --parent_host arg           The name of the parent host for auto-signing the
                              csr; syntax: host[,port]
  --parent_zone arg           The name of the parent zone
  --listen arg                Listen on host,port
  --ticket arg                Generated ticket number for this request
                              (optional)
  --trustedcert arg           Trusted parent certificate file as connection
                              verification (received via 'pki save-cert')
  --cn arg                    The certificate's common name
  --accept-config             Accept config from parent node
  --accept-commands           Accept commands from parent node
  --master                    Use setup for a master instance
  --global_zones arg          The names of the additional global zones to
                              'global-templates' and 'director-global'.
  --no-default-global-zones   Do not add the default global zones
  --disable-confd             Disables the conf.d directory during the setup

agent 接入 master 的标准形态(在 agent 机器上执行,ticket 来自 master 的 pki ticket):

icinga2 node setup --zone agent-web1 --endpoint icinga1.example.com,192.168.1.10,5665 --parent_zone master --parent_host icinga1.example.com,192.168.1.10,5665 --ticket 0a6868af10b54cb06af7fdd94f8177bae0ca7ea3 --accept-config --accept-commands

十三、icingacli:Web 层命令行

icingacli 管理的是 Icinga Web 2 及其模块。直接运行打印命令树(实测):

icingacli
USAGE: icingacli [module] <command> [action] [options]

Available commands:

  help            Help for modules, commands and actions
  module          List and handle modules
  version         Shows version of Icinga Web 2, loaded modules and PHP
  web

Available modules:

  monitoring

版本信息(Web 与模块、PHP 版本一次看全):

icingacli version
Icinga Web 2  2.12.7
Git Commit    36bafad37c6edc138b0353d6ade2f1b99704454d
PHP Version   8.1.2-1ubuntu2.27
MODULE      VERSION
monitoring  2.12.6

模块管理(启停真实生效,实测往返):

icingacli module list
icingacli module disable monitoring
icingacli module list
icingacli module enable monitoring
icingacli module list
MODULE         VERSION   STATE     DESCRIPTION
monitoring     2.12.6    enabled   Icinga monitoring module
There are no enabled modules
MODULE         VERSION   STATE     DESCRIPTION
monitoring     2.12.6    enabled   Icinga monitoring module

⚠️ 注意:module disable monitoring 会立刻让 Web 界面失去监控视图(列表只剩 There are no enabled modules),生产上操作前先告知使用者。

监控数据查询(数据来自 IDO,与 Web 界面同源):

icingacli monitoring list hosts
icingacli monitoring list services
   UP    icinga1.example.com: PING OK - Packet loss = 0%, RTA = 0.03 ms

   UP    icinga1.example.com: PING OK - Packet loss = 0%, RTA = 0.03 ms
   CRIT  ├─ apt (For 17m 43s)
   OK    ├─ ping4 (For 17m 17s)
   OK    ├─ http (For 16m 58s)
   OK    ├─ ping6 (For 17m 16s)
   OK    ├─ disk (For 17m 48s)

(apt 服务 CRIT 是因为系统有未安装的安全更新,check_apt 如实上报——输出里还能看到各服务已运行时长。)命令体系用 icingacli help 逐级展开,例如 icingacli help monitoring 会列出 list、nrpe 两个子命令及用法。注意 2.12 的 monitoring 模块没有 icingacli monitoring health 这类命令(实测输入后仅回显用法),健康检查走 list 或 API。

Setup 模块与 token:安装期的 icingacli setup token create(实测输出 The newly generated setup token is: ca66327a1c2e5a45 形态)在向导完成后 setup 模块会自动停用,此时 icingacli setup 报 ERROR: There is no such module or command: 'setup'——这是安全设计,不是故障;需要重新初始化时用 icingacli module enable setup 临时启用。

十四、REST API 常用调用(curl)

CLI 之外,日常巡检与自动化最常走 5665 的 REST API。以下 curl 全部实测(-k 用于自建 CA)。

查询应用状态(拿 node_name/版本/进程号):

curl -sk -u root:q1w2e3r4 -H "Accept: application/json" \
  -X GET "https://localhost:5665/v1/status/IcingaApplication"
{"results":[{"name":"IcingaApplication","perfdata":[],"status":{"icingaapplication":{"app":{"enable_event_handlers":true,"enable_flapping":true,"enable_host_checks":true,"enable_notifications":true,"enable_perfdata":true,"enable_service_checks":true,"environment":"","node_name":"icinga1.example.com","pid":8800,"program_start":1792441508.364058,"version":"r2.16.5-1"}}}}]}

查询对象(主机属性快照):

curl -sk -u root:q1w2e3r4 -H "Accept: application/json" \
  -X GET "https://localhost:5665/v1/objects/hosts"
{"results":[{"attrs":{"__name":"icinga1.example.com","acknowledgement":0,"check_command":"hostalive","state":0, ...},"joins":{},"meta":{},"name":"icinga1.example.com","type":"Host"}]}

(输出节选:attrs 含全部属性,state: 0 即 UP。)

执行动作——强制重查(动作类必须 POST):

curl -sk -u root:q1w2e3r4 -H "Accept: application/json" \
  -X POST "https://localhost:5665/v1/actions/reschedule-check" \
  -d '{"type":"Service","filter":"host.name==\"icinga1.example.com\" && service.name==\"apt\"","force":true}'
{"results":[{"code":200,"status":"Successfully rescheduled check for object 'icinga1.example.com!apt'."}]}

执行动作——确认告警(acknowledge):

curl -sk -u root:q1w2e3r4 -H "Accept: application/json" \
  -X POST "https://localhost:5665/v1/actions/acknowledge-problem" \
  -d '{"type":"Service","filter":"host.name==\"icinga1.example.com\" && service.name==\"apt\"","author":"admin","comment":"known pending updates (demo)"}'
{"results":[{"code":200,"status":"Successfully acknowledged problem for object 'icinga1.example.com!apt'."}]}

实测坑位:POST 动作漏掉 -H "Accept: application/json" 会得到 HTML 错误页 <h1>Accept header is missing or not set to 'application/json'.</h1>——每个请求都带上 Accept 头最稳妥。

十五、注意事项

  1. 配置变更三步曲:icinga2 daemon -C(校验)→ systemctl reload icinga2(生效)→ icinga2 object list --type <T>(复核);object list 前如无缓存先 icinga2 daemon -C --dump-objects。
  2. feature 改动要重启:feature enable/disable 只写软链,systemctl restart icinga2 后才生效。
  3. pki 文件权限:new-cert/save-cert/sign-csr 的输出路径必须 nagios 用户可写,/root 下实测报 Permission denied。
  4. pki ticket 的 salt:只在 master 侧使用,同一 salt 才能验证通过 ticket;agent 的 node setup --ticket 值必须来自同一 salt。
  5. console 查对象必须 --connect:本地模式 get_host() 恒为 null,别误判成"主机不存在"。
  6. API 用户最小权限:permissions = [ "*" ] 仅适合演示;生产按需收敛(如只授 objects/query/:* 与特定 action 权限)。
  7. 演示口令:本文 q1w2e3r4 为实测演示值,生产环境务必换成强随机口令并同步 /etc/icinga2/conf.d/api-users.conf 与 Web 端 command transport 配置。

十六、常见问题(FAQ)

Q1:icinga2 object list 报 Cannot open objects file? 先生成缓存:icinga2 daemon -C --dump-objects(完整实录见第七节)。

Q2:icinga2 console --connect 报 Invalid URL Scheme 或 Missing '/' after authority? URL 必须形如 https://user:pass@host:port/——scheme 要 https、末尾要带 /,对照第九节的实测边界表排查。

Q3:icingacli setup 提示没有这个命令? Setup 向导完成后 setup 模块自动停用(安全设计)。icingacli module enable setup 临时启用,用完记得 disable。

Q4:icingacli monitoring list services 前面打印 tput: No value for $TERM 警告? 非交互 shell 没有终端类型导致的着色警告,不影响数据输出;需要干净输出时 export TERM=xterm 后再执行。

Q5:API 返回 <h1>Accept header is missing...? 加 -H "Accept: application/json"(第十四节实测坑位)。

Q6:想确认某条配置最终长什么样? icinga2 object list --type <类型> --name <对象名> 输出全属性与声明来源(文件+行号);再配合 icinga2 variable list 看宏取值,绝大多数"配置不生效"都能定位。

十七、参考链接