夜間・休日の監視アラートに、運用手順書と過去の障害対応記録から該当する手順と判断の目安を探し、当番の担当者へ根拠付きで返す
夜間・休日に監視アラートが鳴ったとき、その内容から運用手順書と過去の障害対応記録を検索し、該当する手順と判断の目安を出典付きで当番へ返します。復旧の操作はさせず、探す時間を縮めます。
- 生成AI
- Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 連携・自動化
- Python
- 対象業界
- EC/IT・SaaS/物流/金融
- 対象部門
- 情報システム
- 対象業務
- 情報検索
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 対応スピード向上/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- アラートがチャットとメールで届き、当番が気付く
- 監視の画面を開き、どのサービスのどの指標が、どれくらい外れているかを確かめる
- 社内Wikiでアラートの名前や指標の名前を検索し、手順書を探す
- 手順書が見つかれば、それが今も使える版かを更新日で確かめる
- 共有ドライブで過去の振り返りの記録を検索し、同じアラートがいつ鳴ったか、そのとき何をしたかを探す
- 朝まで待てるか、すぐ対応するか、上位の担当者を起こすかを決める
- 手順に沿って対応し、チャットに経過を書く
- 自動アラートが発報すると、Cloud Monitoring が Pub/Sub へ通知を送る
- 自動中継プログラムが通知を受け取り、サービス名・指標・条件名・手順書の番号を取り出す
- 自動同じ障害の続報や復旧の通知であれば、新しい検索をせずに既存のスレッドへ追記する
- 自動手順書の番号があれば、その番号で手順書を絞り込んで検索する。無ければサービス名で絞り込んで検索する
- 自動Agent Search(旧 Vertex AI Search)の answer メソッドが、手順書と過去の記録から回答を作り、出典を付けて返す
- 自動中継プログラムが出典を確かめ、手順の出典が手順書でないもの、廃止された手順書のものを除く
- 自動当番のチャットのスレッドに、手順・判断の目安・出典のリンクを投稿する
- 人当番が出典の手順書を開き、手順を確かめてから対応する
- 人初動の判断(待つ/対応する/上位を起こす)を当番が決め、スレッドに書く
- 人回答が役に立ったかを、スレッドの選択肢で付ける
各工程の詳しい説明を読む
- アラートがチャットとメールで届き、当番が気付く
- 監視の画面を開き、どのサービスのどの指標が、どれくらい外れているかを確かめる
- 社内Wikiでアラートの名前や指標の名前を検索し、手順書を探す
- 手順書が見つかれば、それが今も使える版かを更新日で確かめる
- 共有ドライブで過去の振り返りの記録を検索し、同じアラートがいつ鳴ったか、そのとき何をしたかを探す
- 朝まで待てるか、すぐ対応するか、上位の担当者を起こすかを決める
- 手順に沿って対応し、チャットに経過を書く
(a)手順書が見つからない。 3番目で、アラートの名前と手順書の題名が一致しないことがよくあります。検索語を変えて3回、4回と探し、それでも見つからなければ記憶を頼りに動きます。 手順書があるのに無いのと同じ扱いになります。
(b)古い手順書を開いてしまう。 構成を変えたあとも旧版が残っていると、検索で先に出てきた古い手順に沿って操作してしまうことがあります。4番目の確認は、深夜には省かれがちです。
(c)過去の判断が引き継がれない。 「このアラートは月末の集計処理で毎月一時的に鳴るので、30分以内に戻れば対応不要」という判断が、振り返りの記録には書いてあるのに、手順書には反映されていません。 知っている当番は待ち、知らない当番は上位の担当者を起こします。
(d)初動が当番によって変わる。 経験の長い当番は2番目を見ただけで6番目まで決められますが、入って半年の当番は3番目から5番目に時間をかけ、判断に自信が持てずに起こすことになります。夜間に起こされる側の負担も、運用のチームで偏っています。
- 【自動】 アラートが発報すると、Cloud Monitoring が Pub/Sub へ通知を送る
- 【自動】 中継プログラムが通知を受け取り、サービス名・指標・条件名・手順書の番号を取り出す
- 【自動】 同じ障害の続報や復旧の通知であれば、新しい検索をせずに既存のスレッドへ追記する
- 【自動】 手順書の番号があれば、その番号で手順書を絞り込んで検索する。無ければサービス名で絞り込んで検索する
- 【自動】 Agent Search(旧 Vertex AI Search)の answer メソッドが、手順書と過去の記録から回答を作り、出典を付けて返す
- 【自動】 中継プログラムが出典を確かめ、手順の出典が手順書でないもの、廃止された手順書のものを除く
- 【自動】 当番のチャットのスレッドに、手順・判断の目安・出典のリンクを投稿する
- 【人】 当番が出典の手順書を開き、手順を確かめてから対応する
- 【人】 初動の判断(待つ/対応する/上位を起こす)を当番が決め、スレッドに書く
- 【人】 回答が役に立ったかを、スレッドの選択肢で付ける
8番目が、この設計の分かれ目です。当番はAIの回答ではなく、出典の手順書を見て動きます。 回答の文は「どの手順書を開くべきか」を示すためのもので、操作の手順は手順書の原文から読みます。 回答の文から直接操作すると、要約で落ちた注意書きを飛ばします。
3番目は夜間の負担を左右します。 1つの障害で、同じアラートが続けて何度も鳴ることがあります。そのたびに新しい回答を投稿すると、当番のチャットが回答で埋まります。 同じ障害は1つのスレッドにまとめます。
02今回想定するシステム構成
Cloud Monitoring(アラートポリシー) │ 説明文の欄に「手順書の番号」と「サービス名」を書いておく ▼【トリガー】アラートの発報(Pub/Sub へ通知) 中継プログラム(Python、Cloud Run) ├──▶ 続報・復旧の通知か → 既存スレッドへ追記して終わり ├──▶ 手順書の番号・サービス名・指標・条件名を取り出す ▼ Agent Search(Vertex AI Search)── answer メソッド │ データストア:運用手順書(約350本)+障害対応の振り返り(約600件) │ 絞り込み:runbook_id/service/status: current │ 出典付きで回答を作る ▼ 中継プログラム ── 出典の検査(手順の出典が手順書か、廃止版でないか) ▼ 当番のチャットのスレッド ── 手順・判断の目安・出典のリンク ▼ 【当番が手順書を開いて確かめ、初動を決める】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Vertex AI Search(Agent Search)の answer メソッド | Azure AI Search、Amazon OpenSearch Service |
| 生成AI | Gemini(answer メソッドの回答の生成に使うモデル) | ─ |
| 連携 | 中継プログラム(Python。Cloud Run で動かし、通知・検索・チャットをつなぐ) | Node.js で同じものを書く |
| 監視 | Cloud Monitoring(アラートポリシーと Pub/Sub への通知) | 既存の監視サービスの Webhook 通知 |
| 保管 | Cloud Storage(手順書と振り返りの原本、メタデータ) | ─ |
監視の仕組みとチャットは、新しく足すものではありません。 アラートはこれまでどおり当番へ直接も届き、この構成はその横に回答を添えるだけです。最初の準備は、アラートポリシーの説明文の欄に、対応する手順書の番号を書き込むことです。
検索の土台は、Agent Search(Vertex AI Search から改称中)の answer メソッドです。 検索の結果をもとに回答を作る機能で、複雑な質問を分けて検索し、回答の文ごとに出典を付けられるとされています。関係の薄い内容しか見つからないときや、答えを求めていない質問のときは、回答を作らずにその理由を返す設定があります。夜間に当番へ返すものとしては、この「答えない」ができることが重要です。
アラートの通知は Pub/Sub で受けます。 Cloud Monitoring の通知の送り先には、メール、Slack、PagerDuty、Webhook、Pub/Sub などがあり、Webhook は公開のエンドポイントしか使えないとされています。中継プログラムをインターネットに開かずに済むよう、Pub/Sub のトピックから受け取ります。 通知の中身はバージョン1.2のJSONで、障害、リソース、指標、ポリシーと条件、説明文が入っています。
03どうやって実装するのか
処理の起点を決める
起点は、アラートポリシーが発報したことです。 Cloud Monitoring の通知の送り先に Pub/Sub のトピックを加え、中継プログラムがそこから通知を受け取ります。当番への通常の通知は、これまでの送り先にそのまま残します。 中継プログラムが止まっても、アラートそのものは当番に届きます。
対象は、夜間・休日に当番へ届くアラートに限りません。 日中のアラートにも同じ回答を付けます。日中に回答の質を見ておかないと、夜間に初めて外れに気付くことになります。 最初の1か月は日中だけに付け、当番の評価を見てから夜間に広げます。
通知は、発報のたびに1件ずつ処理します。 まとめて処理する理由がありません。ただし、同じ障害の続報と復旧の通知は、新しい検索の対象にしません。 通知に含まれる障害の識別子で、すでにスレッドがあるかを確かめます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| アラートの通知 | 障害の識別子、状態(発報/復旧)、ポリシー名、条件名、リソースの種類とラベル、指標、説明文 | Cloud Monitoring から Pub/Sub |
| 運用手順書 | 対象のサービス、事象、確認の手順、対応の手順、上位へ連絡する条件 | 社内Wikiから書き出したもの |
| 手順書のメタデータ | 手順書の番号、サービス名、対象のアラートポリシー、現行/廃止、最終の見直し日 | 運用チームの管理表 |
| 障害対応の振り返り | 発生日時、事象、見たもの、判断、対応、原因、再発防止 | 共有ドライブの文書 |
| 振り返りのメタデータ | 記録の番号、サービス名、関係したアラートポリシー、影響の大きさ | 同上と管理表 |
質を決めるのは、説明文の欄の「手順書の番号」と、メタデータの「現行/廃止」です。 手順書の番号が通知に入っていれば、検索の精度に頼らずに正しい手順書へたどり着けます。 「現行/廃止」が無いと、第3章の(b)の古い手順書がそのまま回答に使われます。
振り返りの記録に「関係したアラートポリシー」を付けるのは、後から効いてきます。 同じアラートの過去の判断を、名前の揺れに関係なく引けるようになります。新しく書く振り返りから付け始め、過去分は件数の多いサービスから順に付けます。
データの取得方法を決める
アラートポリシーの説明文の欄に、手順書の番号とサービス名を書きます。 説明文には変数を使えるとされ、${policy.display_name}(ポリシー名)、${condition.display_name}(条件名)、${resource.label.KEY}(リソースのラベル)、${policy.user_label.KEY}(ポリシーに付けたラベル)などが使えます。ポリシーのラベルに runbook_id と service を持たせ、説明文でそれを書き出すのが、ポリシーごとに書き分けずに済む方法です。説明文には最大3つまでリンクも付けられるとされており、手順書のURLを入れておくと当番がすぐ開けます。
手順書と振り返りは、Cloud Storage に置いてデータストアに取り込みます。 文書ごとのメタデータは、JSONL の各行に id、structData(または jsonData)、content.mimeType、content.uri を書いた形式で渡します。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| ポリシー名・条件名・リソースのラベル | 通知のJSON | 検索の文を組み立てる |
| 手順書の番号・サービス名 | 通知の説明文(ポリシーのラベルから) | 絞り込み |
| 手順書の本文とメタデータ | Cloud Storage | 手順の根拠 |
| 振り返りの本文とメタデータ | Cloud Storage | 判断の目安の根拠 |
絞り込みに使う項目は、スキーマの設定で索引可能にします。 絞り込みの式は runbook_id: ANY("RB-0123") や service: ANY("billing") AND status: ANY("current") のように書けます。日付の項目には比較の演算子も使えるとされています。
取り込み直しは、手順書を更新した日に行います。 Cloud Storage からの定期的な取り込み(1日、3日、5日ごと)もありますが、元のデータの権限の制御が反映されないとされています。手順書と振り返りは運用チームだけが見るものなので、このデータストア自体を運用チームだけが使えるようにし、他部門の文書は入れません。
AIへ渡す前に整形する
- 手順書を1事象1文書にそろえる … 1つのページに複数の事象が書かれているものは分けます
- 現行/廃止を付ける … 管理表から状態を付け、置き換えられた旧版には「廃止」を付けます
- 見出しを整える … 「確認の手順」「対応の手順」「上位へ連絡する条件」の見出しをそろえます
- 振り返りから個人と顧客の情報を除く … 担当者の氏名、顧客企業の名前、問い合わせの文面を伏せます
- 認証情報を除く … 手順書に書かれたパスワード、トークン、接続文字列が無いかを確かめて消します
- 文書の分割を設定する … データストアを作るときに分割(チャンク)を有効にし、見出しを各断片に付けます
- パーサーを選ぶ … 書き出したHTMLやDOCXはレイアウトパーサーで、表と見出しを保ったまま読みます
6番目は、データストアを作る前に決めます。 分割はデータストアの作成後に有効・無効を切り替えられないとされています。断片の大きさは100〜500トークンの範囲で指定でき、includeAncestorHeadings を有効にすると、題名と各階層の見出しが断片に付くとされています。手順書の「対応の手順」の断片だけが返ってきても、どの事象の手順かが分かるようにするためです。
5番目を省かないでください。 手順書には、管理画面へのログインの方法がそのまま書かれていることがあります。検索に入れた時点で、回答の文に出てくる可能性があります。 認証情報は手順書から外し、秘密情報の管理の仕組みを指す書き方に直します。
AIに処理させる
させるのは、アラートの内容に合う手順書の手順と、過去の記録にある判断の目安を、出典を付けて短くまとめることです。
| 要素 | 中身 | 根拠 |
|---|---|---|
| 該当する手順書 | 手順書の番号と題名 | 手順書だけ |
| 最初に確かめること | 手順書の「確認の手順」の要点 | 手順書だけ |
| 判断の目安 | 過去に同じアラートで待ったか・対応したか・誰を起こしたか | 振り返りの記録だけ |
| 上位へ連絡する条件 | 手順書に書かれた条件 | 手順書だけ |
右端の列を混ぜないことが、この構成で最も大事な点です。 振り返りの記録には、そのときだけの応急処置(一時的な設定の変更、手作業での再実行)が書かれています。それが「手順」として返ると、当番は手順書にない操作を正式な手順だと思って実行します。 手順は手順書だけ、目安は記録だけから取らせます。
answer メソッドの設定は次のようにします。
| 設定 | 値 | 理由 |
|---|---|---|
includeCitations | 有効 | 回答の文ごとに出典を付ける |
ignoreLowRelevantContent | 有効 | 関係の薄い手順書で無理に答えない |
ignoreAdversarialQuery | 有効 | 想定外の文面に答えない |
searchResultMode | CHUNKS | 手順書の該当の断片を返す |
maxReturnResults | 10 | 既定のまま。最大は25 |
filter | 手順書の番号、またはサービス名と status: ANY("current") | 廃止された手順書を除く |
preamble | 下の指示 | 答え方の規則を与える |
| させないこと | 理由 |
|---|---|
| 原因の断定 | 夜間に見えている情報だけでは決められない |
| 手順書に無い操作の提案 | 一般的な知識からの操作は、自社の構成で事故になる |
| 待つ・起こすの結論 | 当番の判断。AIは過去の判断を示すだけ |
| コマンドの実行や設定の変更 | この構成は書き込みの権限を持たない |
| 手順書と記録の食い違いの解消 | どちらを直すかは運用チームが決める |
2行目が最も起きやすい失敗です。 回答を作るモデルは、データベースの接続数が足りないときの一般的な対処を知っています。それを使って答えると、自社の構成では別の影響が出る操作が、手順のように並びます。 検索結果の文書だけで答えることを、指示で明記します。
指示内容を固定する
answer メソッドの preamble に、次の指示を入れます。
あなたは夜間・休日にシステムの監視アラートを受けた当番の担当者に、
運用手順書と過去の障害対応記録から、該当する手順と判断の目安を返します。
読むのは深夜に起こされた当番で、あなたの回答を見て手順書を開きます。
【答え方】
1. 最初に、該当する手順書の番号と題名を書いてください。
2. 次に、手順書の「確認の手順」から、最初に確かめることを3つまで書いてください。
3. 過去に同じアラートが鳴ったときの記録があれば、
そのとき待ったのか、対応したのか、誰に連絡したのかを、記録の番号と日付を付けて書いてください。
4. 手順書に「上位へ連絡する条件」があれば、そのまま書いてください。
【厳守事項】
- 検索結果の文書に書かれていることだけで答えてください。
一般的な知識で手順を補わないでください。
- 手順は運用手順書からだけ書いてください。
障害対応の記録にある操作を、手順として書かないでください。
記録にある操作は「過去にこう対応した」とだけ書いてください。
- 数値の基準(しきい値、待つ時間、件数)は、文書に書かれているとおりに書いてください。
- 原因を断定しないでください。「原因の候補」も書かないでください。
- 待つべきか、対応すべきか、誰かを起こすべきかの結論を書かないでください。
- 廃止と書かれた手順書を使わないでください。
- 該当する手順書が見つからないときは、
「該当する手順書が見つかりません。上位の担当者の連絡先を確認してください」とだけ書いてください。
- 手順書と記録で記載が違う点があれば、両方を書き、
「手順書と過去の記録の記載が異なります」と明記してください。
- 人の氏名、顧客の名前、パスワードやトークンを書かないでください。
「記録にある操作は『過去にこう対応した』とだけ書く」が、この指示の要です。 禁じるだけでは、記録の操作が手順のなかに混ざります。書き方まで決めると、読む当番の側で「これは手順ではない」と区別できます。
検索の文は、中継プログラムが通知から組み立てます。 例えば「サービス:billing、ポリシー:DB接続数の上限に近い、条件:接続数が上限の90%を5分超える、リソース:本番のデータベース。該当する手順と過去の対応を教えてください」のように、通知の項目を決まった順に並べます。
出力形式を固定する
answer メソッドの応答を、中継プログラムが次の形に整えて、チャットと記録に渡します。
{
"incident_id": "",
"policy": "",
"service": "",
"lookup": "runbook_id | service_search | none",
"status": "answered | skipped | no_runbook",
"skipped_reasons": [],
"answer_text": "",
"runbook": { "id": "", "title": "", "status": "current", "uri": "" },
"past_records": [
{ "id": "", "date": "", "decision": "", "uri": "" }
],
"conflict": false,
"feedback": "useful | partly | wrong | none"
}
1つ目の理由は、lookup で引き方を残せることです。 手順書の番号で引いた回答と、サービス名で検索した回答では、外れる確率が違います。月次の集計で、番号が無いポリシーを洗い出す材料になります。
2つ目は、runbook を回答の文と別に持てることです。 中継プログラムは、出典の中に手順書が1つも無い回答を no_runbook に書き換え、手順の部分を表示せず、過去の記録だけを「参考」として出します。 廃止の手順書が出典に入っていれば、その出典を除きます。
3つ目は、feedback で回答の質を測れることです。 当番がスレッドで選んだ評価を残し、「外れ」の多いポリシーから手順書と説明文を直します。
チャットには、次の形で投稿します。
| 欄 | 中身 |
|---|---|
| 手順書 | 番号・題名・リンク(廃止でないことを確認済み) |
| 最初に確かめること | 3つまで |
| 過去の対応 | 記録の番号・日付・そのときの判断 |
| 上位へ連絡する条件 | 手順書の記載のまま |
| 注意 | 「操作は手順書の原文で確かめてください」 |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Cloud Monitoring | Pub/Sub への通知 | アラートの発報と復旧を受け取る |
| Agent Search | answer メソッドの呼び出し | 手順書と記録から回答を作る |
| チャット | 投稿のAPI | 当番のスレッドに回答を投稿し、評価を受け取る |
| 管理表 | 読み取り | 手順書の現行/廃止を取り込みに反映する |
| 記録 | 書き込み | 通知・回答・評価を残す |
監視の仕組みにもサーバーにも、書き込みません。 中継プログラムが持つのは、通知を読む権限と検索を呼ぶ権限と、チャットに投稿する権限だけです。自動で再起動する仕組みを足したくなっても、この構成の中には作りません。 夜間に誤った手順で操作が走ると、1件のアラートが障害に変わります。
人が確認する
当番は、回答を読んだあと必ず手順書の原文を開きます。 回答は「どの手順書か」と「過去に何があったか」を短く示すもので、手順の細部と注意書きは原文にしかありません。
- 手順書の番号と題名を確かめる … アラートの事象と合っているか、廃止でないかを見ます
- 原文で確認の手順を読む … 回答の3つの要点ではなく、原文の手順に沿います
- 過去の対応を参考にする … 記録の日付が古ければ、その後に構成が変わっていないかを疑います
- 初動を決めてスレッドに書く … 待つ/対応する/上位を起こすを当番が決めます
- 回答を評価する … 役に立った/一部/外れの3択を選びます
3番目を軽く見ないでください。 2年前の記録で「待てば戻った」アラートが、構成を変えたあとも同じとは限りません。記録の日付を回答に必ず出させているのは、このためです。
目標は、1件6分です。 回答と手順書を読んで初動を決めるまでで、探す時間をなくし、読む時間と判断の時間だけを残します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 説明文に手順書の番号が無い | サービス名で検索する。lookup に service_search を残し、月次で番号を付ける |
| 関係の薄い内容しか見つからない | 回答を作らず理由が返る。「該当する手順書なし」と上位の連絡先を投稿 |
| 同じ障害の続報が何度も届く | 障害の識別子で既存のスレッドへ追記し、検索しない |
| 復旧の通知が届く | スレッドに「復旧」と追記するだけにする |
| アラートが一度に多数鳴る | サービスごとに1つにまとめ、最初の1件だけ検索する |
| 出典が廃止の手順書だけ | 手順を表示せず、管理表の担当者に翌朝知らせる |
| 手順書と記録が食い違う | 両方を表示し、翌朝の確認の一覧に載せる |
| 検索の呼び出しが失敗する | 「回答を作れませんでした」と投稿する。アラート自体は通常の経路で届いている |
| 中継プログラムが止まる | 当番への通常の通知は影響を受けない。翌朝に未処理の通知を確かめる |
5行目は、大きな障害のときに効きます。 1つの原因で十数個のアラートが同時に鳴ると、それぞれに回答を付けたくなりますが、当番が最初に知りたいのは「どこから見るか」だけです。 同じサービスのものはまとめ、他は件数だけを示します。
記録を残す
- アラートの通知のJSONの全文と、受け取った日時
- 中継プログラムが組み立てた検索の文と、使った絞り込みの式
- answer メソッドの応答の全文(回答、出典、回答しなかった理由)
- チャットに投稿した内容と、当番が付けた評価
- 当番がスレッドに書いた初動の判断
- そのとき参照した手順書の版と、現行/廃止の状態
最後の行は、振り返りのときに効きます。 障害の振り返りで「なぜその手順で動いたか」を確かめるとき、手順書がその後に直されていると、当時の回答の根拠が分かりません。
04実装レベルの3段階
最小構成は夜間には使えません。 手順書が引けるかを確かめるための段階です。 半自動化で、1件15分が9分程度になります。 探す時間は縮みますが、当番がアラートの文面を貼り直す手間と、サービス名で検索した結果を見比べる時間が残ります。本格構成で6分になり、この段階が本記事の想定です。 差が大きいのは、手順書の番号で直接引けるようになり、外れが減るからです。 段階を飛ばさないでください。 半自動化の検索の記録を1か月見ると、当番がどの言葉で探しているかが分かります。それをもとに手順書の題名とポリシーの説明文を直してから本格構成に進むほうが、外れが少なくなります。
05工数削減シミュレーション
導入後 240件 × 6分 ÷ 60 = 24 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 自社のWebサービスや業務システムを24時間動かしており、夜間・休日は数名の当番が交代で監視アラートを受けているIT・SaaS、EC、金融、物流の会社。運用手順書(ランブック)と障害対応の振り返りの記録が文書として残っているが、数が増えて当番がその場で探し当てられない場合。当番の経験の差で、同じアラートへの初動がばらついている場合。監視に Google Cloud の Cloud Monitoring を使っているか、監視の通知を Webhook や Pub/Sub で受けられる場合。
- 運用手順書がほとんど無く、障害対応の記録も残っていない場合(探す先が無いので、まず手順書を書くのが先です)。夜間に鳴るアラートが月に数件で、当番が全部を覚えていられる場合。アラートを受けたら自動で再起動・切り替えまで行う仕組みをAIに作らせたい場合(この構成は手順を探して示すだけで、操作は当番が行います)。障害対応の記録を社外のクラウドに置くことが社内規程で認められていない場合。
07最小構成で試す方法
- 先月、夜間・休日に鳴ったアラートから20件を選ぶ(手順書が見つからなかったものを数件入れる)
- そのとき当番が何を見て、どう判断したかを本人に聞いて残す
- 該当しそうなサービスの手順書と振り返りの記録を、手元のAIサービスに資料として読み込ませる
- アラートの文面を貼り、「添付の手順書と記録だけを根拠に、該当する手順書の名前、最初に確かめること、過去の同じアラートでの対応を、出典の文書名を付けて答えてください。手順書に無い操作は書かないでください」と指示する
- 出てきた手順書と、当時の当番が実際に開いた手順書を突き合わせる
| 出てきた内容 | 判断 |
|---|---|
| 当番が開いたのと同じ手順書が出た | データストアの構築に進む |
| 記録の応急処置を手順として書いた | 指示の書き方で直る。構成は有効 |
| 該当する手順書が出ない件数が多い | 手順書の整備が先。 検索の問題ではない |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 記録の応急処置が手順として返る | 手順は手順書だけ、目安は記録だけと指示し、出典の種類を中継プログラムで検査する |
| 廃止の手順書が回答に使われる | status を索引可能にし、status: ANY("current") で絞り込む |
| 手順書の番号がポリシーに無い | ポリシーのラベルに runbook_id を持たせ、説明文の変数で書き出す |
| 断片だけが返り、何の手順か分からない | includeAncestorHeadings を有効にする。作成後には分割を変えられない |
| 一般的な知識で手順を補う | 検索結果の文書だけで答えるよう指示し、出典の無い文を表示しない |
| 続報のたびに回答が投稿される | 障害の識別子でスレッドにまとめる |
| Webhook で受けようとして社外に開く | Webhook は公開のエンドポイントのみ。 Pub/Sub で受ける |
| 手順書にパスワードが書かれている | 取り込む前に消し、秘密情報の管理の仕組みを指す書き方にする |
| 定期取り込みで権限が反映されない | このデータストアには運用チームの文書だけを入れる |
| 古い記録の判断を今も正しいと思う | 記録の日付を必ず表示する |
| 自動復旧まで作りたくなる | 作らない。 操作は当番が手順書で行う |
上の2行が、この構成の失敗のほとんどです。 どちらも正しくない手順が正しい手順の顔をして届く失敗で、出典の種類と状態を中継プログラムの規則で検査しているかどうかで、夜間に使えるかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: システムの構成と弱点が分かる運用手順書、障害の経緯と原因が書かれた振り返りの記録、アラートの通知に含まれるホスト名やリソースのラベルです。攻撃する側から見れば、最も欲しい情報の一つです。
- データストアを使える人を運用チームに限る … 手順書は社内でも限られた人が見るものです。検索画面と中継プログラムの権限を、運用チームの外へ広げないでください
- 認証情報を取り込まない … 手順書と記録からパスワード、トークン、接続文字列を除いてから取り込みます。回答の文に出てくると、チャットの履歴に残ります
- 顧客と個人の情報を取り込まない … 振り返りに書かれた顧客企業名や問い合わせの文面は、伏せてから入れます
- 中継プログラムに書き込みの権限を与えない … 監視、サーバー、設定のどれにも書き込めない権限で動かします
- 通知の受け口を社外に開かない … Pub/Sub で受け、公開のエンドポイントを作りません
- 回答は判断を代替しない … 待つか、対応するか、誰を起こすかは当番と運用チームの責任者が決めます。この構成が出すのは、手順書と過去の記録の場所と要点だけです
誤りが起きた場合のリスクは、誤った手順で操作することと、対応すべきアラートを待ってしまうことの2つです。 前者は記録の応急処置や廃止の手順書が手順として届くと起き、後者は古い記録の「待てば戻った」を今も正しいと読むと起きます。どちらも出典の種類と日付で防ぐので、そこは規則で守ります。
10まず何から始めるか
1週目:手順書の現行/廃止を付ける
管理表に手順書の一覧を作り、現行か廃止かと、対象のサービスを付けます。 350本を一度に終える必要はありません。夜間に鳴る回数の多い上位30のアラートに関係する手順書から始めます。
2週目:20件で試す
先月の夜間のアラートから20件を選び、手元のAIサービスに手順書と記録を読み込ませて聞きます。記録の応急処置を手順として書いていないかを最優先で見ます。
3週目:アラートポリシーに手順書の番号を持たせる
上位30のポリシーに runbook_id と service のラベルを付け、説明文で書き出します。この時点で、当番への通常の通知にも手順書の番号が載り、AIが無くても探す時間が縮みます。
4週目:データストアを作る
手順書と振り返りの記録から認証情報と個人・顧客の情報を除き、分割と見出しの設定を決めてデータストアを作ります。運用チームが検索画面で使えるようにし、日中だけで試します。
2か月目: 中継プログラムを作り、日中のアラートに回答を付けます。当番の評価を毎週数えます。3か月目以降: 夜間・休日に広げ、1件15分が何分になったかを実測します。評価が「外れ」のポリシーから手順書と説明文を直し、番号で引ける割合が上位30のポリシーでそろった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
answer メソッドが検索結果から回答を作り、複雑な質問を分けて検索すること。includeCitations で回答の文ごとに出典を返すこと。ignoreAdversarialQuery/ignoreNonAnswerSeekingQuery/ignoreLowRelevantContent で回答を作らず answerSkippedReasons を返すこと。maxReturnResults が既定10・最大25、filter、searchResultMode に DOCUMENTS/CHUNKS、preamble で指示を与えられること。Agent Search(旧 Vertex AI Search)と案内されていること | Google Cloud: Get answers and follow-ups | 2026-10-05 |
デジタル/OCR/レイアウトの3つのパーサー、OCR パーサーが PDF の先頭500ページまでであること、レイアウトパーサーが表・見出しを検出し HTML・PDF・DOCX・PPTX・XLSX に対応すること。分割の chunkSize が100〜500、includeAncestorHeadings で題名と各階層の見出しを付けられること、分割はデータストアの作成後に切り替えられないこと | Google Cloud: Parse and chunk documents | 2026-10-05 |
メタデータでの絞り込みに ANY()、比較の演算子、AND/OR/NOT を使えること、項目を索引可能にする必要があること | Google Cloud: Filter search for structured or unstructured data | 2026-10-05 |
Cloud Storage からの取り込みで、JSONL に id、structData/jsonData、content.mimeType、content.uri を書く形式。定期的な取り込みが1日・3日・5日ごとで、元のデータの権限の制御が反映されないこと。Vertex AI Search が Agent Search へ改称中であること | Google Cloud: Create a search data store | 2026-10-05 |
| 通知の送り先にメール、モバイルアプリ、PagerDuty、SMS、Slack、Webhook、Pub/Sub、Google Chat があること。Webhook が公開のエンドポイントのみに対応すること。Pub/Sub にバージョン1.2のJSONで障害・リソース・指標・ポリシーの情報が送られること | Google Cloud: Notification channels | 2026-10-05 |
アラートポリシーの説明文(件名255文字まで、本文は Markdown と変数に対応、リンクは最大3つ)と、${policy.display_name}/${condition.display_name}/${resource.label.KEY}/${policy.user_label.KEY} などの変数 | Google Cloud: Annotate notifications with user-defined documentation | 2026-10-05 |
待つか、対応するか、誰を起こすかは、当番と運用チームの責任者が判断してください。 本記事は Google Cloud の公開ドキュメントで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0414)についてのご相談はこちらから。
