使用 Zabbix 監控 PostgreSQL

使用 Zabbix 監控 PostgreSQL
Daria Vilkova 為 Zabbix Meetup Online 所做的報告

我想向您介紹我們公司正在使用Zabbix開發的PostgreSQL和操作系統監控工具。

我們長期以來選擇Zabbix作為我們的監控工具,因為它是一個由活躍社區支持的開源平台,在俄羅斯非常受歡迎。

我們創建了一個主動代理 - Mamonsu,它提供了比當時允許的標準工具更靈活的監控,並確保收集指標並將其發送到 Zabbix Server。 在我們公司,Mamonsu用於審核。

馬蒙蘇

Mamonsu 是一個用於監控 PostgreSQL 和操作系統的主動代理(Zabbix Trapper)。 Mamonsu(用 Python 編寫)允許您在五分鐘內配置 PostgreSQL 和操作系統監控設置。

Mamonsu 還有其他工具:

  • mamonsuune 是一個命令,用於編輯安裝 Mamonsu 代理的計算機的 PostgreSQL 配置文件中的設置。
  • mamonsu report 是一個生成有關操作系統和 PostgreSQL 的答案的命令。

Mamonsu 安裝在 DBMS 服務器上,收集信息,將其組合成 JSON,然後將其發送到 Zabbix Server 進行可視化,其中應該有一個指標模板。

使用 Zabbix 監控 PostgreSQL

馬蒙蘇工作計劃

特點 Mamonsu

  • 使用 PostgreSQL 高效工作。 與 PostgreSQL 的持久連接是 Mamonsu 的主要優點。 在這種情況下,最大連接數等於它連接的最大數據庫數。
  • 可擴展性。 Mamonsu 是一個完全“插件”的代理,由於每個插件的固定結構和 Python 的相對簡單性,人們可以輕鬆學習如何編寫新的或編輯標準插件,即指標收集參數。
  • 監控指標覆蓋面廣 對於 PotgreSQL,包括特定於擴展的指標。
  • 快速啟動, 開箱即用的可用性.
  • 上傳模板和配置文件,以及上傳到Zabbix Server。
  • 跨平台,這對於我們使用各種Linux發行版(包括國內發行版)的客戶來說非常重要。
  • BSD 條款許可證.

目前我們提供了很多插件,並且在每個下一個版本中我們嘗試添加新的東西。

  • 14 個 PostgreSQL 插件,
  • 8 個適用於 Linux 操作系統的插件,
  • 4 個適用於 Windows 操作系統的插件。

Mamonsu 收集了 110 多個 PostgreSQL 和操作系統指標:

  • 70 個 PostgreSQL 指標,
  • 40 個操作系統 Linux 指標,
  • 8 個操作系統 Windows 指標。

關鍵指標包括 DBMS 可用性、連接數、數據庫大小、檢查點、讀/寫速度、鎖、autovacuum 進程數和 WAL 生成速度。 可用指標的完整列表以及所有工具的詳細說明可在 儲存庫 在 GitHub 網站上。

使用 Zabbix 監控 PostgreSQL

GitHub 上可用指標的列表

5 分鐘內運行 Mamonsu

要使用Mamonsu設置對PostgreSQL和操作系統的監控,您可以通過以下5個簡單步驟在5分鐘內完成。

  1. 安裝Mamonsu。 Mamonsu 可以從源代碼構建或使用可用的軟件包。

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. 連接設置。 需要在agent.conf文件中設置PostgreSQL和Zabbix Server的連接參數。

/etc/mamonsu/agent.conf

  1. 將模板導出到 Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. 添加主機到 Zabbix Server。 導出的模板將自動連接到 Zabbix Server 上的新主機。

$ mamonsu zabbix host create mamonsu-demo

  1. Запуск.

$ service mamonsu start

Mamonsu發展方向

作為 Mamonsu 開發的一部分,我們計劃完善指標並創建新的插件,例如用於監控單個表大小的插件。 我們還計劃改進和創建額外的工具,並通過命令擴展自動調整功能 馬蒙蘇調.

