版「Pyora active send」全解析:從 Zabbix 3.0 移植到 5.0/5.4/6.0 的 Oracle 主動監(jiān)控實踐)
【免費下載鏈接】community-templatesZabbix Community Templates repository項目地址https://gitcode.com/gh_mirrors/co/community-templates點擊查看免費下載本文以 community-templates 倉庫中 Databases/Oracle/template_3.0_for_pyora 目錄下的模板文檔與導(dǎo)入文件為對象完整解析名為Pyora active send的 Zabbix 模板它如何基于 PyOra 的主動發(fā)送active send機制通過 trapper 與低級別發(fā)現(xiàn)LLD實現(xiàn)對 Oracle 實例、表空間、臨時表空間、ASM 卷和數(shù)據(jù)庫用戶的全面監(jiān)控。讀完本文你將掌握該模板的宏配置、發(fā)現(xiàn)規(guī)則、采集項與觸發(fā)器體系并能在 Zabbix 5.0/5.4/6.0 環(huán)境中正確導(dǎo)入、配置與調(diào)優(yōu)這套 Oracle 監(jiān)控方案。模板背景為什么需要一個修復(fù)版 PyOra 模板PyOraPyOra for Zabbix是社區(qū)中廣泛使用的 Oracle 監(jiān)控工具它用 Python 腳本查詢 Oracle 動態(tài)性能視圖再把結(jié)果通過zabbix_sender主動推送給 Zabbix Server 的 trapper 監(jiān)控項Item。這種腳本采集 主動推送的架構(gòu)避免了在數(shù)據(jù)庫主機上長期占用 Zabbix Agent 輪詢連接也天然適配只讀賬號 單向出站的安全環(huán)境。然而原版模板是為舊版本 Zabbix 設(shè)計的直接導(dǎo)入新版本會出現(xiàn)兼容性問題。本模板的作者在 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 不支持的標(biāo)簽tags并降級了導(dǎo)出版本使其能穩(wěn)定工作在 Zabbix 3.0 上同時提醒使用者——觸發(fā)器triggers大概率需要根據(jù)實際環(huán)境手動更新。值得注意的是這個面向 3.0 的修復(fù)版模板在倉庫中同時以三種導(dǎo)出格式存放目錄格式文件5.0XMLtemplate_3.0_for_pyora.xml5.4YAMLtemplate_3.0_for_pyora.yaml6.0YAMLtemplate_3.0_for_pyora.yaml三份文件的導(dǎo)出時間均為2021-11-21T21:26:5xZ且 YAML 中模板 UUID 一致7eae89aae9d747498d89b12d7f25df33說明它們是同一模板針對不同 Zabbix 版本生成的導(dǎo)出物可按需選用。倉庫根 README.md 的模板索引中也收錄了該模板Pyora active send。模板總體結(jié)構(gòu)一個純 trapper 的主動發(fā)送模板導(dǎo)入后模板名為Pyora active send歸屬于Pyora與Templates兩個模板組共定義了 5 個應(yīng)用ApplicationOracle、ASM Volumes、Tablespaces、Temp Tablespaces、Database Users。從 5.4 YAML 與 5.0 XML 的實現(xiàn)看模板呈現(xiàn)三個鮮明特征幾乎全部采用 Zabbix trapperTRAP類型普通指標(biāo)項如commits、uptime、version與 LLD 原型項如tablespace[{#TABLESPACE}]均為 trapperdelay為0完全依賴 PyOra 腳本主動推數(shù)Zabbix 側(cè)不做輪詢。少量輔助項用 Zabbix agent 類型僅Zabbix items listpyora-items-list[...]為 agent 項更新周期 3600 秒用于校驗 PyOra 腳本是否成功在 Zabbix 中創(chuàng)建了完整條目清單。無模板鏈接Template linksREADME 明確標(biāo)注 There are no template links in this template.該模板不依賴任何其他模板。數(shù)據(jù)流Oracle 數(shù)據(jù)庫 │ 只讀賬號查詢 v$ 視圖 ▼ PyOra Python 腳本在數(shù)據(jù)庫主機或獨立采集機上運行 │ zabbix_sender 主動推送trapper itemsdelay0 ▼ Zabbix Server ── trapper items ── 預(yù)處理器 ── 歷史/趨勢 ── 觸發(fā)器告警 ▲ └── Zabbix Agent 每 3600s 輪詢 pyora-items-list 做完整性自檢宏定義Macros接入前必須配置的變量模板在 README 宏表 中列出了 6 個宏與 XML 宏定義 一一對應(yīng)宏名說明默認值類型{$ASMHIGH}ASM 卷使用率告警閾值%85Text macro{$DATABASE}被監(jiān)控的 Oracle 數(shù)據(jù)庫名如ORCL空Text macro{$HIGH}表空間使用率告警閾值%80Text macro{$ZABBIXPASSWORD}用于調(diào)用 Zabbix API 的密碼空Text macro{$ZABBIXURL}Zabbix API 地址如http://zabbix/api_jsonrpc.php空Text macro{$ZABBIXUSER}用于調(diào)用 Zabbix API 的用戶名空Text macro此外模板中的 item 鍵還引用了一個未在宏表中列出但實際被使用的宏{$ADDRESS}出現(xiàn)在所有pyora-discovery[...]與pyora-items-list[...]鍵中指 Oracle 實例地址以及{$ARCHIVE}用于check_archive[{$ARCHIVE}]監(jiān)控項。在 5.4/6.0 YAML 的宏區(qū) 中同樣只能看到{$ASMHIGH}、{$DATABASE}、{$HIGH}、{$ZABBIXPASSWORD}、{$ZABBIXURL}、{$ZABBIXUSER}六個宏定義因此{$ADDRESS}、{$ARCHIVE}需要在主機級或模板級手動補充。部署時建議在主機上統(tǒng)一設(shè)置否則帶{$ADDRESS}的發(fā)現(xiàn)規(guī)則與自檢項會因宏未解析而失效。低級別發(fā)現(xiàn)LLD規(guī)則自動盤點 Oracle 對象模板通過 4 條發(fā)現(xiàn)規(guī)則實現(xiàn)自動發(fā)現(xiàn)、自動建項詳見 README Discovery rules發(fā)現(xiàn)規(guī)則名稱鍵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}這些規(guī)則由 PyOra 腳本的 discovery 輸出驅(qū)動腳本按show_*參數(shù)分別返回臨時表空間、表空間、ASM 卷、數(shù)據(jù)庫用戶清單Zabbix 據(jù)此生成對應(yīng)的 LLD 原型項。需要特別注意5.4 YAML 與 6.0 YAML 中Discovery Oracle tablespaces與Discovery Oracle users兩條規(guī)則的狀態(tài)為DISABLED5.0 XML 中同樣標(biāo)注statusDISABLED意味著導(dǎo)入后默認不會執(zhí)行發(fā)現(xiàn)需要按需啟用。各規(guī)則生成的原型項如下ASM 卷發(fā)現(xiàn)應(yīng)用ASM Volumesasm_volume_free[{#ASMVOLUME}]ASM Volume Free單位 Basm_volume_size[{#ASMVOLUME}]ASM Volume Size單位 Basm_volume_use[{#ASMVOLUME}]ASM Volume Use單位 %表空間發(fā)現(xiàn)應(yīng)用Tablespacestablespace[{#TABLESPACE}]Tablespace percentual use單位 %FLOATtablespace_abs[{#TABLESPACE}]Tablespace free單位 bytes臨時表空間發(fā)現(xiàn)應(yīng)用Temp Tablespacestablespace_temp[{#TABLESPACE_TEMP}]Temp Tablespace Use單位 %FLOAT用戶發(fā)現(xiàn)應(yīng)用Database Usersuser_status[{#DBUSER}]{#DBUSER} user statusTEXT 類型原型本身狀態(tài)為 DISABLED所有 LLD 原型項同樣都是 trapperTRAPdelay0等待 PyOra 按{#宏}展開后的具體鍵推送數(shù)據(jù)。采集指標(biāo)Items47 個 trapper 指標(biāo) 7 個 LLD 原型模板的采集項幾乎覆蓋了 Oracle 性能監(jiān)控的核心維度完整清單見 README Items collected 與 XML items 區(qū)。除Zabbix items list外全部為Zabbix trapper、Update: 0。按監(jiān)控維度可歸納為以下幾組實例與運行狀態(tài)指標(biāo)名鍵說明Oracle/Instance is active and open on {$DATABASE}check_active實例存活與打開狀態(tài)CHAROracle/Uptime on {$DATABASE}uptime實例運行時長單位 sOracle/Version on {$DATABASE}versionOracle 版本CHAROracle/Logonscurrent on {$DATABASE}logonscurrent當(dāng)前登錄會話數(shù)Oracle/Active user count on {$DATABASE}activeusercount活躍用戶數(shù)性能與等待事件指標(biāo)名鍵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 計數(shù)事務(wù)、日志與鎖指標(biā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容量與增長指標(biāo)名鍵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系統(tǒng)指標(biāo)sysmetrics指標(biāo)名鍵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]這三個指標(biāo)直接對應(yīng) Oracle AWR 中的經(jīng)典比率指標(biāo)PyOra 通過query_sysmetrics[指標(biāo)名]參數(shù)化的鍵按名稱取數(shù)FLOAT 類型存儲。自檢與完整性指標(biāo)名鍵類型/周期Zabbix items listpyora-items-list[{$ZABBIXURL},{$ZABBIXUSER},{$ZABBIXPASSWORD},{HOST.HOST},{$ADDRESS},{$DATABASE}]Zabbix agent3600sCHARZabbix failed checks on {$DATABASE}failedcheckstrapperPyOra 上報失敗的推送計數(shù)其中Zabbix items list會調(diào)用 Zabbix APIURL/用戶名/密碼均來自宏把當(dāng)前主機上應(yīng)存在的條目清單寫入該 item若輸出中不包含關(guān)鍵字OK將觸發(fā)Cant create items list告警詳見下節(jié)是這套模板安裝是否正確的體檢指標(biāo)。預(yù)處理器Preprocessing讓原始計數(shù)變成可讀指標(biāo)從 YAML items 定義 可以看到模板為不同指標(biāo)配置了三種預(yù)處理器預(yù)處理器作用應(yīng)用到的鍵CHANGE_PER_SECOND將累計計數(shù)換算為每秒變化率速率commits、deadlocks、indexffs、netresv、redowrites、tblrowsscans、tblscansBOOL_TO_DECIMAL將布爾值true/false轉(zhuǎn)為 1/0 數(shù)值dbprllwrite、dbseqread、lastarclogMULTIPLIER×1048576將 MB 單位數(shù)值放大為字節(jié)Basm_volume_free[{#ASMVOLUME}]、asm_volume_size[{#ASMVOLUME}]見 YAML LLD 區(qū)這三類預(yù)處理器正是 PyOra原始值上報、Zabbix 側(cè)加工思路的體現(xiàn)腳本只負責(zé)把 Oracle 視圖里的計數(shù)值、布爾標(biāo)志和 MB 尺寸推過來速率、歸一化和單位換算全部交給 Zabbix 預(yù)處理完成從而保持采集端腳本簡單、可移植。觸發(fā)器體系從災(zāi)難告警到容量預(yù)警模板內(nèi)置的觸發(fā)器在 README Triggers 中公開了 4 條而 XML 與 YAML 實際內(nèi)置了更多按嚴重級別匯總?cè)缦聡乐丶墑e觸發(fā)器名稱表達式以 5.4/6.0 新語法為例說明DISASTERDatabase {$DATABASE} is down or ORA error foundfind(/Pyora active send/check_active,,regexp,ORA)1check_active返回內(nèi)容中出現(xiàn)ORA即告警提示聯(lián)系 DBAHIGHDatabase {$DATABASE} is not respondingnodata(/Pyora active send/check_active,800s)1800 秒無數(shù)據(jù)判定實例無響應(yīng)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上報失敗計數(shù)非零AVERAGEQuery Sessions on {$DATABASE} 250last(/Pyora active send/query_sessions)250會話數(shù)超 250AVERAGEQuery Lock on {$DATABASE} 1last(/Pyora active send/query_lock)0 and length(last(/Pyora active send/query_lock_list2))3鎖數(shù)大于 0 且鎖清單文本長度大于 3該觸發(fā)器在 XML 中為全局觸發(fā)器YAML 中位于文件末尾 triggers 區(qū)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 提醒需手動更新觸發(fā)器的由來對比三個版本的導(dǎo)出文件能直觀看到 Zabbix 觸發(fā)器語法的演進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 已改寫為新式函數(shù)語法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 的原因模板從舊版遷移而來跨版本導(dǎo)入后舊式表達式在新版 Zabbix 中可能無法直接解析需要按下表對照改寫。README 的 Triggers 表中表達式仍保留硬編碼閾值 85、 80而 YAML/XML 中的觸發(fā)器原型已改用宏{$ASMHIGH}、{$HIGH}配置時建議統(tǒng)一以宏為準(zhǔn)便于批量調(diào)整閾值。部署步驟導(dǎo)入、配置與驗證1. 選擇版本并導(dǎo)入按目標(biāo) Zabbix 版本選擇導(dǎo)入文件通過 Zabbix 前端Configuration → Templates → ImportZabbix 版本導(dǎo)入文件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. 配置宏在主機或模板上設(shè)置以下宏{$DATABASE}Oracle 實例名如ORCL{$ADDRESS}Oracle 實例地址發(fā)現(xiàn)規(guī)則與 items-list 鍵使用{$ZABBIXURL}/{$ZABBIXUSER}/{$ZABBIXPASSWORD}Zabbix API 三要素供pyora-items-list自檢使用閾值宏{$HIGH}默認 80、{$ASMHIGH}默認 85可按業(yè)務(wù)調(diào)整如啟用歸檔檢查還需{$ARCHIVE}3. 掛載主機并啟用需要的規(guī)則把模板鏈接到 Oracle 主機后按需啟用默認 DISABLED 的發(fā)現(xiàn)規(guī)則show_tablespaces、show_users與指標(biāo)項enqueue、fra_use、freebufwaits、lastapplarclog、check_archive、user_status原型等。4. 驗證數(shù)據(jù)流確認 PyOra 腳本能連接 Oracle 并以只讀賬號取數(shù)確認腳本通過zabbix_sender推送的鍵名與模板 item 鍵一一對應(yīng)觀察Zabbix items list項的值是否包含OK若觸發(fā)Cant create items list則說明 API 宏配置或腳本側(cè)條目生成存在問題檢查failedchecks是否為 0非 0 時觸發(fā)Zabbix sender failed checks count告警提示存在推送失敗的鍵。注意事項與適用前提版本適配本模板名為 3.0實際為適配 Zabbix 3.0 的修復(fù)版?zhèn)}庫以 5.0/5.4/6.0 導(dǎo)出格式提供。導(dǎo)入前請確認目標(biāo) Zabbix 版本5.0 版本使用 XML5.4/6.0 使用 YAML舊式觸發(fā)器表達式跨版本導(dǎo)入后可能需要手動改寫參見上文新舊語法對照。默認禁用項多條發(fā)現(xiàn)規(guī)則、指標(biāo)與原型show_tablespaces、show_users、fra_use、enqueue、freebufwaits、lastapplarclog、check_archive、user_status默認 DISABLED需按監(jiān)控需求啟用query_lock的觸發(fā)器在 XML 中狀態(tài)亦為 DISABLED。宏完整性{$ADDRESS}、{$ARCHIVE}未出現(xiàn)在模板宏表中必須自行補充否則相關(guān)鍵無法解析。采集前提所有 trapper 指標(biāo)依賴 PyOra 腳本主動推送若腳本未運行或數(shù)據(jù)庫賬號權(quán)限不足Zabbix 側(cè)只會呈現(xiàn)無數(shù)據(jù)不會主動報錯需結(jié)合nodata類觸發(fā)器與failedchecks綜合判斷。閾值合理性觸發(fā)器閾值表空間 80%、ASM 85%、FRA 90%、會話 250、無數(shù)據(jù) 800s 等均為模板默認值生產(chǎn)環(huán)境請結(jié)合實例規(guī)格與容量規(guī)劃調(diào)整并優(yōu)先通過宏{$HIGH}、{$ASMHIGH}管理避免直接改動硬編碼表達式。小結(jié)Pyora active send模板完整呈現(xiàn)了一套PyOra 主動推送 Zabbix trapper 接收 LLD 自動發(fā)現(xiàn) 預(yù)處理加工的 Oracle 監(jiān)控范式47 個常規(guī) trapper 指標(biāo)覆蓋實例狀態(tài)、等待事件、事務(wù)日志、鎖與容量維度7 個 LLD 原型實現(xiàn)表空間、臨時表空間、ASM 卷與用戶的自動盤點而pyora-items-list與failedchecks則為整套鏈路提供了自我校驗?zāi)芰Ατ谌栽诰S護 Zabbix 3.0 時代 PyOra 方案、或希望在新版 Zabbix 上復(fù)用該采集架構(gòu)的團隊倉庫中 README 與三份導(dǎo)入文件是可直接落地的參考實現(xiàn)跨版本遷移時請重點核對觸發(fā)器表達式語法與默認禁用項即可快速復(fù)現(xiàn)這套 Oracle 監(jiān)控體系。贊分享【免費下載鏈接】community-templatesZabbix Community Templates repository項目地址https://gitcode.com/gh_mirrors/co/community-templates點擊查看免費下載相關(guān)推薦Zabbix「Windows by Zabbix agent active」模板實戰(zhàn)指南基于主動式 Agent 的 Windows 全棧監(jiān)控Zabbix「Windows by Zabbix agent active」模板實戰(zhàn)指南基于主動式 Agent 的 Windows 全棧監(jiān)控 導(dǎo)讀 本文以 Z指標(biāo)監(jiān)控可觀測性告警運維使用 Zabbix 6.0 模板監(jiān)控 Oracle Linux 上的 Focco ERP115 個監(jiān)控項實戰(zhàn)解析使用 Zabbix 6.0 模板監(jiān)控 Oracle Linux 上的 Focco ERP115 個監(jiān)控項實戰(zhàn)解析 本文基于 Zabbix CommunityZabbix 8.0 官方模板解析使用 Zabbix agent active 監(jiān)控 Podman 容器與宿主機Zabbix 8.0 官方模板解析使用 Zabbix agent active 監(jiān)控 Podman 容器與宿主機 本指南以倉庫內(nèi) Podman by Zabb指標(biāo)監(jiān)控可觀測性告警運維上一篇Operit DeepSeek Responses 思考模式工具延續(xù)修復(fù)commentary 推理文本的捕獲、持久化與重放下一篇antislop雙模式實戰(zhàn)During實時過濾 vs After事后審計如何為你的項目選對模式創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考