投稿者:森

こんにちは。私どものAIOps担当では、システム運用を効率化・高度化するため、機械学習の技術を採用した「AIOps」・アプリケーションパフォーマンス管理の「APM」といった製品の、ご提案から構築・導入後の支援まで担当しています。
AIOps担当からは、APM製品である IBM Observability by Instana(以下、Instana) を数回にわたってご紹介していきます。
第3回目では、障害の検出から通知・分析のための機能をご紹介します。

過去の連載については、以下リンクからご覧いただけます。
第1弾:APMで監視を高度化。IBM Observability by Instana とは
⇒Instanaの特徴・機能についてご紹介
第2弾:IBM Observability by Instanaの導入と自動構成
⇒エージェントの導入と、サーバ間・アプリケーション間の依存関係の検出のご紹介

●障害の通知先設定

アラート・チャネル
Instanaでは障害の通知先・方式を「アラート・チャネル」として設定します。
Eメール、チャット(Slack、Google Chatなど)、他の監視システムへWebhookによる通知などが可能です。
システム別や障害の種類別に通知先を分けるといったことも可能です。
apmibm_observability_by_instana03-01.png

●障害の検出から通知

Instanaにおける障害の検出に関する設定は、情報の収集方式によって大きく以下の2種類に分類できます。
1. Webサイトにアクセスした利用者から情報を収集する。

  • Webサイト監視
  • 「Webサイト監視の障害検出から通知」として後述します。

    2. 監視対象のサーバやサービスに、Instanaのエージェントを導入し情報を収集する。
  • アプリケーション監視
  • クラウドサービス監視
  • インフラストラクチャ監視
  • コンテナクラスタ監視
  • 「システム監視の障害検出から通知」として後述します。

    Webサイト監視の障害検出から通知

    Webサイト監視では、利用者からの接続ごとに各種情報を収集します。

  • Webサイトへの接続数
  • Webサイトからの応答時間
  • 各種エラーの発生数(HTTPの応答、JavaScript)
  • 障害を検出するための設定は、スマート・アラートを設定します。スマート・アラートでは、以下の事象を障害検出の対象とすることができます。

  • 応答速度の低下(低速)
  • JavaScriptのエラー(JSエラー)
  • HTTPのエラー(HTTP状況コード)
  • アクセス数の超過・過少(スループット)
  • ※カッコ内は、Instanaにおける表記。

    スマート・アラートの設定について、設定例をご紹介します。
    apmibm_observability_by_instana03-02.png apmibm_observability_by_instana03-03.png apmibm_observability_by_instana03-04.png apmibm_observability_by_instana03-05.png

    スマート・アラートは、Webシステムの利用者の状況を監視し異常があった場合は通知する機能と言えます。サーバやソフトウェアに異常が発生していなくても利用者への応答が遅延している場合や、想定していない大量のシステムへの接続があった場合など、Webシステムのサービス品質の異常を検出するのに役立ちます。

    システム監視の障害検出から通知

    エージェントを導入する監視では、エージェント導入とともにサーバに導入されているソフトウェアを自動検出し、情報収集も自動的に設定・開始されます。
    たとえば、MySQLで収集される性能情報(メトリック)には、以下のような項目が含まれます。

  • 読み取り・書き込みのリクエスト数
  • DBで実行されたクエリーの数(Select・Update・Insert・Deleteなど)
  • エラーの数
  • 「待ち」が発生している時間
  • ※MySQLで収集される性能情報は、以下リンク先を参照ください。
    MySQL のモニター

    情報収集とあわせて組み込みイベントも設定され障害を検出する条件が設定されます。
    こちらも、MySQLを例にとってみると組み込みイベントとしては、以下の項目が設定されます。

  • MySQLサーバへのコネクション数が上限に達している
  • ※MySQLにおける組み込みイベント(障害検出の条件)は、以下リンク先を参照ください。
    組み込みイベントのリファレンス(MySQL)

    利用者が独自の障害検知条件をカスタムイベントととして設定することが可能です。
    MySQLサーバにおいてDBのデータ参照に一定以上の待ち時間が発生した場合、障害として検出するカスタムイベントの設定例をご紹介します。
    apmibm_observability_by_instana03-06.png apmibm_observability_by_instana03-07.png

    アラート・チャネルといった「障害の通知先・通知方法」、組み込みイベント・カスタムイベントといった「障害の検出条件」、この2つの設定を組み合わせてアラートすなわち「障害の通知」を設定します。
    通知する条件として、「発生したイベントの重大度」「個々のイベントの発生」の2通りで設定できます。
    ・「発生したイベントの重大度」による通知
    apmibm_observability_by_instana03-08.png ・「個々のイベントの発生」による通知
    apmibm_observability_by_instana03-09.png ・共通の設定項目
    apmibm_observability_by_instana03-10.png

    アラートによる通知は、従来のシステム監視の仕組みに近い監視・通知の方式と言えます。

    ●障害の分析

    障害の分析方法は、実際にサンプルアプリケーションを使ってご紹介します。
    今回は「robot-shop」というWebショップを模したサンプルアプリケーションを使用します。
    【参照】https://github.com/instana/robot-shop

    このサンプルアプリケーションでは、Webサイトの利用者は以下の操作を行います。

  • Webサイトへログイン
  • 商品選択および個数の入力
  • チェックアウト → 商品代金の確定
  • 配送先地域の指定 → 送料の確定
  • 支払処理
  • 「robot-shop」のサンプルアプリケーションには、「load-gen」という負荷ツールも提供されており多数の利用者が接続したような過負荷の状態にすることができます。
    【参照】https://github.com/instana/robot-shop/tree/master/load-gen

    過負荷の状態が進行中の場合など障害に至る前段階では、監視のアラートやエラーログが出力されず、利用者がWebシステムの応答が悪い状態で利用している状態が発生することがあります。 このようにエラーが発生する前段階でWebシステムの応答が悪化している状態で、どこがボトルネックになっているのか見てみます。
    Webサイト監視で取得している、利用者の接続情報から「取得時間」に注目することで、利用者への応答に時間がかかった処理が判断できます。

    画像をクリックすると大きい画像でご確認いただけます。 apmibm_observability_by_instana03-11.png

    ご覧いただいた通り、配送先地域を指定し送料を確定する「shipping.html」で大きく応答時間が悪化しています。続いて、バックエンド・トレースでシステム側の処理を確認します。

    画像をクリックすると大きい画像でご確認いただけます。 apmibm_observability_by_instana03-12.png

    「shipping」の処理で「cities」データベースへの処理に時間が、大幅に増加していることが見て取れます。したがって、具体的な障害調査は「cities」データベースやそれに関連する処理から調査することになります。
    このように明確にエラーメッセージの出力や障害事象の発生を伴わず、システムの応答・パフォーマンスが劣化した状態となった場合、従来は各サーバやアプリケーションのログや性能情報から調査を進めるしかなく、ボトルネックの特定に時間を要したと思います。InstanaではWebサイト監視によるユーザの状況や各種処理のトレースから、ボトルネックの箇所をかなり絞り込める分析ができるのがメリットかと思います。

    余談ですがサンプルアプリケーションを動かした検証環境がものすごく低スペックのため、過負荷をかけると応答遅延の状態は短時間しか再現できず、すぐにシステムエラーになってしまうためこの資料を集めるのに苦労しました。。。

    ●まとめ

    ここまでInstanaの障害検出・通知の設定や、および障害時の分析についてご紹介してきました。
    ・Webサイト監視で収集したサービス利用者の状況や、スマート・アラート機能により、
    ⇒ ハードウェアやソフトウェアの状態とは別に、利用者へ提供しているサービス品質の低下を検出し、アラートを送信することができる。
    ⇒ ベースライン(動的なしきい値)による検出機能があり、よりシステムの利用状況や状態に即した異常を検出できる。

    ・エージェントが収集した各種トレースデータにより、
    ⇒ システムの利用者が行った処理(要求)とシステム側の処理(応答)を、始まりから終わりまでを確認することができる。
    ⇒ 様々なアプリケーション・サービスで構成されたシステムでも、障害・ボトルネックの絞り込みが行える。
    といった特長があると言えます。

    Webセミナー動画のご案内

    2021年9月28日(火) に開催したWebセミナーを動画として公開しております。製品紹介だけでなく、デモンストレーションでは、障害の影響範囲や原因の特定、障害対応の開始まで省力化・スピードアップといったInstanaのメリットを紹介しています。
    下記リンク先で、お名前や会社名・メールアドレス等を入力いただきますと動画サイトへの案内メールが届きますので、是非ご視聴ください。
    【Webセミナー動画公開】オンプレミス・クラウド混在の複雑な環境を「お手軽監視」 ~ デモで体感。自動化による効率化 / 障害対応のスピードアップ ~