PostgreSQL 監控模塊作為 Zabbix Agent 2 的一部分

使用快速且流行的驅動程序連接到 PostgreSQL PGX (Go 的 PG 驅動程序和工具包)。

到目前為止,我們使用了兩個接口:Exporter(通過密鑰調用處理程序)和 Configurator Zabbix Agent 2(讀取並檢查配置文件中指定的服務器的連接參數)。

我們嘗試通過對指標進行分組並使用指標和指標組的處理程序(handler),以及使用 JSON 中的指標組作為因變量(依賴項)以及低級發現(發現規則)來優化 DBMS 的工作)。

主要特點

  • 在檢查之間保持與 PostgreSQL 的持久連接;
  • 支持靈活的輪詢間隔;
  • 兼容 PostgreSQL 10 版本和 Zabbix Server 4.4 版本;
  • 由於 Zabbix Agent 2 允許您創建多個會話,因此能夠同時連接和監控多個 PostgreSQL 實例。

PostgreSQL 連接參數級別

PostgreSQL 連接參數總共分為三個級別,即任務和設置:

  • 全球的,
  • 會議,
  • 宏。

  1. 全局參數在代理級別設置,會話和宏參數定義數據庫連接參數。

  2. PostgreSQL 的連接參數 - 會話在文件中設置 zabbix_agent2.conf.

使用 Zabbix 監控 PostgreSQL

PostgreSQL 連接選項 - 會話

  • 關鍵字之後 會議 指定了唯一的會話名稱,該名稱必須在密鑰(模板)中指定。
  • 參數 的URI и 用戶名 每個會話都需要。
  • 如果未指定基本名稱,則使用所有 PostgreSQL 會話的默認公共基本名稱,該名稱也在配置文件中設置。

  1. PostgreSQL 的連接參數 - 宏在模板中的度量鍵中設置(類似於 Zabbix Agent 1 中使用的方法),即它們在模板中創建,然後指定為鍵中的參數。 在這種情況下,宏的順序是固定的,即,例如, 的URI 總是列在第一位。

使用 Zabbix 監控 PostgreSQL

PostgreSQL 連接參數 - 宏

PostgreSQL 監控模塊已經包含超過 95 個指標,使您可以覆蓋相當廣泛的 PostgreSQL 參數,包括:

  • 連接數
  • 數據庫大小,
  • 歸檔 wal 文件,
  • 檢查站,
  • “臃腫”的表的數量,
  • 複製狀態,
  • 副本延遲。

如果沒有操作系統參數,PostgreSQL 指標就無法提供信息。 但 Zabbix Agent 2 已經知道如何收集操作系統參數,因此為了獲得完整的情況,我們只需將必要的模板連接到主機即可。

處理程序

處理程序是模塊的主要單元,在其中執行請求本身並允許您接收指標。

要獲得一個簡單的指標:

  1. 創建一個文件以獲取新指標:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. 我們連接包並指定指標的唯一鍵(keys):

使用 Zabbix 監控 PostgreSQL

  1. 我們使用請求創建一個處理程序(handler),即我們啟動一個包含結果的變量:

使用 Zabbix 監控 PostgreSQL

  1. 我們執行請求:

使用 Zabbix 監控 PostgreSQL

有必要檢查請求是否有錯誤,然後 Zabbix Agent 2 進程將獲取結果。

  1. 註冊新的度量密鑰:

使用 Zabbix 監控 PostgreSQL

註冊指標後,您可以使用新指標重建代理。

該模塊從 Zabbix 5.0 開始在網站上可用 https://www.zabbix.com/download。 在這個版本的Zabbix中,參數是通過主機和端口分別設置的。 在即將發布的 Zabbix 5.0.2 中,連接參數將被打包到單個 URI 中。

謝謝你的關注!

有用的鏈接

GitHub Mamonsu

Mamonsu文檔

Zabbix Git

來源: www.habr.com

添加評論