データベース クエリ監視
概要
データベース クエリ監視は、各種データベースへの単一クエリや複数クエリ セットを見守ります。このSQLベースのクエリ監視により、特定クエリごとにステータス監視が可能です。
新規データベース クエリ監視を作成するには
REST APIを使用して、新しいデータベース クエリ監視を追加する場合はこちらをご参照ください。
新規データベース クエリ監視を作成するには、次の手順に従ってください。
- 新規監視をクリックします。データベース クエリ監視を選びます。
- 監視の表示名を入力してください。
- クエリ実行の対象となるデータベースを選択します。現在のサポート対象は、Db2、Informix、Ingres、MS SQL、MySQL、Oracle、Oracle RAC、PostgreSQL、Sybase、Db2 for i、SAP HANAオンプレミス、SAP MaxDBです。Db2 for iは、試用期間中かAS/400(iSeries)オプションを購入した場合のみ、表示されます。
- データベースを実行しているリソースのホスト タイプを、新規か既存か指定してください、既存ホストはドロップダウンで選択できます。
- ホストのホスト名またはIPアドレスを入力します。
- データベースが稼働しているポート番号を入力します。
- Kerberos認証でMS SQLデータベースを監視する場合は、Enable Kerberos Authenticationチェックボックスにチェックを入れます。
- データベース サーバーのユーザー名とパスワードを入力してください。
- データベース名を入力してください。
- Named Instanceを使用して接続する場合は、Connect using Named Instanceチェックボックスにチェックを入れて、MS SQLデータベースのインスタンス名を指定します。
- MySQL、MS SQL、Oracle、PostgreSQLデータベースでSSL認証有効の場合は、SSLを有効にするチェックボックスにチェックを入れます。
- SQL Server接続用ドライバの欄でjTDS JDBC DriverまたはMicrosoft JDBC Driverオプションを選択し、データ収集のためにMS SQLデータベースへの接続に必要なドライバを選択します。
- クエリを入力してください。クエリ数は最大5に制限されています。それぞれのクエリは改行で区切って下さい。
- クエリ出力を希望するか、はいかいいえをラジオ ボタンで選択します。
- テーブル行がポーリングで取得できなかった場合、Manage Table Rowオプションを有効にすることで、適切なテーブル行のアクション(保持、削除、管理解除)を設定することができます。
- ポーリング間隔を入力してください。デフォルトでは、5分です。
- Enterprise EditionのAdminサーバーから新規監視を追加するには、Managedサーバーを選択します。
- データベース クエリ監視を関連付ける監視グループを、コンボボックスから選択してください。
注意:Enterprise EditionのAdminサーバーにおいて、データベースクエリ監視でサポートするデータベースタイプはMySQL、Oracle、DB2、MS SQL、Sybase、PostgreSQL、SAP HANA および SAP MaxDB のみです。
データベース クエリ監視でアラート テンプレート設定を有効にする
アラートの設定のリンクを有効にすると、アラート設定を容易に実行できるよう、リンクが表示されます。データベース クエリ監視ページの各テーブルで、右上コーナーにリンクが現れますのでご利用ください。こちらのリンクから、テーブルに存在するあらゆる属性に、しきい値の事前設定ができます。
アラート テンプレート設定をデータベース クエリ監視で有効にするには、次の手順で作業します。
- 設定タブへ移動します。
- ディスカバリとデータ収集からパフォーマンス ポーリングをクリックしてください。
- パフォーマンス データ収集の下で、データ収集の最適化タブをクリックします。
- ドロップダウンからスクリプト/データベース クエリ監視を選択してください。
- スクリプト監視とデータベース クエリ監視で、アラート テンプレート設定を有効にするを選択ください。
- これによって、アラートの設定のリンクが各テーブル右上に表示されます。
監視対象のパラメーター
データベース クエリ監視は、各種データベースへの単一クエリや複数クエリ セットを見守ります。
- 可用性タブでは、過去24時間か30日の可用性履歴がわかります。
- パフォーマンス タブでは、過去24時間か30日のステータスとイベントがわかります。
- リスト ビューでは、一括管理設定が可能です。
Applications Managerのデータベース クエリ監視を利用すれば、クエリを1つずつでも、複数クエリのセットを1つずつでも確認が可能で、データベースのステータスチェックができます。クエリ実行は、お客さまデータベースが24時間365日稼働しているかを調べるベストの方法です。オンラインストアのようなビジネスでは、e-Commerceのために多数のアプリケーションやデータベースを利用しています。このような環境では、あらゆる障害が、売り上げ損失につながりかねません。
クエリはポーリング間隔を指定して自動実行できます。ポーリング間隔の決定により、クエリ手順は自動化され、結果はポーリング終了時に明らかになります。結果から、実行時間(クエリが結果の提供に要する時間)がわかるとともに、定期ポーリング中に発生したエラーも表示されます。エラーはデータベースで発生した可能性がある問題の特定に有用です。
下記にサンプルを示し検討するものとします。多くの企業では、24時間365日稼働が必要な重要アプリケーションを利用しています。アプリケーションのステータスを「APPLICATION_STATUS」テーブルで管理している場合、データベース クエリ監視があれば、SELECT文をセットでデータベースに送信し稼働状況を確認可能です。
|-----------------------------------------------------------|
| APPLICATIONS_STATUS |
|-----------------------------------------------------------|
| APPLICATIONS_NAME | Status |
|-----------------------------------------------------------|
| PURCHASE | OK |
| CRM | CRITICAL |
| PAYROLL | OK |
| LEADS | OK |
|-----------------------------------------------------------|
SELECT * APPLICATIONS_STATUS
上記コマンドを実行すると、実行中のアプリケーションとそのステータスをリストアップできます。ステータスが「重大(CRITICAL)」のアプリケーションがあれば特定でき、Applications Managerに設定したアラートで必要なアクションを起こすことが可能です。問題解決のアクションには、チケットの作成やスクリプトの実行が選択できます。
データベース クエリ監視は複数データベースがつながるネットワークでのボトルネック特定にも利用でき、問題のあるDBをピンポイントしてトラブルシュートが可能になります。このようなボトルネックは、アプリケーションやデータベースに問題のあるものが混ざっていると発生の可能性があります。データベース クエリ監視を利用すれば、所定のクエリをセットで実行して結果の分析が可能となり、事象を引き起こしたエラーの明確な情報を把握できます。結果では、実行時間も把握可能です(クエリから結果の生成にかかる時間)。クエリの実行時間が設定したしきい値を超えればデータベースの問題とわかり、しきい値未満であれば問題は別の場所にあると切り分け可能です。
データベース クエリ監視では現在、以下のデータベースをサポートしています。
|
Enterprise Editionでは、データベース監視はAdminサーバーに追加できますが、データベース クエリ監視はManagedサーバーにしか追加できません。NoSQLのクエリは、現在、監視できません。
Applications Managerには、出力にあるカラム値を属性タイプごとに比較する機能もあります。レポートは有効・無効の切り替えが可能です。
メモ:クエリ数は最多で5に制限してあります。出力行数は50までです。
以下、データベース クエリ監視でOracle Databaseに使うJDBC URLを示します。 |
よくある質問とトラブルシュート
1:SQLクエリはどのように記載すればよいでしょうか?
クエリは行ごとに1つ記載し、最多で2,000文字にしてください。クエリの数は監視ごとに5つに制限されています。クエリは改行で区切って下さい。出力行数は50までに制限がかかっています。
結果にカラムが複数ある場合、主キーとなる文字列値のカラムの設定を推奨します。
クエリには識別子が必要です。COUNTがかかわるクエリでは、ダミー カラムを用意して主キーにすることを推奨します。
次の例で考えてみることとします。
SELECT COUNT(*) FROM app_pending_tasks;
上記のクエリでは、識別子はalert_countで、ダミーの主カラムから値を取得します。ポーリング時にクエリが実行されるたびに、主キーの選択に従って実際のCOUNT値を保存します。この場合の主キーは、alert_countです。
COUNT属性にアラートを設定したり、しきい値を定義したりすることもできます。
参考情報:MS SQLでの識別子解説
2:COUNT、MIN、MAXなど集計関数を使う場合、SQLクエリはどのように記載すればよいでしょうか?
クエリは行ごとに1つ記載し、最多で2,000文字にしてください。クエリの数は監視ごとに5つに制限されています。クエリは改行で区切って下さい。出力行数は50までに制限がかかっています。
結果にカラムが複数ある場合、主キーとなる文字列値のカラムの設定を推奨します。
COUNTがかかわるクエリでは、ダミー カラムを用意して主キーにすることを推奨します。
アプリケーションで保留中のタスクがapp_pending_tasksテーブルに保存されており、このタスク数を監視するシナリオを考えてみます。
この場合、典型的には、クエリを次のように組むことが可能です。
SELECT COUNT(*) FROM app_pending_tasks;
上記のクエリには、識別子がないという問題があります。代替策としては、クエリを次のようにすることもできます。
MySQL、Oracle、Sybaseの場合
---------------------------------
SELECT 'Number of Pending Tasks', COUNT(*) AS totalcount FROR app_pending_tasks;
Number of Pending Tasksが主カラムになります。
MS SQL、PostgreSQL、Db2の場合
---------------------------------
SELECT 'Number of Pending Tasks' AS NumberOfPendingTasks, COUNT(*) AS totalcount FROM app_pending_tasks;
Number of Pending Tasksが主カラムになります。
これにより「totalcount」について、しきい値にもとづくアラートとレポート作成が可能になります。