Zabbix PyOra 模板修复版「Pyora active send」全解析:从 Zabbix 3.0 移植到 5.0/5.4/6.0 的 Oracle 主动监控实践

发布时间:2026/10/16 7:36:18
Zabbix PyOra 模板修复版「Pyora active send」全解析:从 Zabbix 3.0 移植到 5.0/5.4/6.0 的 Oracle 主动监控实践
【免费下载链接】community-templatesZabbix Community Templates repository项目地址https://gitcode.com/gh_mirrors/co/community-templates点击查看免费下载本文以 community-templates 仓库中 Databases/Oracle/template_3.0_for_pyora 目录下的模板文档与导入文件为对象完整解析名为Pyora active send的 Zabbix 模板它如何基于 PyOra 的主动发送active send机制通过 trapper 与低级别发现LLD实现对 Oracle 实例、表空间、临时表空间、ASM 卷和数据库用户的全面监控。读完本文你将掌握该模板的宏配置、发现规则、采集项与触发器体系并能在 Zabbix 5.0/5.4/6.0 环境中正确导入、配置与调优这套 Oracle 监控方案。模板背景为什么需要一个修复版 PyOra 模板PyOraPyOra for Zabbix是社区中广泛使用的 Oracle 监控工具它用 Python 脚本查询 Oracle 动态性能视图再把结果通过zabbix_sender主动推送给 Zabbix Server 的 trapper 监控项Item。这种脚本采集 主动推送的架构避免了在数据库主机上长期占用 Zabbix Agent 轮询连接也天然适配只读账号 单向出站的安全环境。然而原版模板是为旧版本 Zabbix 设计的直接导入新版本会出现兼容性问题。本模板的作者在 Overview 中明确说明This is the fixed template for Zabbix PyOra to work on 3.0. I remove the unsupported tags and downgraded version. Note you will most likely have to update the triggers manually.即该模板去掉了新版 Zabbix 不支持的标签tags并降级了导出版本使其能稳定工作在 Zabbix 3.0 上同时提醒使用者——触发器triggers大概率需要根据实际环境手动更新。值得注意的是这个面向 3.0 的修复版模板在仓库中同时以三种导出格式存放目录格式文件5.0XMLtemplate_3.0_for_pyora.xml5.4YAMLtemplate_3.0_for_pyora.yaml6.0YAMLtemplate_3.0_for_pyora.yaml三份文件的导出时间均为2021-11-21T21:26:5xZ且 YAML 中模板 UUID 一致7eae89aae9d747498d89b12d7f25df33说明它们是同一模板针对不同 Zabbix 版本生成的导出物可按需选用。仓库根 README.md 的模板索引中也收录了该模板Pyora active send。模板总体结构一个纯 trapper 的主动发送模板导入后模板名为Pyora active send归属于Pyora与Templates两个模板组共定义了 5 个应用ApplicationOracle、ASM Volumes、Tablespaces、Temp Tablespaces、Database Users。从 5.4 YAML 与 5.0 XML 的实现看模板呈现三个鲜明特征几乎全部采用 Zabbix trapperTRAP类型普通指标项如commits、uptime、version与 LLD 原型项如tablespace[{#TABLESPACE}]均为 trapperdelay为0完全依赖 PyOra 脚本主动推数Zabbix 侧不做轮询。少量辅助项用 Zabbix agent 类型仅Zabbix items listpyora-items-list[...]为 agent 项更新周期 3600 秒用于校验 PyOra 脚本是否成功在 Zabbix 中创建了完整条目清单。无模板链接Template linksREADME 明确标注 There are no template links in this template.该模板不依赖任何其他模板。数据流Oracle 数据库 │ 只读账号查询 v$ 视图 ▼ PyOra Python 脚本在数据库主机或独立采集机上运行 │ zabbix_sender 主动推送trapper itemsdelay0 ▼ Zabbix Server ── trapper items ── 预处理器 ── 历史/趋势 ── 触发器告警 ▲ └── Zabbix Agent 每 3600s 轮询 pyora-items-list 做完整性自检宏定义Macros接入前必须配置的变量模板在 README 宏表 中列出了 6 个宏与 XML 宏定义 一一对应宏名说明默认值类型{$ASMHIGH}ASM 卷使用率告警阈值%85Text macro{$DATABASE}被监控的 Oracle 数据库名如ORCL空Text macro{$HIGH}表空间使用率告警阈值%80Text macro{$ZABBIXPASSWORD}用于调用 Zabbix API 的密码空Text macro{$ZABBIXURL}Zabbix API 地址如http://zabbix/api_jsonrpc.php空Text macro{$ZABBIXUSER}用于调用 Zabbix API 的用户名空Text macro此外模板中的 item 键还引用了一个未在宏表中列出但实际被使用的宏{$ADDRESS}出现在所有pyora-discovery[...]与pyora-items-list[...]键中指 Oracle 实例地址以及{$ARCHIVE}用于check_archive[{$ARCHIVE}]监控项。在 5.4/6.0 YAML 的宏区 中同样只能看到{$ASMHIGH}、{$DATABASE}、{$HIGH}、{$ZABBIXPASSWORD}、{$ZABBIXURL}、{$ZABBIXUSER}六个宏定义因此{$ADDRESS}、{$ARCHIVE}需要在主机级或模板级手动补充。部署时建议在主机上统一设置否则带{$ADDRESS}的发现规则与自检项会因宏未解析而失效。低级别发现LLD规则自动盘点 Oracle 对象模板通过 4 条发现规则实现自动发现、自动建项详见 README Discovery rules发现规则名称键key类型更新周期过滤器宏Discovery Oracle temp tablespacespyora-discovery[{$ADDRESS},{$DATABASE},show_tablespaces_temp]Zabbix agent3600{#TABLESPACE_TEMP}Discovery Oracle tablespacespyora-discovery[{$ADDRESS},{$DATABASE},show_tablespaces]Zabbix agent3600{#TABLESPACE}Discovery Oracle ASM volumespyora-discovery[{$ADDRESS},{$DATABASE},show_asm_volumes]Zabbix agent3600{#ASMVOLUME}Discovery Oracle userspyora-discovery[{$ADDRESS},{$DATABASE},show_users]Zabbix agent3600{#DBUSER}这些规则由 PyOra 脚本的 discovery 输出驱动脚本按show_*参数分别返回临时表空间、表空间、ASM 卷、数据库用户清单Zabbix 据此生成对应的 LLD 原型项。需要特别注意5.4 YAML 与 6.0 YAML 中Discovery Oracle tablespaces与Discovery Oracle users两条规则的状态为DISABLED5.0 XML 中同样标注statusDISABLED意味着导入后默认不会执行发现需要按需启用。各规则生成的原型项如下ASM 卷发现应用ASM Volumesasm_volume_free[{#ASMVOLUME}]ASM Volume Free单位 Basm_volume_size[{#ASMVOLUME}]ASM Volume Size单位 Basm_volume_use[{#ASMVOLUME}]ASM Volume Use单位 %表空间发现应用Tablespacestablespace[{#TABLESPACE}]Tablespace percentual use单位 %FLOATtablespace_abs[{#TABLESPACE}]Tablespace free单位 bytes临时表空间发现应用Temp Tablespacestablespace_temp[{#TABLESPACE_TEMP}]Temp Tablespace Use单位 %FLOAT用户发现应用Database Usersuser_status[{#DBUSER}]{#DBUSER} user statusTEXT 类型原型本身状态为 DISABLED所有 LLD 原型项同样都是 trapperTRAPdelay0等待 PyOra 按{#宏}展开后的具体键推送数据。采集指标Items47 个 trapper 指标 7 个 LLD 原型模板的采集项几乎覆盖了 Oracle 性能监控的核心维度完整清单见 README Items collected 与 XML items 区。除Zabbix items list外全部为Zabbix trapper、Update: 0。按监控维度可归纳为以下几组实例与运行状态指标名键说明Oracle/Instance is active and open on {$DATABASE}check_active实例存活与打开状态CHAROracle/Uptime on {$DATABASE}uptime实例运行时长单位 sOracle/Version on {$DATABASE}versionOracle 版本CHAROracle/Logonscurrent on {$DATABASE}logonscurrent当前登录会话数Oracle/Active user count on {$DATABASE}activeusercount活跃用户数性能与等待事件指标名键Oracle/Read Cache hit ratio on {$DATABASE}rcachehit% Oracle/Hard parse ratio on {$DATABASE}hparsratio% Oracle/Disk sorts ratio on {$DATABASE}dsksortratio% Oracle/Buffer busy waits on {$DATABASE}bufbusywaitsOracle/Latchfree on {$DATABASE}latchfreeOracle/Enqueue on {$DATABASE}enqueue默认 DISABLEDOracle/freebufwaits on {$DATABASE}freebufwaits默认 DISABLEDOracle/Netresv / Netroundtrips / Netsentnetresv/netroundtrips/netsentOracle/dbseqread / dbscattread / directread / dbsnglwrite / dbprllwrite各类物理 I/O 计数事务、日志与锁指标名键Oracle/User Commits on {$DATABASE}commitsOracle/Redo Writes on {$DATABASE}redowritesOracle/Deadlocks on {$DATABASE}deadlocksOracle/Logfilesync / Logprllwrite / Logswcompletionlogfilesync/logprllwrite/logswcompletionOracle/Lastarclog / Lastapplarcloglastarclog/lastapplarclog后者默认 DISABLEDOracle/Query Lock / Query Lock listquery_lock/query_lock_list2TEXTOracle/Query Redologs / Query Rollbacks / Query Sessionsquery_redologs/query_rollbacks/query_sessions容量与增长指标名键Oracle/Size of user data (without temp) on {$DATABASE}dbsize单位 BOracle/Size of all datafiles on {$DATABASE}dbfilesize单位 BOracle/fra_use on {$DATABASE}fra_useFast Recovery Area 使用率默认 DISABLEDOracle/Archive {$ARCHIVE} on {$DATABASE}check_archive[{$ARCHIVE}]% 默认 DISABLED系统指标sysmetrics指标名键Oracle/Database CPU Time Ratio on {$DATABASE}query_sysmetrics[Database_CPU_Time_Ratio]% Oracle/Database Wait Time Ratio on {$DATABASE}query_sysmetrics[Database_Wait_Time_Ratio]% Oracle/User Transaction Per Sec on {$DATABASE}query_sysmetrics[User_Transaction_Per_Sec]这三个指标直接对应 Oracle AWR 中的经典比率指标PyOra 通过query_sysmetrics[指标名]参数化的键按名称取数FLOAT 类型存储。自检与完整性指标名键类型/周期Zabbix items listpyora-items-list[{$ZABBIXURL},{$ZABBIXUSER},{$ZABBIXPASSWORD},{HOST.HOST},{$ADDRESS},{$DATABASE}]Zabbix agent3600sCHARZabbix failed checks on {$DATABASE}failedcheckstrapperPyOra 上报失败的推送计数其中Zabbix items list会调用 Zabbix APIURL/用户名/密码均来自宏把当前主机上应存在的条目清单写入该 item若输出中不包含关键字OK将触发Cant create items list告警详见下节是这套模板安装是否正确的体检指标。预处理器Preprocessing让原始计数变成可读指标从 YAML items 定义 可以看到模板为不同指标配置了三种预处理器预处理器作用应用到的键CHANGE_PER_SECOND将累计计数换算为每秒变化率速率commits、deadlocks、indexffs、netresv、redowrites、tblrowsscans、tblscansBOOL_TO_DECIMAL将布尔值true/false转为 1/0 数值dbprllwrite、dbseqread、lastarclogMULTIPLIER×1048576将 MB 单位数值放大为字节Basm_volume_free[{#ASMVOLUME}]、asm_volume_size[{#ASMVOLUME}]见 YAML LLD 区这三类预处理器正是 PyOra原始值上报、Zabbix 侧加工思路的体现脚本只负责把 Oracle 视图里的计数值、布尔标志和 MB 尺寸推过来速率、归一化和单位换算全部交给 Zabbix 预处理完成从而保持采集端脚本简单、可移植。触发器体系从灾难告警到容量预警模板内置的触发器在 README Triggers 中公开了 4 条而 XML 与 YAML 实际内置了更多按严重级别汇总如下严重级别触发器名称表达式以 5.4/6.0 新语法为例说明DISASTERDatabase {$DATABASE} is down or ORA error foundfind(/Pyora active send/check_active,,regexp,ORA)1check_active返回内容中出现ORA即告警提示联系 DBAHIGHDatabase {$DATABASE} is not respondingnodata(/Pyora active send/check_active,800s)1800 秒无数据判定实例无响应HIGHfra_use used on {$DATABASE} 90%last(/Pyora active send/fra_use)90Fast Recovery Area 使用率超 90%AVERAGEASM Volume {#ASMVOLUME} used {$ASMHIGH}%(last(...asm_volume_size...) - last(...asm_volume_free...)) / last(...asm_volume_size...) *100 {$ASMHIGH}由 size/free 计算使用率后与{$ASMHIGH}比较AVERAGETablespace {#TABLESPACE} used on {$DATABASE} {$HIGH} %last(/Pyora active send/tablespace[{#TABLESPACE}]){$HIGH}表空间使用率超{$HIGH}AVERAGEZabbix sender failed checks count: {ITEM.LASTVALUE1}last(/Pyora active send/failedchecks)0上报失败计数非零AVERAGEQuery Sessions on {$DATABASE} 250last(/Pyora active send/query_sessions)250会话数超 250AVERAGEQuery Lock on {$DATABASE} 1last(/Pyora active send/query_lock)0 and length(last(/Pyora active send/query_lock_list2))3锁数大于 0 且锁清单文本长度大于 3该触发器在 XML 中为全局触发器YAML 中位于文件末尾 triggers 区AVERAGEQuery Lock list on {$DATABASE} not emptylength(last(/Pyora active send/query_lock_list2))3锁清单非空AVERAGECant create items listfind(/Pyora active send/pyora-items-list[...],,regexp,OK)0条目清单中找不到OK新旧版本表达式语法的差异README 提醒需手动更新触发器的由来对比三个版本的导出文件能直观看到 Zabbix 触发器语法的演进5.0 XML 使用 Zabbix 3.x 时代的旧式简写如{Pyora active send:asm_volume_size[{#ASMVOLUME}].last()}、{regexp(ORA)}1、{nodata(800)}1、{last()}80。5.4/6.0 YAML 已改写为新式函数语法last(/Pyora active send/... )、find(/Pyora active send/check_active,,regexp,ORA)1、nodata(/Pyora active send/check_active,800s)1、length(last(...))。这就是作者在 Overview 中提示 you will most likely have to update the triggers manually 的原因模板从旧版迁移而来跨版本导入后旧式表达式在新版 Zabbix 中可能无法直接解析需要按下表对照改写。README 的 Triggers 表中表达式仍保留硬编码阈值 85、 80而 YAML/XML 中的触发器原型已改用宏{$ASMHIGH}、{$HIGH}配置时建议统一以宏为准便于批量调整阈值。部署步骤导入、配置与验证1. 选择版本并导入按目标 Zabbix 版本选择导入文件通过 Zabbix 前端Configuration → Templates → ImportZabbix 版本导入文件5.0Databases/Oracle/template_3.0_for_pyora/5.0/template_3.0_for_pyora.xml5.4Databases/Oracle/template_3.0_for_pyora/5.4/template_3.0_for_pyora.yaml6.0Databases/Oracle/template_3.0_for_pyora/6.0/template_3.0_for_pyora.yaml2. 配置宏在主机或模板上设置以下宏{$DATABASE}Oracle 实例名如ORCL{$ADDRESS}Oracle 实例地址发现规则与 items-list 键使用{$ZABBIXURL}/{$ZABBIXUSER}/{$ZABBIXPASSWORD}Zabbix API 三要素供pyora-items-list自检使用阈值宏{$HIGH}默认 80、{$ASMHIGH}默认 85可按业务调整如启用归档检查还需{$ARCHIVE}3. 挂载主机并启用需要的规则把模板链接到 Oracle 主机后按需启用默认 DISABLED 的发现规则show_tablespaces、show_users与指标项enqueue、fra_use、freebufwaits、lastapplarclog、check_archive、user_status原型等。4. 验证数据流确认 PyOra 脚本能连接 Oracle 并以只读账号取数确认脚本通过zabbix_sender推送的键名与模板 item 键一一对应观察Zabbix items list项的值是否包含OK若触发Cant create items list则说明 API 宏配置或脚本侧条目生成存在问题检查failedchecks是否为 0非 0 时触发Zabbix sender failed checks count告警提示存在推送失败的键。注意事项与适用前提版本适配本模板名为 3.0实际为适配 Zabbix 3.0 的修复版仓库以 5.0/5.4/6.0 导出格式提供。导入前请确认目标 Zabbix 版本5.0 版本使用 XML5.4/6.0 使用 YAML旧式触发器表达式跨版本导入后可能需要手动改写参见上文新旧语法对照。默认禁用项多条发现规则、指标与原型show_tablespaces、show_users、fra_use、enqueue、freebufwaits、lastapplarclog、check_archive、user_status默认 DISABLED需按监控需求启用query_lock的触发器在 XML 中状态亦为 DISABLED。宏完整性{$ADDRESS}、{$ARCHIVE}未出现在模板宏表中必须自行补充否则相关键无法解析。采集前提所有 trapper 指标依赖 PyOra 脚本主动推送若脚本未运行或数据库账号权限不足Zabbix 侧只会呈现无数据不会主动报错需结合nodata类触发器与failedchecks综合判断。阈值合理性触发器阈值表空间 80%、ASM 85%、FRA 90%、会话 250、无数据 800s 等均为模板默认值生产环境请结合实例规格与容量规划调整并优先通过宏{$HIGH}、{$ASMHIGH}管理避免直接改动硬编码表达式。小结Pyora active send模板完整呈现了一套PyOra 主动推送 Zabbix trapper 接收 LLD 自动发现 预处理加工的 Oracle 监控范式47 个常规 trapper 指标覆盖实例状态、等待事件、事务日志、锁与容量维度7 个 LLD 原型实现表空间、临时表空间、ASM 卷与用户的自动盘点而pyora-items-list与failedchecks则为整套链路提供了自我校验能力。对于仍在维护 Zabbix 3.0 时代 PyOra 方案、或希望在新版 Zabbix 上复用该采集架构的团队仓库中 README 与三份导入文件是可直接落地的参考实现跨版本迁移时请重点核对触发器表达式语法与默认禁用项即可快速复现这套 Oracle 监控体系。赞分享【免费下载链接】community-templatesZabbix Community Templates repository项目地址https://gitcode.com/gh_mirrors/co/community-templates点击查看免费下载相关推荐Zabbix「Windows by Zabbix agent active」模板实战指南基于主动式 Agent 的 Windows 全栈监控Zabbix「Windows by Zabbix agent active」模板实战指南基于主动式 Agent 的 Windows 全栈监控 导读 本文以 Z指标监控可观测性告警运维使用 Zabbix 6.0 模板监控 Oracle Linux 上的 Focco ERP115 个监控项实战解析使用 Zabbix 6.0 模板监控 Oracle Linux 上的 Focco ERP115 个监控项实战解析 本文基于 Zabbix CommunityZabbix 8.0 官方模板解析使用 Zabbix agent active 监控 Podman 容器与宿主机Zabbix 8.0 官方模板解析使用 Zabbix agent active 监控 Podman 容器与宿主机 本指南以仓库内 Podman by Zabb指标监控可观测性告警运维上一篇Operit DeepSeek Responses 思考模式工具延续修复commentary 推理文本的捕获、持久化与重放下一篇antislop双模式实战During实时过滤 vs After事后审计如何为你的项目选对模式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考