1.はじめに
本記事では、Stream Analyticsジョブを自動起動/停止する方法をご紹介します。Stream Analyticsジョブは従量課金のため、利用しない夜間帯などにStream Analyticsジョブを停止することでAzureコストを削減することが可能となります。
(参考)Azure Stream Analyticsについて
2.Automationアカウント設定
Stream Analyticsジョブの自動起動/停止にはAutomationアカウントを使用します。Automationアカウントの作成方法はここでは触れませんが、以下を参考に作成を実施します。
(参考)Automationアカウント作成
Stream Analyticsの共同作成者権限を付与する
AutomationアカウントからStream Analyticsジョブの起動/停止を実行するため、共同作成者の権限を付与する必要があります。
①Stream Analytics ジョブの「アクセス制御 (IAM)」をクリックする。
②「+追加」→「ロールの割り当て」の順にクリックする。
③ロール:特権管理者ロール→共同作成者
メンバーの割り当て先:マネージドID
メンバー:Automationアカウント
を選択し、レビューと割り当てをクリックする。
Runbookを作成する
自動起動用/停止用のRunbookを作成します。
名前 | 種類 | バージョン | |
自動起動用 | Start_StreamAnalytics | Powershell | 7.2 |
自動停止用 | Stop_StreamAnalytics | Powershell | 7.2 |
PowerShell Runbook の編集
作成した起動用/停止用RunbookのPowershellに下表を参考に設定し、保存→公開の順にクリックする。
今回の例では
・サブスクリプション
・リソースグループ
・StreamAnalyticジョブ名
を変数としています。
Powershellスクリプト | |
自動起動用 |
Param(
[string]$subscriptionId,
[string]$resourceGroupName,
[string]$asaJobName
)
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process | Out-Null
# Connect using a Managed Service Identity
try {
$AzureContext = (Connect-AzAccount -Identity).context
}
catch{
Write-Output “There is no system-assigned user identity. Aborting.”;
exit
}
try
{
# job start
Start-AzStreamAnalyticsJob -ResourceGroupName $resourceGroupName -Name $asaJobName
}
catch
{
throw $_.Exception.Message
}
|
自動停止用 |
Param(
[string]$subscriptionId,
[string]$resourceGroupName,
[string]$asaJobName
)
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process | Out-Null
# Connect using a Managed Service Identity
try {
$AzureContext = (Connect-AzAccount -Identity).context
}
catch{
Write-Output “There is no system-assigned user identity. Aborting.”;
exit
}
try
{
# job stop
Stop-AzStreamAnalyticsJob -ResourceGroupName $resourceGroupName -Name $asaJobName
}
catch
{
throw $_.Exception.Message
}
|
Runbookにスケジュールをリンクさせる
自動起動/停止用のRunbookにスケジュールをリンクさせ定期的に実行するようにします。
スケジュールの作成とリンク方法については以下を参照してください。
(参考)Azure Automation のスケジュール管理
3.エラーの監視
2で設定したAutomationアカウントによる自動起動/停止でエラーが発生した際、アラート通知されるように設定しておきます。
Automationアカウントの診断設定
エラーの監視のため、Automationアカウントで診断設定を有効にします。
①Automationアカウントの「診断設定」をクリックする。
②「+診断設定の追加」クリックする。
③診断設定の名前:[診断設定名]
ログ:JobStreamsを選択
宛先:Log Analyticsワークスペースを選択
を選択し、保存をクリックする。
アラート用検索クエリ
自動起動/停止時にエラーが発生した際のアラートルールに適用できる検索クエリの例は以下となります。
■検索クエリ
AzureDiagnostics
| where Category == “JobStreams”
| where StreamType_s == “Error”
| project TimeGenerated, Resource, StreamType_s, ResultDescription
上記の検索クエリーをもとにアラートルールを作成します。
アラートルールの作成手順については以下を参照してください。
(参考)Azure Monitorのアラートルール作成