APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【AP Tech Blog Week】デモツアーでわかる!PagerDuty AIOpsの機能解説

本記事はAP Tech Blog Weekのものになります。

はじめに

こんにちは、クラウド事業部の牧瀬です。

PagerDutyが提供するAIOps機能のデモツアーを、日本語訳しながらわかりやすく解説してきます。

近年はITシステム運用におけるAI技術を活用したAIOps(Artificial Intelligence for IT Operations)に注目が集まっています。AIOpsでは、機械学習AIを活用して運用データを学習し、外れ値の検知やトレンドの予測を行い、運用の効率化を図ります。

PagerDutyはインシデント管理と対応を一元化するツールです。リアルタイムのアラート通知、インシデントの優先順位付け、エスカレーションプロセスの自動化、再発防止のための事後分析や知見の提供など、インシデント対応のライフサイクル全体を支援してくれます。PagerDuty AIOpsは、そのインシデント対応のライフサイクルの自動化や効率化を支援する機能です。

PagerDutyを扱う際は、以下のインシデント対応のライフサイクル「1.検知」「2.トリアージ」「3.動員」「4.協力/解決」「5.学習/予防」をイメージしておくと、理解が進みやすいです。デモツアー中もこのライフサイクルに触れながら説明してきます。

  1. 検知: システムやアプリケーションの異常を検出します
  2. トリアージ: 検出された異常を分析し、ノイズ削減を行います
  3. 動員: 必要な担当者を割り振り、インシデント対応を開始します
  4. 協力/解決: 根本原因の特定やインシデント解決を行います
  5. 学習/予防: インシデントの再発防止や運用プロセスの改善を行います


引用:インシデント対応を効率化する「10のチェックポイント」- PagerDuty Blog

生成AI×運用

今回のテーマは 「インフラエンジニアから見た生成AIの活用」 ということで、先にネタバレです。

AIOpsや生成AIに造詣が深い方はすでにお気づきかと思いますが、AIOpsで活用されるAI技術には生成AIを含んでいないケースがあります。

今回紹介するPagerDuty AIOpsは機械学習AIを活用しています。

PagerDuty AIOpsは、PagerDutyに蓄積された過去のデータを、PagerDuty内部の機械学習アルゴリズムにより解析し、ノイズ削減やインシデント分析を行います。これは、データを分析して問題を検出・予測するもので、生成AIのように新しいコードやコンテンツを生成するわけではありません。

これまでAIOpsというと、ITシステム運用に機械学習AIを活用することが主流でしたが、最近では生成AIの活用が進んできています。

「システム障害対応の教科書」の 6.6システム運用におけるAIの活用 では、生成AIを活用したシステム運用をGAI-Ops(Generative AI-Ops)と呼称していました。

gihyo.jp

PagerDutyでもGAI-Opsに対応した製品として、PagerDuty Copilotが予定されています。現在は早期アクセス(EA)で提供中です。
参考: PagerDuty Copilot

PagerDuty Copilotでは4つ機能があります。(詳しくは公式を参照いただくことをお勧めします)

  • インシデントをイベントから解決まで管理するAIアシスタント
  • ランブックオートメーションジョブを共同作成
  • インシデントステータス更新時のメッセージの作成
  • ポストモーテム(事後報告)のドラフトの作成

AIアシスタント機能はSlack上でインシデントについて問い合わせができます。回答精度にもよりますが、うまく活用できれば、より迅速な問題解決につながることでしょう。

インシデントステータス更新時のメッセージ、ポストモーテムの作成は、Copilotの力を借りることで作業負荷を減らし、時短にもつながりそうです。

インシデント対応において、情報を集めて整理し、状況把握やドラフト作成は人の作業が必須でしたが、この部分を生成AIが代替してくれる可能性があります。運用フェーズで生成AIを活かす技術はまだ発展途上なので、今後も注視していきたいです。

PagerDuty AIOpsのデモツアー

では気を取り直して行きましょう。デモツアーのリンクを開くとPagey(ペイジー)がお出迎えしてくれます。PagerDutyのサービス内にもしばしば出現するマスコットキャラです。

PagerDuty AIOpsは4つのコンポーネントを備えており、デモツアーではざっくりとこれらのコンポーネントの機能を体験できます。

[Pick your component!]をクリックすると、以下のコンポーネントが表示されます。

  • 自動化とオーケーストレーション
  • ノイズ削減
  • トリアージと根本原因分析
  • 可視化

自動化とオーケーストレーション

PagerDuty自体は監視機能をもちませんが、あらゆるツールからのアラートをイベントという形で受信します。AIOps機能によりイベントオーケストレーションが利用可能になり、各イベントに対してどのように処理するかルールを設定できるようになります。

この機能はインシデント対応のライフサイクルの「1.検知」のフェーズに関連します。

イベントオーケストレーションには、以下の2種類が設定できます。

  • グローバルベースのルール(Global Orchestration Rules)
  • サービスベースのルール(Service Orchestration Rules)

PagerDutyでは監視対象システムをサービスという単位で扱います。PagerDuty内では複数のサービスを設定できます。グローバルオーケストレーションルールとはその名の通り、複数のサービスに対する共通処理を行う際に使います。サービスオーケストレーションルールは、各サービス固有の処理を定義します。

まずはグローバルオーケストレーションの設定例が紹介されます。グローバルインテグレーションでは、まずインテグレーションを作成し、インテグレーションキーを発行します。

Global Orchestrationタブを選択し、各イベントルールを定義し、自動処理するしくみを作ります。

各イベントルールにはConditions(イベントに関する条件)とActions(条件にマッチしたイベントに対して行う処理)が設定できます。デモツアーでは、event.severity(イベントの重大度)がwargingになった場合の条件で、Conditionsが定義されています。

