LoginSignup
2
2

IBM Cloudからの通知を生成AIを使ってわかりやすく - (1)通知の仕様編

Last updated at Posted at 2024-03-04

はじめに

※こちらはシリーズとなっており、下記ラインナップの1つ目になります。
「IBM Cloudからの通知を生成AIを使ってわかりやすく」シリーズ

AWSやAzureといったCloudベンダーが利用者に通知するメンテナスや障害に関する通知は日本語で受け取ることが可能なようですが、IBM Cloudはいつまでも英語で送られてきます。英語が読めれば良いとか、Google翻訳にかければ良いとか面倒なので何とかしたい。
そんな折に出来てきたのがChatGPTといった生成AI、これを活用して何とかできないか考えました。ただ、社内の規定でChatGPTの利用は禁止されているため、利用が許可されている watsonx.ai を使って、できる限り何とかしてみたいと思います。

本稿執筆時点でも微調整を繰り返している段階のため、参考として頂けると幸いです

完成形は添付のように、IBM Cloudから送られてきた英語の通知に対して、その内容ととるべきアクションがわかるように生成AIで文章を作成してSlackに通知させています。
image.png

そもそもIBM Cloudの通知設定について

IBM Cloudの通知設定は下記から設定可能です。
image.png

遷移した先のページ下部に、配信先リストの設定が可能です。
image.png
こちら、配信先のメールアドレス設定以外にWebhookの設定を最大10個まで指定できます。
設定画面を見ると、正確には以下が通知先として設定可能です。

  • Email
  • Webhook
  • Slack
  • Microsoft Teams
  • Event Notifications

image.png

SlackやMicrosoft Teamsは、通知内容をそのまま送ってしまうだけなので、わかりやすくはならないです。Event Notifications はこういった通知情報を一元管理するサービスに転送することもできますが、今回は対象外ですね。自分でアレンジしたいのでWebhook一択です。

届いたメンテナンス情報をわかりやすく処理するWebhookを作成できれば、良いということになりましたので早速作っていきたいところですが、まずIBM Cloudから送られてくる通知内容を把握していきます。

IBM Cloudから受け取る通知の種類は?

IBM CloudのDocsに従うと、下記のタイプの通知があります。

種類 説明
Planned maintenance IBM Cloud プラットフォームおよびインフラストラクチャーの運用を快適な状況で維持するために必要な定期保守。
Security bulletins セキュリティーの脆弱性および必要なアクションに関するお知らせ。
Announcements IBM Cloud のインフラストラクチャーの最新トピックおよびサービスの更新情報。
Incidents 障害発生または機能制限の原因となる可能性がある、予期されない、影響の大きなイベント。
Account IBM Cloud プラットフォームにユーザーを招待するための招待 E メールまたはコンソール通知。

ただ、これ以外にもツールを少し開発して分かったのですが、通知内容がありました。

種類 説明
Billing and Usage 利用料金に対して閾値を設定している場合、その情報が通知されます。
Resource activity 例えばDirect LinkやTransit Gatewayで外部からの接続において承認/拒否の実施が必要な場合に通知されます。

IBM Cloudから通知にWebhookを設定した場合に送られる内容は?

こんな感じのJSONがWebhookに渡されます

{
  "account_id":"アカウントID",
  "body":[
    {
      "content-type":"text/html",
      "language":"en",
      "text":"通知本文"
    }
  ],
  "category":"Maintenance",
  "endTime":1709442000,
  "severity":"Medium Impact",
  "sourceID":"159118814",
  "startTime":1709420400,
  "state":"Planned",
  "title":[
    {
      "language":"en",
      "text":"通知タイトル"
    }
  ]
}

本文とタイトルの部分に languageがありますが、あなた英語しか送らないデスヨネ・・・

JSON Key 必須 説明
accoount_id 数値 アカウント識別番号
body 配列 通知本文関連情報
 content-type テキスト text/html固定
 language テキスト en固定
 text テキスト 通知本文
category テキスト 把握している範囲で Maintenance Announcement Incident Security Bulletin Account Billing and Usage Resource activityのいずれか
endTime 数値 終了時刻情報(UTC) Unixtime表記
Maintenanceのみのはず
severity テキスト 重要度の記載、MaintenanceIncidentの時に記載
Maintenanceの場合:High/Medium/Low Impactの記載
Incidentの場合 : Severity 1/2/3の記載
sourceID テキスト 送信されたイベントIDっぽい
startTime 数値 開始時刻情報(UTC) Unixtime表記
Maintenance Incident Security Bulletin Resource activityは必須で設定される
Announcementはサービスによっては設定される
state テキスト 状況の記載、MaintenanceIncidentの時に記載
Maintenanceの場合:Planned/In progress/Completedの記載
Incidentの場合 : Investigating/Resolvedの記載
title 配列 タイトル情報
 language テキスト en固定
 text テキスト 通知タイトル
updateTime 数値 更新時刻情報(UTC) Unixtime表記
Security Bulletinは必須で設定される
Maintenance Announcement Incidentは設定されるケースと設定されないケースが分かれる

これに対応するWebhook側アプリを作れば良いですね。

IBM Cloudの通知内容をWebhookする際のオプション

添付は通知先の設定でWebhookを指定した場合の画面になります。
image.png
こちらは単純にURLを指定するだけでなく、Add secure headerを指定することで、Bearer認証といったリクエストを投げることも可能です。Webhook側のアプリは都合インターネット上に公開する必要があるため、第3者に勝手に利用されないよう簡単なBearer認証を組み込んでおきたいですね。
image.png

さいごに

今回はIBM Cloudの通知を生成AIを使ってわかりやすくする前に、IBM Cloud通知の配信設定や、その通知の種類について紹介させて頂きました。
次回はWebhookアプリコーディング編を紹介します。

シリーズのリンク

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2