catch-img

神保町テック便り :DB分析 〜exemONEの分析ビュー活用〜 その2

特定の時間に何が起きた?障害発生時のピンポイント分析術

こんにちは、日本エクセムです。

神保町テック便りの第3回では、障害が発生した“特定の時間帯”に、データベースがどうなっていたのかを分析する方法についてご紹介します。

exemONE の分析ビューでは、「いつ何が起きたのか?」を時間軸でたどり、システムの状態変化を多角的に分析できます。根本原因の特定に役立つ情報を、過去のデータから効率よく探し出すことができます。

目次[非表示]

  1. 1.「何時ごろから遅くなった?」という問いに応える
  2. 2.時間帯からたどる障害の原因
    1. 2.1.Trend Analysis
      1. 2.1.1.メトリック
      2. 2.1.2.アクティブセッション
      3. 2.1.3.ロック待機待ちセッション
      4. 2.1.4.SQLサマリー
      5. 2.1.5.待機イベント
    2. 2.2.なぜ「時間帯」から見ると分析が進むのか?
    3. 2.3.異なるデータベースでも、同じ視点で分析できる
  3. 3.最後に

「何時ごろから遅くなった?」という問いに応える

運用現場では、ユーザーからの報告やアラートをもとに調査を始めることが多く、
「14時ごろからアプリが重い」「夜間バッチがいつもより長い」といった時間帯ベースのヒントが最初の手がかりになります。

このようなときに重要なのが、その時間帯にシステム内で何が起きていたのかを正確に把握することです。
exemONE の分析ビューは、過去の特定の時間を起点に、関連するメトリックやSQL、セッションの動きなどを多角的に分析できるように設計されています。

時間帯からたどる障害の原因

障害の調査は、「いつ問題が起きたのか」を特定することから始まります。
その時間帯にデータベースでどのような変化が起きていたのかを把握するには、 exemONE の分析ビュー「Trend Analysis」を活用します。

この機能を使うことで、CPU 使用率やアクティブセッション数などの指標を時系列で確認でき、異常が発生した時間帯を視覚的に特定することができます。

Trend Analysis

Trend Analysis は、時系列でデータベース全体のリソース状況やアクティブセッション数の変化を把握できるビューです。
障害や性能低下が起きた時間帯に、システムにどのような変化があったのかを確認する際に有効です。

主な機能としては:

  • CPU 使用率などデータベースのメトリックの推移をグラフで表示

  • アクティブセッション数の変化を時系列で確認可能

  • 調査対象の時間帯のSQLランキングで非効率なSQLが確認可能

  • ロック待機待ちのセッションをツリー状で確認可能

  • 待機イベントも含めて確認が可能

  • 任意の時間範囲をマウスで選択し、その範囲を起点に詳細分析へ進むことができる

このビューを使うことで、問題が発生した時間帯を起点に、その背後にある要因や影響の広がりを段階的に把握することが可能になります。

Trend Analysis は、exemONE における障害分析の出発点として、重要な役割を担っています。

メトリック

画面の上段では、特定の時間帯における各種メトリックの推移をグラフで確認できます
たとえば Oracle データベースの場合、SYSTEM統計値、待機イベント、OSメトリックなどのカテゴリから、目的に応じて表示するメトリックを切り替えることが可能です。

グラフは時間軸に沿って描画されるため、急激な変化や異常な傾向を視覚的に把握しやすく、どの観点から調査を始めるべきかの判断材料となります。

アクティブセッション

グラフ上の任意の時点をクリックすると、その時間帯にSQLを実行していたアクティブセッションの一覧が表示されます
これにより、メトリックが上昇していた瞬間にどのSQLが実行されていたか、どのセッションが負荷に関与していたかをすばやく把握することができます。

特に、複数のセッションが同時に動作していた場合には、セッション間のリソース競合や待機の偏りなど、現場でよく発生するトラブルの兆候も明らかになります。

この「メトリックとアクティブセッションを直感的に紐づけて分析できる」点は、MaxGauge から受け継がれた exemONE の大きな特長のひとつです。

■ アクティブセッションの一覧が表形式で表示

■ リストにあるSID(セッションID)をクリックするとセッションの詳細を表示

