pg_monzで特定のデータベース、テーブルを監視対象にする方法
ZabbixでPostgreSQLの監視を行うときはpg_monzを使うと便利です。
PostgreSQL monitoring template for Zabbix (pg_monz)
pg_monzにはデータベース情報と、テーブル情報をアイテムに追加してくれるLLDがあるのですが、1テーブルあたりのアイテム数が多いので、全データベース、全テーブルを対象にするとアイテム数がすごい増えてしまいます。
LLDなのでフィルターを使うことでデータベースとテーブル名を制限することができます。
今回は、zabbix
データベースのitems
テーブルとhistory
がつくテーブルをアイテムに追加するように設定してみます。
pg_monzのテンプレートを割り当てているホストのDiscovery
を選択する
ディスカバリーの一覧が表示されますので、その中からDB and Table Name List
を選択します。
ディスカバリーのフィルターを追加する
ディスカバリーを選択すると、ディスカバリーの設定画面が表示されますので上部タブのFilters
を選択します。
今回は、zabbix
データベースのitems
テーブルとhistory
がつくテーブルをアイテムに追加します。
データベース名はマクロに{#DBNAME}
を指定します。
テーブル名はマクロに{#TABLENAME}
を指定します。
比較は正規表現が使えるのでhistory
がつくテーブルは^history.*
を指定します。
この条件式をadd
ボタンを押して追加してきます。
実際設定した画面は以下のようになります。
And と Orが混ざる場合はType of caluculation
をCustom expression
にして指定します。
アイテムに追加される
DB and Table Name List
ルールの実行間隔は60分になっているので60分待つか一時的に実行間隔を短くして実行されるとアイテムが追加されます。
items
テーブルとhistory_uint
テーブルとhistory_text
テーブルのアイテムが追加されています。
実際の監視対象にする
デフォルトの動きだと、アイテムは追加されますが監視は行われません。
自動で監視対象にしてしまうとテーブルが多い場合データベースに負荷がかかることが考えられるので安全な設定だと思います。
必要に応じて監視対象にします。
アイテムのアプリケーションをpg.get
にして対象のテーブルのpgsql.get.pg.stat_table
のstatus
をEnabled
に設定します。
設定してある監視間隔になると値が取得できます。
まとめ
LLDとフィルターを使って監視対象のアイテムを絞ることにより柔軟な監視ができます。
pg_monzのLLDにはDB Name List
というDiscoveryもありますので、こちらも同じようにフィルターを設定することで柔軟な監視ができます。
Zabbixとpg_monzを使ってPostgreSQLの監視が行えました。