はじめに
皆さんAzureを使っていて、金額が気づかないうちに増えていた、なんていう経験ありませんか。
または、そういったことが怖いから普段使っているTeamsとかSlackに通知を送りたい!なんて思ったことはありませんか。
なんとそれ、Logic Appsを使えばできるんです!
というわけで、今回はLogic AppsでTeams・Slackに予算の通知を送る設定をしていきたいと思います。
概要
1.Logic Appsの作成
2.アクショングループの作成
3.予算アラートの作成
4.通知結果
5.期待した結果にならない場合
1.Logic Appsの作成
それではまずLogic Appsの作成からやっていきましょう。
Azureポータルから検索で「Logic Apps」、または「ロジックアプリ」と入力するとLogic Appsが出てきます。
Logic Appsを選択し、Logic Appsを作成していきます。
私はこのような形で作成しました。
プランは実行分のみ払う「消費」とし、ゾーン冗長は必要ないため、無効としておりますが、
これらの設定はどちらにしても今回影響はないため、とりあえずLogic Appsを作成します。
Logic Appsを作成したら、Logic Appsの 開発ツール>ロジックアプリデザイナーで「ロジックアプリデザイナー」を開きます。
すると、トリガー(どの行動を最初に行うと、このフローが実施されるのか)を選択する画面に遷移します。
ここで「HTTP要求の受信時」を選択します。
すると、下の画面に遷移するので、「要求本文のJSONスキーマ」の欄に以下の内容を入力します。
{“properties”: {“data”: {“properties”: {“Budget”: {“type”: “string”},“BudgetCreator”: {“type”: “string”},“BudgetName”: {“type”: “string”},“BudgetStartDate”: {“type”: “string”},“BudgetType”: {“type”: “string”},“EvaluatedAmount”: {“type”: “string”},“NotificationThresholdAmount”: {“type”: “string”},“ResourceGroup”: {“type”: “string”},“SpendingAmount”: {“type”: “string”},“SubscriptionId”: {“type”: “string”},“SubscriptionName”: {“type”: “string”},“Unit”: {“type”: “string”}},“type”: “object”},“schemaId”: {“type”: “string”}},“type”: “object”}
入力後、このような画面になっています。
次に、「新しいステップ」を押して、フローの続きを作成していきます。
ここではTeamsとSlackに通知を送信したいため、どちらも追加していきますが、
まずTeamsから追加しようと思います。
新しいステップを押したら、検索にて「Microsoft Teams」と入力します。
アイコンでは表示されませんが、「アクション」の欄を下にずっとスクロールすると、Teamsのアイコンが見えてきます。
今回はTeamsに通知をしたいため、その中の「チャットまたはチャネルでメッセージを投稿する」を選択します。
初めての場合は、Teamsへのサインインを求められるので、通知したいTeamsのアカウントでサインインします。
サインインすると、フローの中にTeamsアイコンのアクションが追加されます。
アクションの中の投稿者は「フローボット」、
投稿先は「Chat with Flow bot」とします。
ここで、チャンネルに投稿してほしい場合は「Channel」を選択します。
今回は「Chat with Flow bot」を選択して進みます。
「Chat with Flow bot」を選択すると、新たに「Recipient」、「Message」の欄が出てきます。
Recipientでは、だれが通知(チャット)を受け取るかなので、通知を受ける人のアカウントのメールアドレスを入力します。
Messageは通知内容となりますので、好きなように書き、予算が超えている旨を通知する内容にします。
ちなみにメッセージ内の緑色で表示されている、例えば「SubscriptionID」などは、HTTP要求の受信時から情報を取得したもので、
メッセージ内をクリックすると右にコメントのような形で出現する[動的なコンテンツ]内の、
[manual]の右にある「もっと見る」を押すと出てきますので、それぞれ取得したい情報をメッセージ内に組み込むことが可能です。
それでは次にSlackを追加していきます。
Teamsの下の+をクリックすると、先ほどのTeamsを開いたときのように操作の選択画面が出てきます。
ここで「Slack」と記入すると、今度はSlackのアイコンが表示されます。
Slackのアイコンを選択し、Slackにも通知が欲しいので、アクション内の「メッセージの投稿(V2)」を選択します。
するとSlackでもサインインを求められるので、通知を受けたいアカウントでサインインをします。
サインインしたら、チャネル名、メッセージテキストを、Teamsと同じ要領で設定します。
以上で、Logic Appsの設定は終了です。
左上の保存を押して、ホームに戻ります。
無料でAzure環境を分析!
コスト削減案と想定削減金額をレポートします。
毎月先着3社様限定キャンペーン実施中。
ご興味ある方は左の画像リンクから是非お申し込みください。
2.アクショングループの作成
それでは次にアクショングループの作成にとりかかりましょう。
ホーム>モニター>アラート>アクショングループ でアクショングループのページに遷移します。
アクショングループの画面に遷移したら、左上の「作成」から新規にアクショングループを作成していきます。
[基本]タブではLogicAppsを作成したリソースグループなどを選択しました。
[通知]タブは特に入力せず、次の[アクション]タブへ進みます。
[アクション]タブではまず「アクションタイプ」欄の選択で「ロジックアプリ」を選びます。
ロジックアプリを選択すると、右側にポップが表示されます。
このポップで、先ほどLogicAppsを作成したリソースグループを選び、ロジックアプリの選択で、先ほど作成したものを選びます。
また、最後に「共通アラートスキーマを有効にします。」というものがありますが、ここは必ずいいえにしてください。
というのも、共通アラートスキーマを使用できたらいいのですが、予算アラートに関しては、非共通アラートスキーマを使用するしかないため、
ここではいいえを選択します。
(ちなみに共通アラートスキーマを選択しても、使用しているJSONが非共通アラートスキーマのため、情報が取得できません。)
「OK」を押下すると、さきほどのアクションタイプ以外の欄も埋まっているかと思います。
ここまでできたら、作成をします。
アクショングループができたら、アクショングループ内の上にある「テスト」を選択し、テストを行ってみましょう。
テストでは「コスト予算アラート」にし、Testを押します。
うまくいくと、このように情報を取得できている通知(サンプル)が届きます。
ただ、ここでどれか一つの、例えば「現在の金額」などが情報として取得できていなかった場合でも、次に進みましょう。
予算アラートを作成したときに、出力結果を見れば、どの値を取得すればほしい情報が得られるかがわかります。
3.予算アラートの作成
それでは最後に予算アラートを作成していきます。
ホーム>コストの管理と請求>Cost Management>予算
で予算のページに行き、先ほどと同様に左上の追加、または作成から予算アラートを作成していきます。
予算の作成画面は、好きに選択し、予算額の閾値などもアラートを受けたい金額で設定します。
テスト用に低い金額にしてもいいかもしれません。
大事なのは次の「通知の設定」になります。
警告条件内を、まずは予測か実際か選び、閾値の何パーセントの金額でアラートを通知するか記載します。
そして、右の「アクショングループ」において先ほど作成したアクショングループを選択します。
警告条件の下にあるメールについては、必要ならばいれて、特に必要ないならいれなくても大丈夫です。
今回のLogicAppsには関係しません。言語も既定で日本語になっているなら特に変更の必要もありません。
ここまでできたら、予算アラートを作成します。
予算アラートについては、以下で紹介しているので、説明が足りないなどありましたら、参考にしてください。
Azureコスト削減の必須機能、Azureコストアラートとは?設定方法や効果を解説! – Cloud Steady | パーソルプロセス&テクノロジー株式会社
4.通知結果
予算アラートを作成し、そのアラートの閾値を超えたら、8時間以内にTeams、Slackに通知がいきます。
<Teams>
<Slack>
5.期待した結果にならない場合
ここまでやってきて、「あれ、情報がうまくTeamsに載らない」などがあった場合、出力結果をみることをおすすめします。
自分が作成したLogicAppsを開くと、下に「実行の履歴」というものがあります。
そこの自分がうまくいかなかった開始時刻での実行結果のURLを押します。
すると、そのLogicAppsの実行履歴を確認できますので、「HTTP要求の受信時」内で、「未加工出力の表示」を押します。
こちら押すと「出力」の画面に移りますので、「body」配下を確認し、取得できていない値、または同じ情報だけどこれは取得できている
などがあるかと思いますので、Teamsなどにメッセージとして置く情報を変えたりしましょう。
(下記例はアクショングループのテスト結果の出力)
また、今回私は現在の金額として「EvaluatedAmount」を使用していますが、「SpendingAmount」なら情報を取得できる方もいるかもしれません。
それぞれ出力結果を確認し、どの情報ならメッセージに載せられるのか判断していただければと思います。
おわりに
いかがだったでしょうか。
うまく通知できた場合、AzureのCost Managementをいちいち確認しなくても、
普段使っているTeamsやSlackに予算の閾値を超えたら通知が来るようになれば、とても楽ですし、使いすぎた!なんてこともなくなるかと思います。