PostgreSQLを監視するZabbixテンプレート pg_monz とは
2013年11月5日にTIS株式会社(以下TIS)とSRA OSS, Inc. 日本支社(以下SRA OSS)はPostgreSQLを監視するためのZabbixテンプレート「pg_monz(ぴーじーもんず)」をオープンソースソフトウェア(以下OSS)として公開しました。
この連載では、現在普及が進むPostgreSQLとZabbixの現状や課題を紹介しながら、監視テンプレートであるpg_monzに焦点を当て、導入するメリットや特長、また実際の導入手順などについて詳しく解説していきます。
第1回となる今回は、pg_monz開発の背景とpg_monzが提供する機能について紹介します。
PostgreSQLを取り巻く現状と課題
現在、さまざまな領域でOSSの活用が進んでおり、データベース管理システム(DBMS)においても利用ノウハウや導入事例が知られるようになるにつれ、OSSを導入するケースが増加しています。
OSSのデータベース管理システム(DBMS)で人気を二分しているのがPostgreSQLとMySQLです。以前は「OSSのDBMSといえばMySQL」という印象がありましたが、ここ数年で企業システムや商用サービスにPostgreSQLが導入されるケースが増えています。これはPostgreSQLの商用サポートが複数のベンダーから提供されるようになったことや、日本PostgreSQLユーザ会(http://www.postgresql.jp/)といったコミュニティ、PostgreSQLエンタープライズコンソーシアム(https://www.pgecons.org/)といった企業団体の活動を通じて「DBMSの機能や性能が商用製品にも引けをとらない」という理解が広まっていることも背景にあると思います。
また、2013年11月にはAmazon Web ServiceのRelational Database Service(RDS)でもPostgreSQLの利用が可能となりました。PostgreSQLはライセンス等の制約がないことからクラウドサービスでも利用しやすく、今後ますます適用範囲が広がっていくものと期待されます。
一方、運用面ではまだPostgreSQLに物足りない点があるように感じます。例えば、DBMS自体が備える運用機能やサードパーティ製の運用ツールの充実度といった部分は商用のDBMSに後れをとっていますし、どのように運用すればよいかというノウハウもまだまだ整備されていないのが現状です。
Zabbixを取り巻く現状と課題
データベースだけでなく、OSSの統合監視ツールとして知られるZabbixも利用範囲が拡大しており、日本国内でも導入事例を聞くことが多くなってきました。これはZabbixが監視ツールに必要な機能をほぼ実現しており、一般的なシステム監視のニーズに応えられるツールと理解されつつあることが背景にあると考えられます。PostgreSQLと同様、今後も普及が進んでいくものと期待されます。
しかし、Zabbixを使って一定レベル以上のシステム監視を実現しようとした場合、監視項目を設定するコストがかかります。具体的には、Zabbixで監視項目を設定するには、監視で使うアイテムのキーや障害通知に使うトリガ条件式の書き方、関数の使い方といったZabbixに関する知識を身につける必要があり、一定の学習コストが必要になります。また他にも、DBMSやアプリケーションサーバーといった、Zabbixが標準でアイテムを用意していないレイヤを監視する場合は、自分で監視アイテムを取得するスクリプトを作りこまなければならず、この部分にもコストとノウハウが必要となります。
なお、Zabbixにはテンプレートという仕組みが用意されており、よく使われる監視のパターンをテンプレート化すれば監視項目を設定するコストを削減できます。ただし、Zabbix導入後の標準状態で用意されているテンプレートのバリエーションはまだまだ少ないのが現状で、残念ながらPostgreSQLを監視するためのテンプレートは標準で用意されていません。
pg_monz を開発したきっかけ
TISとSRA OSSはともに自社のビジネスに活用しているPostgreSQL、Zabbixの利用を広めたいという意識がありました。また、それぞれのコミュニティで顔を合わせる機会も多く、「PostgreSQL用のZabbix監視テンプレートがあるといいよね」と意気投合したのがpg_monzを開発するきっかけでした。
pg_monzとは
pg_monzはZabbixでPostgreSQLを監視するためのテンプレートで以下のサイトからダウンロードが可能です。
> ダウンロードサイト: https://github.com/pg-monz/pg_monz/releases
> ドキュメントサイト: http://pg-monz.github.io/pg_monz/
pg_monzにはPostgreSQLを運用する際に必要な監視設定があらかじめ設定されていますので、Zabbixにおける監視設定の手間を大幅に削減できます。また、pg_monzに設定された監視項目はPostgreSQLの利用経験が豊富なTIS、SRA OSSのエンジニアが設計しており、PostgreSQLにさほど詳しくない運用者でも高度な監視運用を実現できます。
pg_monz の特徴
導入が容易
監視対象のサーバーに対して3つのファイル(userparameter_pgsql.conf, find_dbname.sh, find_dbname_table.sh)をコピーし、Zabbixサーバーに対してはテンプレートファイル(pg_monz_template.xml)のインポートと、監視対象サーバーを指定するだけでPostgreSQLの監視がスタートします。また、pg_monzはZabbixの標準機能を利用しているため、特別なモジュールの導入や複雑な設定変更といった作業が不要です。pg_monzの導入手順は次回詳しく解説します。
データベースの増減に監視項目が自動で追随
pg_monz にはデータベース容量やキャッシュヒット率などデータベース単位で情報取得する監視項目があります。PostgreSQLのデータベースは1つのサーバーに複数作成できますが、データベースを追加した場合は通常そのデータベースに対する監視項目を新たに設定する必要があります。pg_monz は Zabbix 2.0以降で搭載されるようになったローレベルディスカバリ(LLD)機能を応用してデータベースの最新状態から監視項目を自動生成する仕組みを用意していますので、データベースの増減に伴う設定作業を削減することができます。