在 Alerts → Scripts 部分,可以配置和维护用户定义的全局脚本。
根据配置的范围和用户权限,全局脚本可用于执行:
脚本在 Zabbix agent, Zabbix server (proxy) 或仅在 Zabbix server 上执行。 请参阅 Command execution。
在 Zabbix agent 和 Zabbix proxy 上,默认禁用远程脚本。 它们可以通过以下方式启用:
在 Zabbix server 上禁用全局脚本执行,可以通过在服务器配置中设置 EnableGlobalScripts=0 来实现。对于新安装,自 Zabbix 7.0 起,默认禁用在 Zabbix server 上的全局脚本执行。
现有脚本及其详细信息的列表被显示。
显示的数据:
列 | 描述 |
---|---|
Name | 脚本的名称。点击脚本名称将打开脚本 configuration form。 |
Scope | 脚本的范围 - 操作执行,手动主机操作或手动事件操作。此设置确定脚本可用的位置。 |
Used in actions | 显示使用了脚本的所有操作,(自 Zabbix 7.0.4 起)前面带有这些操作的总数。 点击操作名称将打开操作配置表单。如果用户对操作没有权限,名称将不可点击。 |
Type | 显示脚本类型 - URL, Webhook, Script, SSH, Telnet 或 IPMI 命令。 |
Execute on | 显示脚本将在 Zabbix agent, Zabbix proxy 或服务器,或仅在 Zabbix server 上执行。 |
Commands | 显示脚本中要执行的所有命令。 对于 webhook,这里不显示任何内容。 |
User group | 显示脚本可用的用户组(或 All 对于所有用户组)。 |
Host group | 显示脚本可用的主机组(或 All 对于所有主机组)。 |
Host access | 显示主机组的权限级别 - Read 或 Write。只有具有所需权限级别的用户才能访问执行脚本。 |
要配置新脚本,请点击右上角的 Create script 按钮。
列表下方的按钮提供了一个批量编辑选项:
要使用此选项,请在相应脚本前面勾选复选框,然后单击 删除。
您可以使用过滤器仅显示您感兴趣的脚本。为了获得更好的搜索性能,搜索数据时未解析宏。
过滤器 链接位于脚本列表上方。 如果您单击它,则会出现一个过滤器,您可以在其中按名称和范围过滤脚本。
脚本属性:
参数 | 描述 | |
---|---|---|
Name | 脚本的唯一名称。 例如: Clear /tmp filesystem |
|
Scope | 脚本的范围 - 操作动作,手动主机动作或手动事件动作。此设置决定了脚本可以在何处使用 - 在操作动作的远程命令中,从host menu或从event menu分别。 将范围设置为'操作动作'使脚本对所有具有访问Alerts → Actions权限的用户可用。 如果脚本实际在操作中使用,其范围不能从'操作动作'更改。 宏支持 范围影响可用宏的范围。例如,用户相关的宏({USER.*})在脚本中支持,允许传递有关启动脚本的用户的信息。但是,如果脚本的范围是操作动作,则不支持,因为操作动作自动执行。 {MANUALINPUT}宏允许在脚本执行时指定手动输入。它支持手动主机动作和手动事件动作脚本。 要找出哪些其他宏受支持,请在supported macro表中搜索'Trigger-based notifications and commands/Trigger-based commands','Manual host action scripts'和'Manual event action scripts'。注意,如果宏可能解析为带有空格的值(例如,主机名),请根据需要进行引用。 |
|
Menu path | 指定的菜单路径到脚本。例如,Default 或Default/ ,将在相应的目录中显示脚本。菜单可以嵌套,例如Main menu/Sub menu1/Sub menu2 。当通过监控部分的主机/事件菜单访问脚本时,它们将根据给定的目录进行组织。此字段仅在选择'手动主机动作'或'手动事件动作'作为范围时显示。 |
|
Type | 点击相应的按钮选择脚本类型: URL,Webhook,Script,SSH,Telnet或IPMI命令。 类型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分钟。 |
|
脚本类型:Script | ||
在何处执行 | 点击相应的按钮在以下位置执行shell脚本: Zabbix agent - 脚本将由Zabbix agent执行(如果系统.run 监控项是allowed)在主机上 Zabbix proxy或服务器 - 脚本将由Zabbix proxy或服务器执行 - 取决于主机是否由proxy或服务器监控。 如果通过EnableRemoteCommands启用,它将在proxy上执行。 如果通过EnableGlobalScripts服务器参数启用全局脚本,它将在服务器上执行。 Zabbix server - 脚本将仅由Zabbix server执行。 如果通过EnableGlobalScripts服务器参数禁用全局脚本,此选项将不可用。 |
|
命令 | 输入脚本中要执行的命令的完整路径。 宏支持取决于脚本的范围(参见上方的范围)。自定义user macros受支持。 |
|
脚本类型:SSH | ||
认证方法 | 选择认证方法 - 密码或公钥。 | |
用户名 | 输入用户名。 | |
密码 | 输入密码。 如果选择'密码'作为认证方法,此字段可用。 |
|
公钥文件 | 输入公钥文件的路径。 如果选择'公钥'作为认证方法,此字段可用。 |
|
私钥文件 | 输入私钥文件的路径。 如果选择'公钥'作为认证方法,此字段可用。 |
|
口令 | 输入口令。 如果选择'公钥'作为认证方法,此字段可用。 |
|
端口 | 输入端口。 | |
命令 | 输入命令。 宏支持取决于脚本的范围(参见上方的范围)。自定义user macros受支持。 |
|
脚本类型:Telnet | ||
用户名 | 输入用户名。 | |
密码 | 输入密码。 | |
端口 | 输入端口。 | |
命令 | 输入命令。 宏支持取决于脚本的范围(参见上方的范围)。自定义user macros受支持。 |
|
脚本类型:IPMI | ||
命令 | 输入IPMI命令。 宏支持取决于脚本的范围(参见上方的范围)。自定义user macros受支持。 |
|
Description | 为脚本输入描述。 | |
Host group | 选择脚本将可用的主机组(或所有对于所有主机组)。 | |
User group | 选择脚本将可用的用户组(或所有对于所有用户组)。 此字段仅在选择'手动主机动作'或'手动事件动作'作为范围时显示。 |
|
Required host permissions | 选择主机组的权限级别 - 读取或写入。只有具有所需权限级别的用户才能执行脚本。 此字段仅在选择'手动主机动作'或'手动事件动作'作为范围时显示。 |
|
Advanced configuration | 点击高级配置标签以显示advanced configuration选项。 此字段仅在选择'手动主机动作'或'手动事件动作'作为范围时显示。 |
高级配置选项可在可折叠的 高级配置 部分中找到:
参数 | 描述 |
---|---|
启用用户输入 | 勾选复选框以在执行脚本之前启用手动用户输入。 手动用户输入将替换脚本中的 {MANUALINPUT} 宏值。 参见:手动用户输入。 |
输入提示 | 输入自定义文本,提示进行自定义用户输入。此文本将显示在 手动输入 弹出窗口的输入字段上方。 要查看 手动输入 弹出窗口的预览,请单击 测试用户输入。预览还允许测试输入字符串是否符合输入验证规则(参见下面的参数)。 宏和用户宏支持取决于脚本的范围(参见一般脚本配置参数中的 范围)。 |
输入类型 | 选择手动输入类型: 字符串 - 单个字符串; 下拉菜单 - 从多个下拉选项中选择值。 |
下拉菜单选项 | 在逗号分隔的列表中输入用户输入下拉菜单的唯一值。 要在下拉菜单中包含空选项,请在列表的开头、中间或结尾额外添加逗号。 仅当选择“下拉菜单”作为 输入类型 时显示此字段。 |
默认输入字符串 | 输入用户输入的默认字符串(或不输入)。 此字段将根据提供的 输入验证规则 正则表达式进行验证。 在 手动输入 弹出窗口中,默认情况下将显示此处输入的值。 仅当选择“字符串”作为 输入类型 时显示此字段。 |
输入验证规则 | 输入用于验证用户输入字符串的正则表达式。 支持全局正则表达式。 仅当选择“字符串”作为 输入类型 时显示此字段。 |
启用确认 | 勾选复选框以在执行脚本之前显示确认消息。这个功能在执行可能危险的操作(例如重新启动脚本)或可能需要较长时间的操作时特别有用。 |
确认文本 | 输入用于确认弹出窗口的自定义确认文本(例如,“远程系统将重新启动。您确定吗?”)。要查看文本的外观,单击该字段旁边的 测试确认。 支持宏和自定义用户宏。 注意:在测试确认消息时,宏不会被扩展。 |
如果同时配置了手动用户输入和确认消息,则它们将依次显示在弹出窗口中。
手动用户输入允许在每次执行脚本时提供自定义参数。这样可以避免创建多个只有一个参数差异的相似用户脚本。
例如,您可能希望在执行期间向脚本提供不同的整数或不同的URL地址。
要启用手动用户输入:
启用用户输入后,在执行脚本之前,将弹出一个 手动输入 弹出窗口,要求用户提供自定义值。提供的值将替换脚本中的 {MANUALINPUT}。
根据配置不同,用户将被要求输入字符串值:
或从预定义选项的下拉菜单中选择值:
手动用户输入仅适用于范围为“手动主机操作”或“手动事件操作”的脚本。
由Zabbix server运行的脚本按照command execution page中描述的顺序执行。
脚本结果在脚本运行后出现的弹出窗口中显示。脚本的返回值是标准输出:
0
),返回值限制为16MB(包括被截断的尾随空白)。Zabbix默认不存储扩展的脚本输出。为了保留完整的输出细节,你可以在脚本本身中实现日志记录(例如,将输出重定向到本地日志文件)。
请注意,对于在Zabbix server或Zabbix proxy上执行的脚本,database limits也适用。
下面是一个脚本及其结果窗口的示例:
脚本结果不会显示脚本本身。
在执行脚本时,可能会遇到超时的情况。
以下是一个在 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
。