8 脚本
概述
在 管理 → 脚本 部分,可以配置和维护用户定义的全局脚本。
全局脚本,取决于配置的范围和用户权限,可用于执行:
脚本仅在 Zabbix agent、Zabbix server(proxy)或 Zabbix server上执行。另请参见 命令执行。
默认情况下,Zabbix agent和 Zabbix proxy远程脚本都被禁用。它们可以通过以下方式启用:
- 在agent配置中添加
AllowKey=system.run[*]
参数; - 在proxy配置中将 EnableRemoteCommands 参数设置为“1”
将显示现有脚本及其详细信息的列表。
显示数据:
栏目 | 说明 |
---|---|
名称 | 脚本的名称。单击脚本名称打开脚本配置表单。 |
范围 | 脚本的范围 - 动作操作、手动主机动作或手动事件动作。此设置确定脚本可用的位置。 |
用于动作 | 显示使用脚本的动作。 |
类型 | 显示脚本类型 - Webhook、Script、SSH、Telnet 或 IPMI 命令。 |
执行在 | 显示脚本是在Zabbix agent、Zabbix server(proxy)还是仅在Zabbix server上执行。 |
命令 | 显示脚本中要执行的所有命令。 |
用户组 | 显示脚本可用的用户组(或 全部 所有用户组)。 |
主机组 | 显示脚本可用的主机组(或 全部 用于所有主机组)。 |
主机访问 | 显示主机组的权限级别 - 读 或 写。只有具有所需权限级别的用户才能执行脚本。 |
要配置新脚本,请单击右上角的 创建脚本 按钮。
批量编辑选项
列表下方的按钮提供了一个批量编辑选项:
- 删除 - 删除脚本
要使用此选项,请标记相应脚本前的复选框并单击 删除。
使用过滤器
您可以使用过滤器仅显示您感兴趣的脚本。为了获得更好的搜索性能,搜索数据时未解析宏。
过滤器 链接位于脚本列表上方。 如果您单击它,则会出现一个过滤器,您可以在其中按名称和范围过滤脚本。
配置全局脚本
脚本属性:
参数 | 说明 | |||
---|---|---|---|---|
名称 | 脚本的唯一名称。 例如 清除 /tmp 文件系统 | |||
范围 | 脚本的范围 - 动作操作、手动主机动作或手动事件动作。此设置确定脚本可以在哪里使用 - 在操作操作的远程命令中,来自 主机菜单 或来自 事件菜单。 将范围设置为“操作操作”使脚本可供所有有权访问 配置 → 动作 的用户使用。 如果脚本实际用于动作,它的范围不能从“动作操作”改变。 宏支持 范围影响可用宏的范围。例如,脚本支持与用户相关的宏 ({USER.}),以允许传递有关启动脚本的用户的信息。但是,如果脚本范围是操作操作,则不支持它们,因为操作操作会自动执行。 要了解支持哪些宏,请搜索“基于触发器的通知和命令/基于触发器的命令”, 支持的宏 表中的“手动主机操作脚本”和“手动事件操作脚本”。请注意,如果宏可以解析为带有空格的值(例如,主机名),请不要忘记根据需要引用。 | |||
菜单路径 | 脚本所需的菜单路径。例如,Default 或 Default/ ,将在各自的目录中显示脚本。菜单可以嵌套,例如主菜单/子菜单1/子菜单2 。通过监控部分中的主机/事件菜单访问脚本时,它们将根据给定目录进行组织。仅当“手动主机操作”或“手动事件操作”选择为 范围 时,才会显示此字段。 | |||
类型 | 点击相应的按钮选择脚本类型: Webhook, Script, SSH, Telnet or IPMI 命令。 | |||
脚本类型:Webhook | ||||
参数 | 将 webhook 变量指定为属性值对。 另请参阅:Webhook 媒体配置。 宏和参数值支持自定义 用户宏。宏支持取决于脚本的范围(参见上面的范围)。 | |||
脚本 | 在单击参数字段(或旁边的查看/编辑按钮)时出现的块中输入 JavaScript 代码。 宏支持取决于脚本(请参阅上面的 Scope)。 另请参阅:Webhook 媒体配置,其他 Javascript 对象。 | |||
超时 | JavaScript 执行超时(1-60 秒,默认 30 秒)。 支持时间后缀,例如30s,1m。 | |||
脚本类型:脚本 | ||||
执行于 | 点击相应的按钮执行shell脚本: Zabbix agent - 脚本将由Zabbix agent执行(如果system.run项是allowed) 在主机上 Zabbix server (proxy) - 脚本将由 Zabbix server 或 proxy 执行(如果由 EnableRemoteCommands) - 取决于主机是由服务器监控还是代理监控 Zabbix server - 脚本将仅由Zabbix server执行 | |||
命令 | 输入要在脚本中执行的命令的完整路径。 宏支持取决于脚本的范围(参见上面的Scope)。支持自定义 用户宏。 | |||
脚本类型:SSH | ||||
认证方式 | 选择认证方式-密码或公钥。 | |||
用户名 | 输入用户名。 | |||
密码 | 输入密码。 如果选择“密码”作为验证方法,则此字段可用。 | |||
公钥文件 | 输入公钥文件的路径。 如果选择“公钥”作为身份验证方法,则此字段可用。 | |||
私钥文件 | 输入私钥文件的路径。 如果选择“公钥”作为验证方法,则此字段可用。 | |||
密码 | 输入密码。 如果选择“公钥”作为身份验证方法,则此字段可用。 | |||
端口 | 输入端口。 | |||
命令 | 输入命令。 宏支持取决于脚本的范围(参见上面的Scope)。支持自定义 用户宏。 | |||
脚本类型:Telnet | ||||
用户名 | 输入用户名。 | |||
密码 | 输入密码。 | |||
端口 | 输入端口。 | |||
命令 | 输入命令。 宏支持取决于脚本的范围(参见上面的Scope)。支持自定义 用户宏。 | |||
脚本类型:IPMI | ||||
命令 | 输入 IPMI 命令。 宏支持取决于脚本的范围(参见上面的 Scope)。支持自定义 用户宏。 | |||
描述 | 输入脚本的描述。 | |||
主机组 | 选择脚本可用于的主机组(或 All 用于所有主机组)。 | |||
用户组 | 选择脚本可用的用户组(或所有用户组的全部)。 此字段仅在“手动主机操作”或“手动事件操作’被选为 Scope。 | |||
必需的主机权限 | 选择主机组的权限级别 - Read 或 Write。 Only users with the required permission level will have access to executing the script. This field is displayed only if ‘Manual host action’ or ‘Manual event action’ is selected as Scope. | |||
启用确认 | 标记复选框以在执行脚本之前显示确认消息。此功能对于具有潜在危险的操作(如重新启动脚本)或可能需要很长时间的操作可能特别有用。 仅当“手动主机操作”或“手动事件操作”选为 Scope 时才会显示此选项. | |||
确认文本 | 为使用上面的复选框启用的确认弹出窗口输入自定义确认文本(例如,远程系统将重新启动。您确定吗?)。要查看文本的外观,请单击字段旁边的测试确认。 支持 {HOST.} 和 {USER.*} 宏。支持自定义 用户宏。 注意: 测试确认消息时不会展开宏。 仅当“手动主机操作”时才会显示此字段’ 或 ‘手动事件操作’ 被选为 Scope。 |
脚本执行和结果
Zabbix 服务器运行的脚本按照 命令执行 部分中描述的顺序执行,包括退出代码检查。脚本结果将显示在 脚本运行后将出现的弹出窗口。
注: 脚本的返回值是标准输出和标准错误。
请参阅下面的脚本示例和结果窗口:
uname -v
/tmp/non_existing_script.sh
echo "This script was started by {USER.USERNAME}"
脚本结果不显示脚本本身。
脚本超时
Zabbix agent
您可能会遇到执行脚本时发生超时的情况。
请参阅在 Zabbix agent上运行的脚本示例和下面的结果窗口:
sleep 5
df -h
在这种情况下,错误消息如下:
Timeout while executing a shell script.
为了避免这种情况,建议通过修改【Zabbix agent configuration】(/manual/appendix/ config/zabbix_agentd) 和 Zabbix server配置)。
如果 Zabbix agent configuration 中的 Timeout 参数仍然更改,则会出现以下错误消息:
Get value from agent failed: ZBX_TCP_READ() timed out.
这意味着在Zabbix agent configuration中进行了修改,并且需要在Zabbix server configuration中修改Timeout设置。
Zabbix server/proxy
查看在 Zabbix server上运行的脚本示例和下面的结果窗口:
sleep 11
df -h
还建议优化脚本本身(而不是通过修改[Zabbix server configuration](/manual/appendix/config/zabbix_server)将 TrapperTimeout 参数调整为相应的值(在我们的例子中,>’11’))。