在管理 → 脚本部分可以配置和维护用户定义的全局脚本。
根据配置的作用域和用户权限,全局脚本可用于以下场景执行:
脚本将在Zabbix agent、Zabbix server(proxy)或仅Zabbix server上执行。另见Command execution。
在Zabbix agent和Zabbix proxy上,默认禁用远程脚本。可通过以下方式启用:
显示现有脚本及其详细信息的列表。
显示的数据:
列 | 描述 |
---|---|
Name | 脚本名称。点击脚本名称可打开脚本配置全局脚本。 |
Scope | 脚本作用域 - 动作操作、手动主机操作或手动事件操作。该设置决定脚本的可用位置。 |
Used in actions | 显示使用该脚本的动作。 |
Type | 显示脚本类型 - Webhook、Script、SSH、Telnet或IPMI命令。 |
Execute on | 显示脚本将在Zabbix agent、Zabbix server(proxy)或仅Zabbix server上执行。 |
Commands | 显示脚本中要执行的所有命令。 对于webhook此处不显示内容。 |
User group | 显示脚本可用的用户组(或All表示所有用户组)。 |
Host group | 显示脚本可用的主机组(或All表示所有主机组)。 |
Host access | 显示主机组的权限级别 - 读或写。只有具备相应权限级别的用户才能执行该脚本。 |
要配置新脚本,请点击Top右上角的创建脚本按钮。
列表下方的按钮提供批量编辑选项:
使用此选项时,请勾选相应脚本前的复选框 并点击 Delete。
您可以使用过滤器仅显示您感兴趣的脚本。为了获得更好的搜索性能,系统会以未解析宏的状态搜索数据。
过滤器链接位于脚本列表上方。点击该链接后,将显示一个过滤器界面,您可以根据名称和范围筛选脚本。
脚本属性:
参数 | 描述 | |
---|---|---|
Name | 脚本的唯一名称. 例如: Clear /tmp filesystem |
|
Scope | 脚本的作用范围 - 动作操作、手动主机操作或手动事件操作. 此设置决定了脚本的使用场景 - 在动作操作的远程命令中、从主机菜单或从事件菜单分别执行. 将作用域设置为'动作操作'会使脚本对所有具有配置 → 动作访问权限的用户可用. 如果脚本实际用于某个动作中,则其作用域不能从'动作操作'更改. 宏支持 作用域会影响可用宏的范围. 例如,用户相关宏({USER.*})在脚本中受支持,以允许传递有关启动脚本的用户的信息. 但是,如果脚本作用域是动作操作,则不支持这些宏,因为动作操作是自动执行的. 要了解支持哪些宏,请在supported macro表中搜索'基于触发器的通知和命令/基于触发器的命令'、'手动主机操作脚本'和'手动事件操作脚本'. 请注意,如果宏可能解析为包含空格的值(例如主机名),请根据需要添加引号. |
|
Menu path | 脚本的期望菜单路径. 例如, Default 或 Default/ , 将在相应目录中显示脚本. 菜单可以嵌套, 例如 Main menu/Sub menu1/Sub menu2 . 当通过监控部分中的主机/事件菜单访问脚本时,它们将按照给定的目录进行组织.仅当选择'手动主机操作'或'手动事件操作'作为作用域时显示此字段. |
|
Type | 点击相应按钮选择脚本类型: Webhook, 脚本, SSH, Telnet 或 ipmi-远程命令 命令. |
|
脚本类型: Webhook | ||
参数 | 指定webhook变量为属性-值对. 另请参阅: Webhook 媒体配置. 参数值中支持宏和自定义user macros. 宏支持取决于脚本的作用域(见上面的作用域). |
|
脚本 | 在点击参数字段(或其旁边的查看/编辑按钮)后出现的块中输入JavaScript代码. 宏支持取决于脚本的作用域(见上面的作用域). 另请参阅: Webhook 媒体配置, Additional JavaScript objects. |
|
超时 | JavaScript执行超时时间(1-60秒, 默认30秒). 支持时间后缀, 例如30s, 1m. |
|
脚本类型: 脚本 | ||
执行于 | 点击相应按钮以execute shell脚本在: Zabbix agent - 脚本将由Zabbix agent执行(如果系统.run 监控项是allowed)在主机 Zabbix server (proxy) - 脚本将由Zabbix server或proxy执行(如果通过EnableRemoteCommands启用) - 取决于主机是否由server 或 proxy监控 Zabbix server - 脚本将仅由Zabbix server执行 |
|
命令 | 输入脚本中要执行的命令的完整路径. 宏支持取决于脚本的作用域(见上面的作用域). 支持自定义user macros. |
|
脚本类型: SSH | ||
认证方法 | 选择认证方法 - 密码或公钥. | |
用户名 | 输入用户名. | |
密码 | 输入密码. 如果选择'密码'作为认证方法,则显示此字段. |
|
公钥file | 输入公钥file的路径. 如果选择'公钥'作为认证方法,则显示此字段. |
|
私钥file | 输入私钥file的路径. 如果选择'公钥'作为认证方法,则显示此字段. |
|
密码短语 | 输入密码短语. 如果选择'公钥'作为认证方法,则显示此字段. |
|
端口 | 输入端口号. | |
命令 | 输入命令. 宏支持取决于脚本的作用域(见上面的作用域). 支持自定义user macros. |
|
脚本类型: Telnet | ||
用户名 | 输入用户名. | |
密码 | 输入密码. | |
端口 | 输入端口号. | |
命令 | 输入命令. 宏支持取决于脚本的作用域(见上面的作用域). 支持自定义user macros. |
|
脚本类型: IPMI | ||
命令 | 输入IPMI命令. 宏支持取决于脚本的作用域(见上面的作用域). 支持自定义user macros. |
|
Description | 输入脚本的描述. | |
Host group | 选择脚本可用的主机组(或所有表示所有主机组). 不建议在此字段中使用发现的组. 当发现的组未被发现并被删除时,脚本作用域将重置为所有. |
|
User group | 选择脚本可用的用户组(或所有表示所有用户组). 仅当选择'手动主机操作'或'手动事件操作'作为作用域时显示此字段. |
|
Required host permissions | 选择主机组的权限级别 - 读取或写入. 只有具有所需权限级别的用户才能执行脚本. 仅当选择'手动主机操作'或'手动事件操作'作为作用域时显示此字段. |
|
Enable confirmation | 勾选复选框以在执行脚本前显示确认消息. 此功能对于潜在危险操作(如重启脚本)或可能需要长时间的操作特别有用. 仅当选择'手动主机操作'或'手动事件操作'作为作用域时显示此选项. |
|
Confirmation text | 为上方的确认弹窗输入自定义确认文本(例如, 远程系统将重启. 确定吗?). 要查看文本效果,点击字段旁边的测试确认. 支持{主机.*}和{USER.*}宏. 支持自定义user macros. 注意: 测试确认消息时不会展开宏. 仅当选择'手动主机操作'或'手动事件操作'作为作用域时显示此字段. |
脚本 run 由 Zabbix server 按照 command execution page 中描述的顺序执行。
脚本结果会在脚本 run 后弹出的窗口中显示。脚本的返回值为标准输出:
0
),返回值限制为16MB(包含会被截断的尾部空格)。Zabbix默认不存储扩展脚本输出。如需保留完整输出细节,可在脚本内部实现日志记录(例如将输出重定向至本地日志 file)。
注意:对于在 Zabbix server 或 Zabbix proxy 上执行的脚本,文本数据限制 同样适用。
以下是脚本及结果窗口的示例:
脚本结果不会显示脚本本身。
在执行脚本时可能会遇到超时的情况.
以下是在Zabbix agent上运行的脚本示例及其结果窗口:
这种情况下出现的错误信息如下:
为避免这种情况,建议通过修改Zabbix agent configuration和Zabbix server configuration来优化脚本本身(而不是将Timeout参数调整为相应值,在我们的例子中是> 5
).
如果在Zabbix agent configuration中更改了Timeout参数,将出现以下错误信息:
这意味着修改是在Zabbix agent configuration中进行的,同时也需要在Zabbix server configuration中修改Timeout设置.
查看在Zabbix server上运行的脚本示例及下方结果窗口:
还建议通过修改Zabbix server configuration来优化脚本本身(而非将TrapperTimeout参数调整为对应值(本例中>‘11’))