「最近(個人的に)可視化ブームが訪れている」という話を前回のエントリで書きました。
パフォーマンスに関連するデータを可視化してくれるツールにはさまざまな種類があり、いろいろと目移りしてしまうのですが、今回はオープンソースの運用管理ツール「Hinemos」でPostgreSQLのパフォーマンス情報の可視化を行う方法を紹介します。
■HinemosとPostgreSQL性能監視
Hinemosはオープンソースの統合運用管理ソフトウェアです。システム監視機能やジョブ管理機能の機能等を備えており、システムの運用管理をサポートしてくれるソフトウェアになります。
Hinemos:コンピュータ、システム、ネットワークの運用管理を実現するオープンソースソフトウェア(OSS)
http://www.hinemos.info/
先日、この「Hinemosへのアドオン」という形で、PostgreSQLの性能情報を取得・蓄積・可視化・監視することができるツールを作成しました。
Hinemos PostgreSQL性能監視オプション
http://www.uptime.jp/ja/products-services/hinemos-postgres-addon/
このツールは、簡単に言うと「少し大きめのスクリプト」なのですが、オープンソースで公開されており、このスクリプトとHinemosを組み合わせることによって、比較的簡単にPostgreSQLの性能情報を可視化することができます。
動作の前提条件としては、
- Hinemosのバージョンが4.0以降であること
- PostgreSQLサーバでHinemosエージェントが動作していること
- PostgreSQLサーバがUnix系サーバであり、Perlが動作すること
■インストール
Hinemosそのもの(マネージャやエージェント、クライアント)のインストールから説明すると非常に長くなってしまいますので、ここではHinemos自体のインストール方法は割愛します。Hinemosそのもののインストールについては、公式のマニュアル等を参照してください。
Hinemos:コンピュータ、システム、ネットワークの運用管理を実現するオープンソースソフトウェア(OSS)
http://www.hinemos.info/
本エントリでは、Hinemosマネージャ、Hinemosエージェント、Hinemosクライアントのインストールが完了し、動作してることを前提として解説を進めます。
PostgreSQL監視オプションのソースコードはGitHubで配布されていますので、まずはそちらからダウンロードします。
uptimejp/hinemos-postgres-addon
https://github.com/uptimejp/hinemos-postgres-addon
今回は11月14日のリリース版である hinemos-postgres-addon-r20121114.zip を使います。
[snaga@devsv02 hinemos]$ wget --no-check-certificate https://github.com/downloads/uptimejp/hinemos-postgres-addon/hinemos-postgres-addon-r20121114.zip --2012-12-04 01:44:39-- https://github.com/downloads/uptimejp/hinemos-postgres-addon/hinemos-postgres-addon-r20121114.zip (...snip...) Length: 13016 (13K) [application/zip] Saving to: `hinemos-postgres-addon-r20121114.zip' 100%[======================================>] 13,016 30.1K/s in 0.4s 2012-12-04 01:44:49 (30.1 KB/s) - `hinemos-postgres-addon-r20121114.zip' saved [13016/13016] [snaga@devsv02 hinemos]$ZIPファイルをダウンロードしたら、ZIPを解凍し、make installを実行して mon_pgsql スクリプトをインストールします。スクリプトは /opt/hinemos_agent/bin にインストールされます。
[snaga@devsv02 hinemos]$ unzip hinemos-postgres-addon-r20121114.zip Archive: hinemos-postgres-addon-r20121114.zip creating: hinemos-postgres-addon-r20121114/ inflating: hinemos-postgres-addon-r20121114/test_mon_pgsql.sh inflating: hinemos-postgres-addon-r20121114/LICENSE inflating: hinemos-postgres-addon-r20121114/Makefile inflating: hinemos-postgres-addon-r20121114/mon_pgsql [snaga@devsv02 hinemos]$ cd hinemos-postgres-addon-r20121114 [snaga@devsv02 hinemos-postgres-addon-r20121114]$ ls -l total 48 -rw-rw-r-- 1 snaga snaga 18092 Nov 14 13:12 LICENSE -rw-rw-r-- 1 snaga snaga 682 Nov 14 13:12 Makefile -rwxrwxr-x 1 snaga snaga 19695 Nov 14 13:12 mon_pgsql* -rwxrwxr-x 1 snaga snaga 441 Nov 14 13:12 test_mon_pgsql.sh* [snaga@devsv02 hinemos-postgres-addon-r20121114]$ su Password: [root@devsv02 hinemos-postgres-addon-r20121114]# make install install -m 755 mon_pgsql /opt/hinemos_agent/bin [root@devsv02 hinemos-postgres-addon-r20121114]#インストールが完了したら、mon_pgsqlスクリプトを実行してみます。
mon_pgsqlスクリプトはHinemosエージェントから呼び出される外部コマンドになっています。そのため、コマンドラインで実行して動作確認することが可能です。
[postgres@devsv02 ~]$ /opt/hinemos_agent/bin/mon_pgsql Usage: /opt/hinemos_agent/bin/mon_pgsql [<option>...] <search_key> Options: -h <host> Host name to connect the database. -p <port> Port number to connect the database. -U <user> User name used to connect the database. -d <dbname> Database name to be connected. -v Verbose output. Search keys: session cache_hit tuple_wrtn tuple_read blks_read blks_wrtn txn xlog_wrtn dbsize locks [postgres@devsv02 ~]$上記のように、mon_pgsqlスクリプトはPostgreSQLデータベースへの接続用のオプションを受付、かつ「どのようなデータを取得するか」というキー(search key)をコマンドラインオプションとして受け付けます。
受け付けるキーは以下の通りです。
- session:セッション数
- cache_hit:キャッシュヒット率
- tuple_wrtn:タプル更新(INSERT/UPDATE/DELETE)
- tuple_read:タプル読み込み(RETURN/FETCH)
- blks_read:ブロック読み込み
- blks_wrtn:ブロック書き込み
- txn:トランザクション数
- xlog_wrtn:WAL書き込み量
- dbsize:オブジェクトサイズ
- locks:ロック
[postgres@devsv02 ~]$ /opt/hinemos_agent/bin/mon_pgsql -h localhost -p 5432 -U postgres -d postgres session active,1 idle,1 wait,0 [postgres@devsv02 ~]$ここまで動作確認できたら、いよいよHinemosへの登録と、Hinemos上でのデータの可視化に進みます。
■Hinemosでのリポジトリへのノード登録
まず、「リポジトリ[ノード]」のビューを開き、「リポジトリ[ノードの作成・変更]」ダイアログからサーバそのものをリポジトリに登録します。この手順は、PostgreSQLサーバに限らず、Hinemosで監視するサーバに共通のステップです。
■Hinemosでのカスタム監視の登録
次に、「性能[一覧]」ビューを開き、監視の追加を行います。
「監視種別」としては「カスタム監視(数値)」を選択します。
そして、「カスタム監視[作成・変更]」のダイアログでPostgreSQL監視用の設定を行います。基本的な設定項目と設定内容は以下の通りです。
- 監視項目ID:監視の設定を識別する任意のIDを指定します。
- スコープ:監視対象(スコープ)を指定します。
- 間隔:監視の間隔を指定します。
- 実効ユーザ:mon_pgsqlスクリプトを実行するOSユーザを指定します。
- コマンド:mon_psgqlスクリプトを実行するコマンドラインを指定します。
- 監視/判定(情報、警告、危険):監視で設定する閾値を入力します。
- 監視/アプリケーション:アプリケーション名を記入します。
- 収集/収集値表示名:収集・蓄積するデータの名称を記入します。
- 収集/収集値単位:収集・蓄積するデータの単位を記入します。
監視の設定を行うと、「監視設定[一覧]」のビューに設定した監視項目の一覧が表示されます。
■Hinemosでの性能情報の表示
監視設定を行うと、「性能[一覧]」のビューに性能情報を収集する項目の一覧が表示されます。
ここで右上のアイコンから「グラフの追加」を選択すると、「性能」のビューが作成され、グラフの表示が出てきますので、「表示種別」で「デバイス別表示」を選択すれば、グラフの表示は完了です。
mon_pgsqlコマンドで複数種別の項目が出力される場合(セッションであればactive/idle/waitなど)には「デバイス別表示」を選択する必要があります。
「グラフ種別」については、「折れ線グラフ」か「積み上げ面グラフ」かは自由に選べます。
■まとめ
今回は、PostgreSQLの性能情報の収集・可視化・監視ということで、HinemosによるPostgreSQLのモニタリングをご紹介しました。
データベースは、その性質上、性能や可用性についてシビアに見られることが多いと思います。既存のソリューションとうまく組み合わせながら、うまく運用管理をしていただければと思います。
では、また。
0 件のコメント:
コメントを投稿