LoginSignup
3
7

More than 5 years have passed since last update.

Azure AutomationのエラーをLog Analyticsで検知する

Posted at

Automationのエラーを検知する方法です。
Automationのジョブ自体が失敗した場合はポータルからひと目で分かりますが、ジョブは正常終了しているものの、内部的にエラーメッセージを吐いているケースがあります。
その場合は、ジョブを1つずつ選択して、確認していかなければならず、非常に手間の掛かる作業です。
Log Analyticsを活用して検知させてみます。

OMSワークスペース作成

  • [新規]からLog Analyticsを選択して新規作成します
    image.png

  • 任意の値を入力し、[OK]を選択します
    image.png

  • 作成されたリソースに移動し、OMSポータルを選択します
    image.png

  • OMSポータル画面が表示されればOKです
    image.png

Cloud Shell起動

Cloud Shell PowerShellを選択します。手順は公式ページ参照。
Cloud Shell クイックスタート

OMSワークスペースとAutomationアカウントの統合

  • Cloud Shellで以下のコマンドを実行し、アラート検知したいAutomationアカウントのリソースIDを取得します
    出力結果の、ResourceIdを保存しておきます
Find-AzureRmResource -ResourceType "Microsoft.Automation/automationAccounts"
  • OMSワークスペースのリソースIDを取得します
    出力結果の、ResourceIdを保存しておきます
Find-AzureRmResource -ResourceType "Microsoft.OperationalInsights/workspaces"
  • OMSとAutomationを統合します
Set-AzureRmDiagnosticSetting -ResourceId $automationAccountId -WorkspaceId $workspaceId -Enabled $true
  • 結果確認
Get-AzureRmDiagnosticSetting -ResourceId $automationAccountId
  • 以下のようにEnabledがTrueになっていればOKです
Logs
    Category        : JobLogs
    Enabled         : True
    RetentionPolicy
    Enabled : False
    Days    : 0


    Category        : JobStreams
    Enabled         : True
    RetentionPolicy
    Enabled : False
    Days    : 0


    Category        : DscNodeStatus
    Enabled         : True
    RetentionPolicy
    Enabled : False
    Days    : 0
  • Log Analyticsと統合されていないAutomationアカウントの場合は、以下のようにEnabledがFalse表示になります
Logs
    Category        : JobLogs
    Enabled         : False
    RetentionPolicy
    Enabled : False
    Days    : 0


    Category        : JobStreams
    Enabled         : False
    RetentionPolicy
    Enabled : False
    Days    : 0


    Category        : DscNodeStatus
    Enabled         : False
    RetentionPolicy
    Enabled : False
    Days    : 0

ログ確認

  • Automationで何かジョブを実行してみましょう

  • OMSポータルのログ検索ボタンを選択します
    image.png

  • クエリ入力欄に以下のように入力し、検索ボタンをクリックします

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.AUTOMATION"

    image.png

  • 以下のようにAutomation実行ログが表示されたらOKです
    image.png

アラート設定

Job失敗アラート

  • 以下クエリを実行します
AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Suspended")
  • OMSポータルログ検索画面の、アラートをクリックします
    image.png

  • アラートルールを入力していきます。
    時間枠/アラートの頻度については記事の最後に注意点を書きます。
    image.png

  • Slack通知したい場合は、Webhookを以下のように設定します
    image.png

  • カスタムJSONペイロードの設定例

{
    "attachments": [
        {
            "title":"OMS Alerts",
            "fields": [
                {
                    "title": "Alert Rule Name",
                    "value": "#alertrulename"},
                {
                    "title": "Link To SearchResults",
                    "value": "<#linktosearchresults|OMS Search Results>"},
                {
                    "title": "Search Interval",
                    "value": "#searchinterval"},
                {
                    "title": "Threshold Operator",
                    "value": "#thresholdoperator"},
                {
                    "title": "Threshold Value",
                    "value": "#thresholdvalue"}
            ],
            "color": "danger"
        }
    ],
    "username": "Azure OMS Alert",
    "icon_emoji": ":ghost:"
}

Job Streamsエラーアラート

  • ログ検索画面で、以下のクエリを実行します
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error"
| summarize AggregatedValue = count() by JobId_g
  • Job失敗アラートと同様にアラートを設定します

特定のRunbookのみをアラート対象にする場合

  • 以下のクエリを実行し、アラート設定します
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error"
| where RunbookName_s == "[Runbook名]"

アラート通知結果

メール

image.png

Slack

image.png

Log Analyticsのアラート設定(時間枠とアラート頻度について)

時間枠:過去何分以内の結果を対象とするか
アラート頻度:アラートを確認する頻度

AutomationからLog Analyticsへの転送間隔については定義することができません。
(何度か試した結果、大体10分以内には転送されていましたが)

で、ここで時間枠とアラート頻度の設定に気を付けないといけないのですが、
例えば、時間枠10分、アラート頻度10分、の設定にしていて、Automationからのログ転送が15分掛かった場合、
10分前のログにしか遡ってくれないため、15分前のエラーログは検知してくれないのです。

なので、アラート頻度を10分より短くしたい場合、時間枠は15分以上に延ばしたほうがよいと思います。

ただ、これも10分以内に転送されると仮定した場合の話しです。
公式だとLog Analyticsへの転送は、SLAが6時間以内になっています。

Log Analyticsの価格

時間枠とアラート頻度は要件に応じて検討する必要があります。

Log Analyticsは本来分析用途なので、リアルタイムでの監視が必要な場合は、Runbook内に自分で確認のロジックを書くしかなさそうです。

3
7
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
3
7