在 告警 → 脚本 部分可以配置和维护用户定义的全局脚本。
全局脚本根据配置的作用域以及用户权限,可以在以下位置执行:
脚本将在 Zabbix agent、Zabbix server(proxy)或仅在 Zabbix server 上执行。 另请参阅 Command execution。
在 Zabbix agent 和 Zabbix proxy 上,默认情况下远程脚本是禁用的。 可以通过以下方式启用:
在 Zabbix server 上执行全局脚本可以通过在服务器配置中设置 EnableGlobalScripts=0 来禁用。对于新安装的 Zabbix 7.0 及以上版本,默认情况下在 Zabbix server 上全局脚本执行是禁用的。
显示了现有脚本及其详细信息的列表。
显示的数据:
列 | 描述 |
---|---|
Name | 脚本的名称。点击脚本名称将打开脚本的 配置全局脚本。 |
Scope | 脚本的作用域 - 动作操作、手动 主机 操作或手动事件操作。此设置决定了脚本的可用位置。 |
Used in actions | 显示脚本所使用的所有动作(自 Zabbix 7.0.4 起),前面显示这些动作的总数。 点击动作名称将打开动作配置表单。如果用户没有该动作的权限,则名称不可点击。 |
Type | 显示脚本类型 - URL、Webhook、脚本、SSH、Telnet 或 IPMI 命令。 |
Execute on | 显示脚本将在 Zabbix agent、Zabbix proxy 或服务器,还是仅在 Zabbix server 上执行。 |
Commands | 显示脚本中将执行的所有命令。 对于 webhook,此处不显示任何内容。 |
User group | 显示脚本可用的用户组(或 所有 表示所有用户组)。 |
Host group | 显示脚本可用的 主机 组(或 所有 表示所有 主机 组)。 |
Host access | 显示 主机 组的权限级别 - 读取 或 写入。只有具有相应权限级别的用户才能执行该脚本。 |
要配置新脚本,请点击 Top 右上角的 创建脚本 按钮。
列表下方的一个按钮提供了一项批量编辑选项:
要使用此选项,请在相应脚本前的复选框中打勾,然后点击 删除。
您可以使用过滤器仅显示您感兴趣的脚本。为了提高搜索性能,搜索时宏将不被解析。
过滤器 链接位于脚本列表上方。如果单击该链接,将显示一个过滤器,您可以通过名称和作用域来过滤脚本。
脚本属性:
参数 | 说明 | |
---|---|---|
Name | 脚本的唯一名称。 例如: Clear /tmp filesystem |
|
Scope | 脚本的作用域 - 动作操作、手动主机动作或手动事件动作。此设置决定脚本的使用位置 - 用于动作操作的远程命令、从host menu或从event menu。 将作用域设置为“动作操作”会使脚本对所有有权访问 警报 → 动作 的用户可用。 如果脚本实际上用于某个动作中,则其作用域不能更改为“动作操作”以外的选项。 宏支持 作用域影响可用宏的范围。例如,在脚本中支持与用户相关的宏({USER.*}),以允许传递启动脚本的用户信息。但如果脚本作用域为动作操作,则不支持这些宏,因为动作操作是自动执行的。 {MANUALINPUT}宏允许在脚本执行时指定手动输入。它支持手动主机动作脚本和手动事件动作脚本。 要了解支持的其他宏,请在supported macro表中搜索“基于触发器的通知和命令/基于触发器的命令”、“手动主机动作脚本”和“手动事件动作脚本”。请注意,如果宏可能解析为包含空格的值(例如,主机名),请根据需要使用get进行引号标注。 |
|
Menu path | 脚本在菜单中的目标路径。例如,设定为 Default 或 Default/ ,脚本将分别显示在对应的目录下。菜单支持嵌套,例如 Main menu/Sub menu1/Sub menu2 。当通过监控界面的 主机/事件菜单访问脚本时,它们将按照设定的目录结构进行组织。仅当选择“手动 主机 操作”或“手动事件操作”作为作用范围时,此字段才会显示。 |
|
Type | 点击相应的按钮以选择脚本类型: URL、Webhook、Script、SSH、Telnet 或 ipmi-远程命令 命令。 当 Scope(范围)选择为 'Manual 主机 action' 或 'Manual event action' 时,URL 类型才可用。 |
|
脚本类型:URL | ||
URL | 指定从此处快速访问的 URL host menu 或 event menu。 支持 Macros 和自定义 user macros。宏支持取决于脚本的范围(参见上面的 范围)。 在此字段中使用 {MANUALINPUT} 宏,以便在脚本执行时指定手动输入,例如: http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.view 宏值不得进行 URL 编码。 |
|
在新窗口中打开 | 确定是否应在新的或相同的浏览器标签页中打开URL。 | |
脚本类型:Webhook | ||
参数 | 将 webhook 变量指定为属性-值对。 另请参阅:Webhook 媒介配置。 参数值中支持 Macros 和自定义 user macros。宏支持取决于脚本的范围(参见上面的 范围)。 |
|
脚本 | 在单击参数字段或其旁边的铅笔图标时打开的模态编辑器中输入 JavaScript 代码。 宏支持取决于脚本的范围(请参见上面的 范围)。 另请参阅:Webhook 媒介配置, Additional Javascript objects。 |
|
超时 | JavaScript 执行超时(1 - 60秒,默认 30秒)。 支持时间后缀,例如 30秒、1分钟。 |
|
脚本类型: 脚本 | ||
执行于 | 点击相应的按钮以execute在以下位置执行shell脚本: Zabbix agent - 脚本将由Zabbix agent执行(如果system.run监控项监控项是allowed)在主机上 Zabbix proxy或服务器 - 脚本将由Zabbix proxy或服务器执行,具体取决于主机是由proxy还是服务器监控。 它将在proxy上执行,如果通过启用远程命令启用了代理。 如果全局脚本通过启用全局脚本服务器参数启用,它将在服务器上执行。 Zabbix server - 脚本将仅由Zabbix server执行。 如果全局脚本被启用全局脚本服务器参数禁用,则此选项不可用。 |
|
命令 | 在脚本中执行的命令,请输入完整路径。 宏的支持取决于脚本的作用域(参见上面的作用域)。支持自定义 user macros。 |
|
脚本类型: SSH | ||
认证方式 | 选择认证方式 - 密码或公钥。 | |
用户名 | 输入用户名。 | |
密码 | 输入密码。 如果选择“密码”作为认证方式,则此字段可用。 |
|
公钥文件 | 输入公钥文件的路径。 如果选择“公钥”作为认证方式,则此字段可用。 |
|
私钥文件 | 输入私钥文件的路径。 如果选择“公钥”作为认证方式,则此字段可用。 |
|
Passphrase | 输入密码短语。 如果选择“公钥”作为认证方式,则此字段可用。 |
|
端口 | 输入端口。 | |
命令 | 命令输入框。 宏的支持取决于脚本的范围(参见上方的范围)。支持自定义 user macros。 |
|
脚本类型: Telnet | ||
用户名 | 输入用户名。 | |
密码 | 输入密码。 | |
端口 | 输入端口。 | |
命令 | 命令输入框中输入相应的命令。 宏的支持取决于脚本的作用域(参见上方的作用域)。支持自定义 user macros。 |
|
脚本类型:IPMI | ||
命令 | 输入 IPMI 命令。 宏支持取决于脚本的范围(参见上面的 范围)。支持自定义 user macros。 |
|
Description | 为脚本输入一个描述。 | |
Host group | 选择脚本将可用的 主机 组(或选择 All 以适用于所有 主机 组)。 | |
User group | 选择该脚本将可用的用户组(或选择所有以适用于所有用户组)。 仅当将 范围 选择为“手动 主机 操作”或“手动事件操作”时,此字段才会显示。 |
|
Required host permissions | 为 主机 组选择权限级别 — 读取 或 写入。只有具有所需权限级别的用户才能执行该脚本。 仅当将“手动 主机 操作”或“手动事件操作”选为作用范围时,才会显示此字段。 |
|
Advanced configuration | 点击 高级配置 标签以显示高级配置选项。 仅当选择“手动 主机 动作”或“手动事件动作”作为作用域时,此字段才会显示。 |
高级配置选项位于可折叠的 高级配置(Advanced configuration) 部分中:
参数 | 描述 |
---|---|
Enable user input | 勾选此复选框以在执行脚本前启用手动用户输入。 手动用户输入将替换脚本中的 {MANUALINPUT} 宏值。 另请参阅:手动用户输入。 |
Input prompt | 输入自定义文本以提示用户进行自定义输入。该文本将显示在 手动输入(Manual input) 弹出窗口中的输入字段上方。 要预览 手动输入(Manual input) 弹出窗口,请点击 测试用户输入(Test user input)。预览还允许测试输入的 string 是否符合输入验证规则(见以下参数)。 宏和用户宏的支持取决于脚本的作用域(参见通用脚本配置参数中的 作用域(Scope))。 |
Input type | 选择手动输入类型: string - 单个 string; 下拉框(Dropdown) - 从多个下拉选项中选择值。 |
Dropdown options | 在逗号分隔的列表中输入用户输入下拉框的唯一值。 要在下拉框中包含一个空选项,请在列表的开头、中间或末尾添加一个额外的逗号。 仅当选择“下拉框(Dropdown)”作为 输入类型(Input type) 时,此字段才会显示。 |
Default input string | 输入用户输入的默认 string(或不输入)。 此处输入的值将根据 输入验证规则(Input validation rule) 字段中提供的正则表达式进行验证。 此处输入的值将在 手动输入(Manual input) 弹出窗口中默认显示。 仅当选择“string”作为 输入类型(Input type) 时,此字段才会显示。 |
Input validation rule | 输入正则表达式以验证用户输入的 string。 支持全局正则表达式。 仅当选择“string”作为 输入类型(Input type) 时,此字段才会显示。 |
Enable confirmation | 勾选此复选框以在执行脚本前显示确认消息。此功能可能在执行潜在危险操作(如重启脚本)或耗时较长的操作时特别有用。 |
Confirmation text | 输入自定义确认文本以用于上方复选框启用的确认弹出窗口(例如,远程系统将被重启。您确定吗?)。要查看文本的显示效果,请点击字段旁边的 测试确认(Test confirmation)。 支持 Macros 和自定义 user macros。 注意: 测试确认消息时,宏不会展开。 |
如果同时配置了手动用户输入和确认消息,它们将在连续的弹出窗口中显示。
手动用户输入允许在每次执行脚本时提供自定义参数。这避免了因单个参数的不同而需要 create 多个相似的用户脚本的必要性。
例如,在执行期间,您可能希望为脚本提供不同的 integer 或不同的 URL 地址。
启用手动用户输入:
启用用户输入后,在执行脚本之前,将向用户弹出一个“手动输入”对话框,要求用户提供一个自定义值。提供的值将替换脚本中的 {MANUALINPUT}。
根据配置的不同,系统会要求用户输入一个 string 值:
或者从预定义选项的下拉列表中选择值:
仅当脚本的作用域为“手动 主机 操作”或“手动事件操作”时,才支持手动用户输入。
脚本 run 按照 Zabbix server 的顺序执行,具体描述见 command execution page。
脚本结果在运行脚本后出现的弹出窗口中显示。脚本的返回值是一个标准输出:
0
),则返回值限制为 16MB(包括被截断的尾随空白字符)。Zabbix 默认不会存储扩展的脚本输出。为了保留完整的输出细节,你可以在脚本内部实现日志记录功能(例如,将输出重定向到本地日志文件)。
请注意,对于在Zabbix server或Zabbix proxy上执行的脚本,文本数据限制同样适用。
下面是一个脚本和结果窗口的示例:
脚本结果不显示脚本本身。
您可能会遇到在执行脚本时发生超时的情况。
请参见在Zabbix agent上运行的脚本及结果窗口示例如下:
在这种情况下,错误信息如下:
为了避免此类情况,建议优化脚本本身(如上例中的"5"),而不是调整超时和超时中的Timeout
参数。 然而,对于主动模式下的Zabbix agent,超时中的Timeout
参数应比刷新主动检查中的RefreshActiveChecks
参数至少多出几秒。 这可以确保服务器有足够的时间从agent接收主动检查结果。请注意,自Zabbix agent 7.0起,主动模式的agent上才支持脚本执行。
如果在Zabbix agent configuration中更改了Timeout
参数,将出现以下错误信息:
这意味着已在Zabbix agent configuration中进行了修改,但还需要同时修改Zabbix server configuration中的Timeout
参数。
请参见在 Zabbix server 上运行的脚本示例及下面的结果窗口:
此外,建议优化脚本本身(而不是将 TrapperTimeout
参数调整为相应值(在本例中,> 11
)),可以通过修改 Zabbix server configuration 来实现。