次にActionsの設定をします。ここではインシデントをトリガーする前に300秒間アラートを停止するルールを設定しているようですね。PagerDutyではインシデントを「システム障害に際して何らかの対応が必要な課題」と定義しています。インシデント対応を効率化するため、全イベントをインシデントにはせず、いったん静観するルールをここでは設定したわけですね。たぶん。

イベントルールは複数設定できます。その後も[Next]を押していくと、もう一つイベントが追加されました。300秒間アラートを上げるのを待った後、優先度「P3」のインシデントとしてトリガーします。複数のイベントの流れがフロー図のように可視化されました。

デモツアーでは特に説明記載されていませんが、こちらはルールにマッチした場合は右方向、マッチしなかった場合は下方向のルールに遷移するように設計されています。直感的でわかりやすいですよね。

次に各イベントを各サービスに割り振るためのルールを設定します。Service Routesタブを選択し、イベントとサービスの紐づけをします。イベントルールの設定と似ていますが、[+ New Service Route]をクリックし、What service should events route to?(イベントを振り分けるサービス)とWhen should events be routed here?(振り分ける際の条件)を指定します。

ここではIf条件でevent.summaryにmysql_long_runnning_queryが含まれていたら、「Users Database」というサービスに対してルーティングするようですね。

次にサービスオーケストレーションルールの設定です。

サービスオーケストレーションの設定方法はグローバルオーケストレーションとほぼ同じです。なお、最後に評価されたルールが優先されるため、同種のActionがグローバルオーケストレーションルールとサービスオーケストレーションルールの両方で定義されていた場合、サービスオーケストレーションルールで上書きされます。

まず、サービス全体にかかわるルールをグローバルオーケストレーションルールで設定し、サービス個別に適用したいルールがあれば、サービスオーケストレーションルールを適用するという使い方になると思われます。

ノイズ削減

次にノイズ削減機能についてみていきましょう。

この機能はインシデント対応のライフサイクルの「1.トリアージ」のフェーズに関連します。

監視ツールから送付されるイベントの中にはインシデントとしてトリガーする必要のないノイズもあります。全イベントにに対してインシデントをトリガーすると重大なイベントの見落としや対応の遅れが発生します。また、運用管理者の負担も増えるので、効率的なインシデント対応には不要なイベントは削減/集約するしくみが不可欠です。

AIOps機能ではIntelligent Alert Groupingを利用し、機械学習ベースのアルゴリズムを用いて関連するアラートを1つのインシデントにグループ化します。

ノイズ削減の機能は各サービスのSettingsから有効にできます。アラートをグループ化することで、余分なインシデントの発生を防ぐことができます。

Intelligent Alert Groupingでは、ほぼAIに依存したグルーピングを行うことになりますが、ウィンドウタイムは設定できます。

Previewをクリックすると、過去45日間で受信したアラートやインシデントの数と、どれくらいインシデントとしてアラートを削減/集約できたが確認できます。Previewは1日に1回生成され、過去45日間のアラートに基づきます。Preview機能の精度を高めるためには、ある程度は過去アラートの蓄積が必要かもしれません。

次にContent-Basedのアラートグルーピングを見ていきます。

予測可能なアラートにおいては、グルーピングのロジックをAIに全委任するよりも手動でカスタマイズしたほうがいい場面もあります。コンテンツベースのアラートを使うと、フィールドに基づいてアラートを集約できます。

インテリジェントアラートとコンテンツベースのアラートは組み合わせて使うことで、より柔軟なノイズ削減の設定が行えます。

最後にTime-Basedのグルーピングです。サービスが受信したアラートが生成された時間に基づいて、自動的にグループ化します。

トリアージと根本原因分析

次にトリアージと根本原因部席についてみていきます。

この機能はインシデント対応のライフサイクルの「1.トリアージ」や「4.協力/解決」のフェーズに関連します。

インシデントに関連づく情報を参照することで、より迅速に解決できるようになります。

AIOpsには、過去にPagerDuty内で発生した類似のインシデント(Past Incidents)を紐づける機能があります。機械学習アルゴリズムによりヒートマップ形式で自動的に紐づけます。ユーザー自身で関連付けするインシデントを選択することはできません。こちらを参照することで、過去のインシデントについて、誰が、いつ、どのように解決したかを確認することができます。

Related Incidentsタブにて表示されるインシデントは、PagerDuty内でリアルタイムに発生している関連する可能性が高いインシデントです。こちらも自動的に紐づけられます。

Recent Changesでは最近のシステムの変更が、サービスにどのような影響を与えたか確認できます。ここを確認することで、インシデントの根本原因の発見につながる可能性があります。

可視化

PagerDutyではOperations Consoleを使用することで、カスタムダッシュボードを作成することができます。これによりサービス全体の運用状況を包括的に可視化できます。

すでにダッシュボードは作成済みですが、直近24時間でインシデントのステータスが「Triggered」のものをソートして表示するようですね。

Pagey(ペイジー)がお見送りに来てくれたところでデモツアーは終了ですね。お疲れさまでした。

まとめ

今回はAIOps分野での生成AIの活用について、PagerDuty Copilotを題材に紹介しました。

また、ITシステム運用におけるAI技術を活用したAIOpsについて、PagerDuty AIOpsを題材に紹介しました。

特にインシデント対応は、人間同士の自然言語によるやり取りが多く発生し、ストレス負荷も高くなり得る業務なので、生成AIが代替して活躍してほしい場面があります。今後の技術の進展に伴い、AIOpsと生成AIの融合がさらに進み、より迅速かつ効率的なインシデント管理と対応が可能になっていくのではないでしょうか。

運用フェーズで生成AIを活かす技術はまだ発展途上ですが、今後も注視していこうと思います!