在 警报 → 脚本 部分,用户可以配置和维护自定义的全局脚本。
全局脚本可以根据配置的范围以及用户权限,在以下地方执行:
这些脚本支持在 Zabbix agent、Zabbix proxy或仅在 Zabbix server上执行。详见 命令执行。
默认情况下,Zabbix agent和 Zabbix proxy上的远程脚本是禁用的。您可以通过以下方式启用:
通过在 Zabbix server 配置中设置 EnableGlobalScripts=0 可以禁用 Zabbix Server 执行全局脚本的功能。从 Zabbix 7.0 开始的新安装中,默认情况下禁用 Zabbix server上的全局脚本执行。
显示现有脚本及其详细信息的列表如下所示:
显示的数据包括:
列名 | 描述 |
---|---|
名称 | 脚本的名称。单击脚本名称可打开脚本的 配置表单。 |
范围 | 脚本的范围 - 动作操作、手动主机操作或手动事件操作。此设置确定脚本的可用位置。 |
在操作中使用 | 显示使用脚本的操作。 |
类型 | 显示脚本类型 - URL、Webhook、Script、SSH、Telnet 或 IPMI 命令。 |
执行于 | 显示脚本将在 Zabbix agent、Zabbix proxy或Server上执行,或仅在 Zabbix server上执行。 |
命令 | 显示脚本中要执行的所有命令。 |
用户组 | 显示脚本可用的用户组(对于所有用户组显示为 All)。 |
主机组 | 显示脚本可用的主机组(对于所有主机组显示为 All)。 |
主机访问 | 显示主机组的权限级别 - 读取 或 写入。只有具有所需权限级别的用户才能执行脚本。 |
要配置新脚本,请单击右上角的 创建脚本 按钮。
列表下方的按钮提供了一个批量编辑选项:
要使用此选项,请在相应脚本前面勾选复选框,然后单击 删除。
您可以使用过滤器仅显示您感兴趣的脚本。为了获得更好的搜索性能,搜索数据时未解析宏。
过滤器 链接位于脚本列表上方。 如果您单击它,则会出现一个过滤器,您可以在其中按名称和范围过滤脚本。
脚本属性:
参数 | 描述 | |
---|---|---|
名称 | 脚本的唯一名称。 例如 清理 /tmp 文件系统 |
|
范围 | 脚本的范围 - 动作操作、手动主机操作或手动事件操作。此设置确定脚本可用于哪些地方 - 在动作操作的远程命令中,从主机菜单或事件菜单中使用。 设置范围为“动作操作”使脚本对所有有权限访问警报 → 操作 的用户可用。 如果脚本实际上用于操作,则其范围不能从“动作操作”更改。 宏支持 范围影响可用宏的范围。例如,支持用户相关的宏 ({USER.*}) 以允许传递启动脚本的用户的信息。但是,如果脚本范围是动作操作,则不支持它们,因为动作操作会自动执行。 在脚本执行时,{MANUALINPUT} 宏允许指定手动输入。它支持手动主机操作和手动事件操作脚本。 要查找支持的其他宏,请在支持的宏表中搜索“基于触发器的通知和命令/基于触发器的命令”、“手动主机操作脚本”和“手动事件操作脚本”。请注意,如果宏可能解析为带有空格的值(例如主机名),请根据需要进行引用。 |
|
菜单路径 | 脚本的期望菜单路径。例如 默认 或 默认/ ,将在相应目录中显示脚本。菜单可以嵌套,例如 主菜单/子菜单1/子菜单2 。在监控部分通过主机/事件菜单访问脚本时,它们将按给定目录处理。仅当选择“手动主机操作”或“手动事件操作”作为范围时显示此字段。 |
|
类型 | 单击相应按钮选择脚本类型: URL、Webhook、Script、SSH、Telnet 或 IPMI 命令。 仅当选择“手动主机操作”或“手动事件操作”作为范围时,类型 URL 可用。 |
|
脚本类型:URL | ||
URL | 指定用于从主机菜单或事件菜单快速访问的URL。 支持宏和自定义用户宏。宏支持取决于脚本的范围(参见范围)。 在此字段中使用 {MANUALINPUT} 宏可以在脚本执行时指定手动输入,例如: http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.view 宏值不得进行 URL 编码。 |
|
在新窗口中打开 | 确定是否在新标签页中打开URL。 | |
脚本类型:Webhook | ||
参数 | 指定webhook变量作为属性-值对。 参见:Webhook 媒体配置。 支持宏和自定义用户宏 在参数值中。宏支持取决于脚本的范围(参见范围)。 |
|
脚本 | 在单击参数字段中的块(或其旁边的查看/编辑按钮)后,输入JavaScript代码。 宏支持取决于脚本的范围(参见范围)。 参见:Webhook 媒体配置,附加的JavaScript对象。 |
|
超时 | JavaScript 执行超时(1-60秒,默认30秒)。 支持时间后缀,例如 30s、1m。 |
|
脚本类型:Script | ||
执行于 | 单击相应按钮在以下位置执行shell脚本: Zabbix proxy - 由Zabbix proxy执行脚本(如果系统.run项目允许允许) Zabbix proxy或server - 由Zabbix proxy或server执行脚本 - 取决于主机是由 proxy还是server监控。 如果启用了EnableRemoteCommands,它将在 proxy上执行。 如果全局脚本由EnableGlobalScripts server参数启用,则将在server上执行。 Zabbix server - 仅由Zabbix server执行脚本。 如果由EnableGlobalScripts server参数禁用全局脚本,则不会提供此选项。 |
|
命令 | 输入要在脚本内执行的命令的完整路径。 宏支持取决于脚本的范围(参见范围)。支持自定义用户宏。 |
|
脚本类型:SSH | ||
认证方法 | 选择认证方法 - 密码或公钥。 | |
用户名 | 输入用户名。 | |
密码 | 输入密码。 如果选择“密码”作为认证方法,则此字段可用。 |
|
公钥文件 | 输入公钥文件的路径。 如果选择“公钥”作为认证方法,则此字段可用。 |
|
私钥文件 | 输入私钥文件的路径。 如果选择“公钥”作为认证方法,则此字段可用。 |
|
密码短语 | 输入密码短语。 如果选择“公钥”作为认证方法,则此字段可用。 |
|
端口 | 输入端口。 | |
命令 | 输入命令。 宏支持取决于脚本的范围(参见范围)。支持自定义用户宏。 |
|
脚本类型:Telnet | ||
用户名 | 输入用户名。 | |
密码 | 输入密码。 | |
端口 | 输入端口。 | |
命令 | 输入命令。 宏支持取决于脚本的范围(参见范围)。支持自定义用户宏。 |
|
脚本类型:IPMI | ||
命令 | 输入IPMI命令。 宏支持取决于脚本的范围(参见范围)。支持自定义用户宏。 |
|
描述 | 输入脚本的描述。 | |
主机组 | 选择脚本将可用于的主机组(或选择全部以适用于所有主机组)。 | |
用户组 | 选择脚本将可供哪些用户组使用(或选择全部以适用于所有用户组)。 仅当选择“手动主机操作”或“手动事件操作”作为范围时显示此字段。 |
|
所需主机权限 | 选择主机组的权限级别 - 读 或 写。只有具有所需权限级别的用户才能执行该脚本。 仅当选择“手动主机操作”或“手动事件操作”作为范围时显示此字段。 |
|
高级配置 | 单击高级配置标签以显示高级配置选项。 仅当选择“手动主机操作”或“手动事件操作”作为范围时显示此字段。 |
高级配置选项可在可折叠的 高级配置 部分中找到:
参数 | 描述 |
---|---|
启用用户输入 | 勾选复选框以在执行脚本之前启用手动用户输入。 手动用户输入将替换脚本中的 {MANUALINPUT} 宏值。 参见:手动用户输入。 |
输入提示 | 输入自定义文本,提示进行自定义用户输入。此文本将显示在 手动输入 弹出窗口的输入字段上方。 要查看 手动输入 弹出窗口的预览,请单击 测试用户输入。预览还允许测试输入字符串是否符合输入验证规则(参见下面的参数)。 宏和用户宏支持取决于脚本的范围(参见一般脚本配置参数中的 范围)。 |
输入类型 | 选择手动输入类型: 字符串 - 单个字符串; 下拉菜单 - 从多个下拉选项中选择值。 |
下拉菜单选项 | 在逗号分隔的列表中输入用户输入下拉菜单的唯一值。 要在下拉菜单中包含空选项,请在列表的开头、中间或结尾额外添加逗号。 仅当选择“下拉菜单”作为 输入类型 时显示此字段。 |
默认输入字符串 | 输入用户输入的默认字符串(或不输入)。 此字段将根据提供的 输入验证规则 正则表达式进行验证。 在 手动输入 弹出窗口中,默认情况下将显示此处输入的值。 仅当选择“字符串”作为 输入类型 时显示此字段。 |
输入验证规则 | 输入用于验证用户输入字符串的正则表达式。 支持全局正则表达式。 仅当选择“字符串”作为 输入类型 时显示此字段。 |
启用确认 | 勾选复选框以在执行脚本之前显示确认消息。这个功能在执行可能危险的操作(例如重新启动脚本)或可能需要较长时间的操作时特别有用。 |
确认文本 | 输入用于确认弹出窗口的自定义确认文本(例如,“远程系统将重新启动。您确定吗?”)。要查看文本的外观,单击该字段旁边的 测试确认。 支持宏和自定义用户宏。 注意:在测试确认消息时,宏不会被扩展。 |
如果同时配置了手动用户输入和确认消息,则它们将依次显示在弹出窗口中。
手动用户输入允许在每次执行脚本时提供自定义参数。这样可以避免创建多个只有一个参数差异的相似用户脚本。
例如,您可能希望在执行期间向脚本提供不同的整数或不同的URL地址。
要启用手动用户输入:
启用用户输入后,在执行脚本之前,将弹出一个 手动输入 弹出窗口,要求用户提供自定义值。提供的值将替换脚本中的 {MANUALINPUT}。
根据配置不同,用户将被要求输入字符串值:
或从预定义选项的下拉菜单中选择值:
手动用户输入仅适用于范围为“手动主机操作”或“手动事件操作”的脚本。
由 Zabbix server运行的脚本按照命令执行页面描述的顺序执行(包括退出代码检查)。 脚本的执行结果将显示在弹出窗口中,该窗口会在脚本运行后出现。
脚本的返回值包括标准输出和标准错误信息。
返回值被限制为16MB(包括被截断的尾随空白字符);也适用于数据库限制。 当数据必须经过 Zabbix proxy传输时,它必须存储在数据库中,因此也受到相同的数据库限制。
以下是一个脚本示例及其结果窗口的示例:
脚本的执行结果中不显示脚本本身。
在执行脚本时,可能会遇到超时的情况。
以下是一个在 Zabbix agent 上运行的脚本示例及其结果窗口:
在这种情况下,错误消息如下:
为了避免这种情况,建议优化脚本本身(在上面的例子中,优化 "sleep 5"),而不是调整Zabbix agent 配置和Zabbix server 配置中的 Timeout
参数。 然而,对于 Zabbix agent 主动模式,Zabbix server 配置中的 Timeout
参数应该至少比Zabbix agent 配置中的 RefreshActiveChecks
参数长几秒钟。 这确保服务器有足够的时间从agent接收到主动检查的结果。请注意,从 Zabbix agent 7.0 开始,支持在主动agent上执行脚本。
如果在Zabbix agent 配置中更改了 Timeout
参数,则会出现以下错误消息:
这意味着在Zabbix agent 配置中已经进行了修改,但还需要修改Zabbix server 配置中的 Timeout
参数。
以下是在 Zabbix server 上运行的脚本示例及其结果窗口:
建议优化脚本本身,而不是通过调整Zabbix server配置中的 TrapperTimeout
参数来使其值大于 11
。