mysql:12031
From: zen kishimoto <zen kishimoto <zen@xxxxxxxxxx>>
Date: Mon, 29 Aug 2005 20:55:17 -0700
Subject: [mysql 12031] MySQL用のJasperReports DBA Dashboard アプリケーション
http://dev.mysql.com/tech-resources/articles/dba-dashboard.html (図は上記を参照) 初めに MySQL は殆ど、どんなものの状態情報にアクセスすることが できます。しかし、長時間にこの情報を 閲覧するのは 困難です。これはリクエストが発せられたときの その時点での情報しか提供しないからです。更に、複数のMySQL のサーバーをモニターするにはそれぞれに関して 異なったリクエストを発する必要があります。 MySQL用のJasperReports DBA Dashboard アプリケーションはこの問題を 解決します。与えられた環境の全てのMySQLのサーバーに関する 統計データの収集を自動的に行ったり、モニターします。 MySQL用のJasperReports DBA Dashboard アプリケーションは オープンソースで、ここからダウンロードできます。 SourceForge at http://jasperreports.sourceforge.net/. 図 (http://dev.mysql.com/tech-resources/articles/dba-dashboard.html を参照) 何をするか。 MySQL用のJasperReports DBA Dashboard アプリケーションは長時間に 渡るMySQLの状態情報を入手するのに使用できます。このモニター する時間は開発者が設定できます。サーバーの状態、スキーマ、データベース のサイズと使用統計情報は定期的に集められて、データベースの 内部の情報を知るのに役立ちます。 JasperReportsを使用すれば 一日に何件くらいのクエリとかどのユーザが一番多く リソースを使用したか。どのテーブルが一番早く大きくなって いるかなどの質問に答えることができます。 図 (http://dev.mysql.com/tech-resources/articles/dba-dashboard.html を参照) 与えられた環境内での全てのMySQLサーバーの情報を得ることで、 全てを長時間に渡って監視することができます。これには サーバーに大きな負荷を掛けることなしで出来ます。実際 DBA Dashboard Polling Agentは簡単に500以上のサーバーと 何千というデータベースをモニターできます。 サポートされているMySQLの版 MySQL 3.x, 4.x, and 5.x の版がサポートされています。 MySQL用のJasperReports DBA Dashboard アプリケーションは 自動的にMySQLのサーバーの版を検知してデータ収集のエージェント をカスタマイズします。JasperReports DBA Dashboard アプリケーションを 1つインストールすると同時に複数個の版のサーバーを同時に モニターできます。 技術詳細 JasperReports DBA Dashboard アプリケーションによって収集された データの全てはリアルタイムでMySQLと一緒についてくる MySQL Administratorで見ることができます。 以下に MySQL Administratorのコマンドのリストを 上げます。 サーバー毎にJasperReports DBA Dashboard アプリケーションは デフォルトで4つのタイプの状態情報を提供します。 1. SHOW STATUS - 毎秒実行することをお勧めします。status data に情報を格納し、バイト毎の入出を監視、クエリを選択、クエリ の挿入、接続(最後にデータを集めてからすべて)と 全部のアップタイム(秒)を集めます。テーブルとデータベースの 使用統計の情報に最適。 2. SHOW PROCESSLIST - 1分毎に実行することをお勧めします。 process_listにデータを格納、ユーザが接続しているサーバーと データベースのその時点でのデータを入手。データベース内 の一番アクティブ及びアクティブでないユーザーを識別するのに 有効。 3. SHOW TABLE STATUS - 1日に一度実行することをお勧めします。 table_statusにデータを格納, ストレッジの情報を提示、例えば テーブル生成時間、行数、平均行の長さ、インデクスの長さ、 アップデートの時間とデータベースとテーブルのチェック時間。 一番テーブルの伸びが大きいところのモニターに最適。 4. USE INFORMATION_SCHEMA - 1日に一度実行することをお勧めします。 データベースから統計データ入手データベースへデータを格納します。 また列、列の特権、キーな列の使用、ルーチン、スキーマの特権、 テーブルの制約、テーブルの特権、ユーザの特権、データベースの ビューなどのスキーマ情報を入手します。あるユーザが何に アクセスするのか。テーブルabcにアクセスしたのは誰か。 このテーブルのこの列はデータベースのどこで使われているか などの質問に答えることができます。(答え: view x, stored procedure y, trigger z). MySQL 5.0 かそれ以降の版のみに有効。 ダウンロードの仕方 MySQL用のJasperReports DBA Dashboard アプリケーション はオープンソースで SourceForge から無料でダウンロード できます。別のサーバーでもMySQLサーバーにでも インストールできます。JasperReports DBA Dashboard アプリケーション はJavaの1.4アプリです。そのため、JVMを必要とします。インストレーション の方法はディストリビューションの README.txt を参照してください、 コンフィギュレーション MySQL用のJasperReports DBA Dashboard アプリケーションは簡単 なXMLベースのファイルでコンフュギュアできます。 <config> <destination> <name>somedbname</name> <login>somelogin</login> <pass>somepass</pass> <url>jdbc:mysql://somehost/somedbname</url> </destination> <source> <name>somedbname</name> <login>somelogin</login> <pass>somepass</pass> <url>jdbc:mysql://somehost/somedbname</url> <status period="somenumber"/> <tableStatus period="somenumber"/> <processList period="somenumber"/> <informationSchema period="somenumber"/> </source> </config> インストレーション毎に、DBA Dashboard Polling Agentの ためのデーターストアーを定義するデスティネーションが 1つ指定されます。一番最初にDBA Dashboard Application をセットアップする際は、Polling Agentを実行する前に データベースを作成する必要があります。 (‘name’要素で定義) 次にPolling Agent は必要な テーブルを作成します。ログインとパスワード(login’とpass’ 要素で定義) はデータストアーを作成したユーザと マッチしなければなりません。 MySQLのサーバーに関してモニターする1つのsource要素を指定します。 'name’要素はモニターされるデータベースかサーバーの別名です。 ログインとパスワード(‘login'と‘pass’要素で定義) は観察したいデータベースのユーザの特権と一致しなければなりません。 全てのデータベースをモニターできるユーザが定義されていない場合は、 サーバーにアクセスできるそれぞれのユーザ に関して‘source’ 要素を定義してください。'url’要素はモニターするため に接続するサーバーとデータベースの名前を定義します。 接続する前にデータベースが存在する必要があります。 Polling Agent は特権がある特定のサーバー上のデータベースを自動的にモニターします。 (1つのデータベースしかurlに指定されていなくても) ‘status'‘tableStatus’'processList’と'informationSchema’と いう要素は Polling Agentがそれぞれのプロセスの ために実行される頻度(ミリ秒で定義)を指定します。状態 情報は以下のように実行することをお勧めします。 状態情報は (毎秒), tableStatus は(一日一回), processList は 60000ミリ秒 (毎分)でinformationSchema は86400000ミリ秒 (一日一回). 詳細はconfigure.xml.sample ファイルを読んでください。 Web アプリのユーザインターフェース Dashboard Webのインターフェースは収集された全てのデータを 以下のレポートに示します。 1. サーバーの状態はトラフィックのトータルを示し、 選択し、コマンドを挿入し、与えられて期間の全ての オープンな接続を示します。もっと直感的に示すために、 チャートでも示します。 2. プロセスのリストはユーザまたは、データベースか、また ホストによってオープンされたプロセスのレポートを示します。 3. テーブル状態はテーブルに関するメトリックスと動的な情報 (テーブルのサイズやテーブルの伸び)などのレポートを 示します。また関連するテーブルサイズも提供します。 4. Information スキーマは MySQL 5.0 かそれ以降のみに有効です。 INFORMATION_SCHEMAデータベースをクエリすることで 得られるサーバー関連の情報です。ウエブのアプリケーションは以下の レポートを含みます。 * テーブル情報はテーブル構造の情報を得るのに使用。 * 制約はデータベースの全てのテーブルの制約をリスト * ユーザ特権はユーザの特権をリスト * ルーチンはstored procedureとfunction をリストします。 * Viewは全てのviewをリストします。 * 列の特権はデータベースの全ての列特権をリストします。 これは列レベルで特別にOKされた特権のみをリストします。 (これはテーブルレベルで追加の特権があっても、表示されません。) 図 (http://dev.mysql.com/tech-resources/articles/dba-dashboard.html を参照) 全てのレポートはPDFに変換可能で、オフラインで閲覧したり、 印刷できます。また全てのレポートはウエブインターフェースを利用して ページ毎に見ることもできます。これは1つの大きなHTML ファイルとして見なくて良いので好都合です。レポート生成がリクエスト されますと、完成されたレポートはメモリー内に格納されページ毎に 表示されます。これはレポート作成の時間が掛かる プロセスは一度だけにして、必要なページをそこから 取り出すようにしてあります。 実際にレポートを作成する前に、行数を数えてレポートが 大きくなりすぎそうであれば、ユーザに警告します。それぞれの レポートのテンプレートは他のクエリを含みます。それは実際のレポートの クエリが返還するレコードの数を数えます。行数が大きすぎると ユーザはレポート作成の時間が掛かりすぎると警告を受けるかも知れません。 アプリはJakarta Strutsを使用して作成されます。実際全ての レポートにはそれぞれのStruts アクションが入っています。そこに 全てのビジネスのロジックがあります。しかし、異なってはいますが 全てのアクションには以下の様な似通ったフローがあります。 ユーザの要件を取り出す、ユーザのインプットをチェックする、 行数チェックのクエリを実行する、レポートを作成する、メモリーに 格納する、最初のページを表示するなどです。全ての アクションはページ毎でナビゲートできます。 -- Zen Kishimoto www.ipdevices.com IP Devices, Inc. zen@xxxxxxxxxx 2175 De La Cruz Blvd., Suite 10 (408) 567-9391 Santa Clara, CA 95050 (801) 720-8847 (FAX)