■ SQL IDをクリックするとSQL文や実行計画、SQL実行統計値を確認できます

ロック待機待ちセッション

ロックで待機しているセッションは、関係するセッション同士の依存関係をツリー状に表示することができます
従来、過去に発生したロックの調査は難しく、タイミングを逃すと原因特定が困難になるケースが多くありました。

exemONE では、ロックが発生していた当時の状態を時系列で再現し、ブロッキングセッションと待機セッションの関係を視覚的に把握できるため、過去のロックトラブルも効率的に分析することが可能です。

SQLサマリー

実行されたSQLの統計情報を一覧で確認することができます。
実行負荷が高いSQLや、処理効率の悪いSQLを探し出す際の出発点となるビューです。

表示される統計情報には、以下のような指標が含まれます:

  • Elapsed Time (sec): クエリの総実行時間(秒単位)

  • CPU Time (sec): クエリがCPUを使用した時間(秒単位)

  • Buffer Gets: データベースバッファキャッシュから読み取られたブロック数

  • Disk Reads: ディスクから読み取られたブロック数

  • Rows Processed: クエリによって処理された行数

これらの情報をもとに、処理時間の長いSQLやI/Oコストの高いSQLをピックアップし、さらに実行計画や統計との比較へと進めることで、ボトルネックの特定やチューニングの方向性を見極めることができます。

待機イベント

表示している時間帯に発生した待機イベントを表示することができます。

どの待機クラスや待機イベントがシステムに影響を与えていたのかを把握することで、ボトルネックの原因やリソースの競合状況を分析する手がかりになります。

分析対象の時間帯における待機の内訳や急増したイベントの傾向を見極めることで、後続のSQL分析やセッション分析にもスムーズにつなげることができます。

なぜ「時間帯」から見ると分析が進むのか?

障害や性能トラブルの調査を進めるうえで、最初の手がかりとなるのは「いつからおかしくなったか?」という時間情報であることがほとんどです。
ユーザーからの問い合わせや監視アラートは、「14時ごろに遅くなった」「バッチ処理が朝5時に止まっていた」といった、*時間帯ベースのヒントで寄せられます。

また、多くの障害や性能劣化は、ほんの数分間の状態変化から始まります。
そのため、その時間帯に何が起きていたかを正確に把握できるかどうかが、分析の成否を分ける鍵になります。

exemONE の分析ビューは、すべて「時間軸を起点に構成」されており、各ビューを、同じ時間帯で横断的に分析できるのが特長です。

これにより、「負荷の急上昇がいつ起きたのか」「そのときに走っていたSQLは何か」「待機が多かったセッションはどれか」といった関連情報を一貫した視点で追跡することができ、調査のスピードと精度が大きく向上します。

異なるデータベースでも、同じ視点で分析できる

exemONE の Trend Analysis は、Oracle、PostgreSQL、MySQL、SQL Server といった複数のデータベースに対応しており、共通の分析手法で状態を把握することができます。

データベースごとに構造や用語は異なっていても、「いつ、何が起きたか」を時系列で捉えるという分析の基本的なアプローチは共通です。
exemONE ではこの考え方に基づき、どの製品でも Trend Analysis を起点に、メトリックやアクティブセッション、SQL 実行状況などを一貫した画面・操作性で確認できるようになっています。

これにより、複数製品が混在する環境でも、同じ手法・同じ操作感でトラブル対応や傾向分析ができるため、学習コストを抑えつつ、分析の効率と精度を高めることが可能です。

最後に

今回は、障害発生時のその瞬間に何が起きたかを追跡する方法をご紹介しました。
次回は、日ごとの実行傾向や頻出SQLの変化など、「日々の動きの中にある違和感」を見つけるための分析機能をご紹介します。TopN 分析や実行件数の推移をもとに、普段とは異なる傾向や、障害や性能低下の“予兆”につながるかもしれない変化に気づくための視点を取り上げる予定です。

どうぞ次回もお楽しみに!

CONTACT

他社に頼らず自社でデータベースを監視・運用をしませんか?
MaxGaugeがサポートします

お役立ち資料は
こちらから

不明点がある方は、
こちらからお問い合わせください

お電話でのお問い合わせはこちら

平日 10時~18時

人気記事ランキング

タグ一覧