Azure Automation にて特定期間のジョブの実行時間を取得する

こんにちは Azure サポート チームの村田です。   Azure Automation においては昨年価格体系が変更されました 具体的には以下のように以前の Free、Basic という概念がなくなり、以下のように統合された価格体系となっております。 ■ 以前の価格体系 Free – 月あたり 500 分の無料時間が付与され、超過した場合はジョブが実行されなくなります。 Basic – 従量課金として、0.23円 / 分 で課金が発生します。   ■ 変更後の価格体系 無償の500分のジョブ実行時間が付与され、超過した分に関しましては、 0.23円 / 分 で課金が発生します。   <参照情報> Automation の価格 https://azure.microsoft.com/ja-jp/pricing/details/automation/ 以前は Basic プランの場合、最初の1分から課金対象となっていましたが、 新しいプランでは、必ず 月あたり 500 分の無料ジョブ実行時間がつくので プラン的にはお得になってますね。 しかし、この価格体系の変更に伴い、Automation アカウントの画面内から、 月のジョブの実行時間の累計を表示する項目が消えてしまいました。 したがいまして、今どの程度ジョブの実行時間を消費しているのかわからないとご質問をいただく場合がございます。 そんな場合に備え、今回はローカルから PowerShell を実行する事で、特定の期間のジョブの実行時間を 取得するスクリプトをご案内します。 日別にジョブ実行時間が取得できるため、特定の日時のみジョブの実行時間がとても長い際などには、 トラブルシューティングにも便利ですので是非ご利用ください。…


Azure Automation と Log Analytics の連携設定

こんにちは。Azure サポート チームの村田です。   Azure Automation においては、Runbook において、様々なスクリプトを実行することが可能となっており、Azure プラットフォームにおいて、VM の自動起動など様々な用途で利用可能です。今回は Automation のジョブの実行結果をステータスに併せてより効率的に確認するため、Log Analytics と連携する方法をご案内します。 Automation においてはジョブのステータスは完了となっていますが、内部的にはエラーが出力されているケースがまれに存在します。そのような場合に一つ一つのジョブの確認していくのはあまり効率的とは言えないですしとても運用の観点ではとても手間のかかる作業ですよね。 今回ご案内する方法により、ジョブの実行結果の成功、失敗のステータスや、エラーの出力をトリガーにアラートのメールを送付する、Webhook により Automation のスクリプトをキックするなど、Log Analytics の豊富な機能を利用して Automation の運用を管理することが可能となります。 本ブログによってご説明する内容は以下の2点です。 ======================================================== Azure Automation と Log Analytics を連携するための構成設定 Log Analytics における、Automation のジョブの実行結果によるアラート メール送信設定例 ======================================================== <参照情報> https://docs.microsoft.com/ja-jp/azure/automation/automation-manage-send-joblogs-log-analytics 上記の情報は OMS ワークスペース のアップグレードが行われる前の情報となり、 クエリの記述方法などに差異がございますので、最新の環境にて検証を行っております、 以下の内容をご参照いただければ幸いです。   ■ 要件 1) 2016 年 11 月以降のリリースの Azure…


Azure Automation におけるモジュールの更新について

2017/11/11 更新 – 本日午後に Azure Automation モジュールの最新版への更新が改修のスケジュール通り、正常に行えるよう復旧致しました。 こんにちは。Azure サポートの村田です。 11月8日に Azure PowerShell モジュールの最新版がリリースされました。 上記のリリースに伴い、Azure Automation におきましては現在、下図のようにモジュールの更新ボタンがグレイアウトしてしまい、Automation アカウント内の Azure モジュールの更新作業が行えない状況となっております。     本事象につきましては現在開発が修正作業を行っており、11月11日の午後に修正が完了する予定となっております。 ご利用のユーザー様には大変ご迷惑をおかけいたしますが、 復旧次第本記事を更新予定ですので今しばらくお待ちいただくようお願い申し上げます。 本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。


Azure Automation: Runbook のスケジュールが編集出来るようになりました

こんにちは、Azure サポートチームの山口です。 Azure Automation をお使いの皆様へ、アップデートのお知らせです。 更新内容 この度、Azure Automation において、Runbook のスケジュールが編集出来るようになりました。 以前までは、Runbook のスケジュールに対して行えるアクションは「停止」または「削除」だけでした。 そのため、スケジュールを再設定したい時は、既存のスケジュールを一旦削除してから同じ Runbook に対して新たなスケジュールを設定する必要がありましたが、今回のアップデートにより、このような手間を掛けることなくスケジュールだけを変更することが可能となりました。 参考: Azure Automation の Runbook をスケジュール設定する https://docs.microsoft.com/ja-jp/azure/automation/automation-schedules スケジュールの編集方法 Azure ポータルにログインして、[Automation アカウント] ブレードから対象の Automation アカウントを選択します。 ハブから [スケジュール] を選び、編集するスケジュールを選択します。 以下のような画面になるので、スケジュールの再設定を行った後、[保存] ボタンを押すと編集した内容が反映されます。


Azure Automation : Runbook Webhook を使って仮想マシンの自動垂直スケール(スケールアップ / ダウン)

こんにちは、Azure サポートチームの山口です。 今回は Azure 仮想マシンのインスタンス サイズを垂直スケール(スケールアップ / スケールダウン)するための Runbook をご紹介したいと思います。 はじめに 突然ですが、お使いの Azure 仮想マシンは、トラフィックが少なくなる夜間や休日などの間、無駄に強力なパワーで稼働していませんか? 同じインスタンス サイズで静的に固定された仮想マシンは、ワークロードが少ない時間帯が来るとコンピューティング リソースが余ってしまいます。それだけでなく、ワークロードが増加する時間帯にはリソースが枯渇し、サーバーダウンにつながる恐れもあります。 この手の問題に対処する一番シンプルな方法は、想定される最大の負荷に耐えられるインスタンス サイズにあらかじめ設定しておくことですが、これは費用の観点から見るとベストな方法といえないこともあります。なぜなら、耐えられる負荷の量が大きくなると、掛かるコストも高くなるからです。 「負荷がかかる時間になれば自動的にスケールアップし、負荷が少ない時にはスケールダウンする」といったインスタンス サイズの動的スケーリングは、コスト最適化を実現する上では必ず考慮すべき対策のひとつです。 与えられたワークロードに必要な分のコンピューティング リソースだけを割り当て続けることが出来れば、必要最低限の出費だけで済みますよね。:) この記事では、そんな動的スケーリングを実現するための Runbook を紹介したいと思います! スケールアップ / ダウン後のインスタンス サイズの取得 まずは、インスタンス サイズを与えると、スケールアップ(スケールダウン)した後のインスタンス サイズを返す PowerShell の関数から紹介します。 後のセクションでこの関数を使った Runbook を説明しますので、「とにかく速く動的な垂直スケールを実現したい!」という方はこのセクションを飛ばして頂いても構いません。 関数中のデフォルトのスケール セット $Default_VerticalScaleTable は、本記事執筆時における東日本 / 西日本リージョンで利用可能なすべてのインスタンス サイズに対応しています。しかしながら、インスタンス サイズ名や利用可能なインスタンス サイズは、今後変更される可能性もございますのでご注意ください。 PowerShell スクリプト Function Get-UpOrDownScaledVmSize { Param ( [Parameter(Mandatory…


Azure Automation : try / catch を利用した Runbook のリトライ処理

こんにちは、Azure サポートチームの山口です。 本記事では、Azure Automation の PowerShell Runbook に、try / catch 構文を利用したリトライ処理を実装する方法を紹介したいと思います。 はじめに 『複数の仮想マシンを一斉起動する Runbook をスケジュールしていて、時間になって確認してみると一台の仮想マシンだけ起動に失敗していた、、、』といったお問い合わせを最近多く頂きます。Azure にアクセスするタイミングによっては、コマンドレットやパラメータの指定は正しいのに、Azure 内部が起因となるエラーが偶に生じてしまいます。このような不運なエラーが起きる原因は、排他制御など様々な要因がありますが、Azure Automation の観点から可用性を高めるためには、Runbook 内でのリトライ処理が非常に有効となります。本記事で紹介するリトライ処理を実装すると、成功するまで Runbook を繰り返し実行するので、上記のようなエラーを回避することが出来ます。 リトライ処理の実装には、PowerShell v2.0 からサポートされている try / catch 構文を使用します。try / catch (/ finally) に関する詳細は、MS 公式ブログ An Introduction to Error Handling in PowerShell (英語) などのサイトを参考にしていただけたらと思います。 リトライ処理のテンプレート 早速、リトライ処理を実現する PowerShell スクリプトのテンプレートを紹介したいと思います。 このスクリプトは、Azure Automation での PowerShell Runbook 環境だけでなく、通常の PowerShell…


Azure Automation: PowerShell Runbook で Azure VM の起動 / 停止(割り当て解除)

こんにちは、Azure サポートチームの山口です。 今回は Azure Automation を使用して、Azure 仮想マシンを起動 / 停止(割り当て解除)する PowerShell Runbook を紹介したいと思います。 本記事は、主にスクリプトコードの紹介となります。ポータル上での Runbook の作成方法やスケジュール設定については、以下の記事を参考にしてください。 Azure Automation で VM を自動停止する https://blogs.technet.microsoft.com/jpaztech/2017/09/01/azure-automation-%E3%81%A7-vm-%E3%82%92%E8%87%AA%E5%8B%95%E5%81%9C%E6%AD%A2%E3%81%99%E3%82%8B/ Runbook 以下は、Azure 仮想マシンを起動 / 停止(割り当て解除)する PowerShell Runbook のスクリプトコードです。 PowerShell Runbook Param ( [Parameter(Mandatory=$false)] [String] $SubscriptionNameOrId, [Parameter(Mandatory=$false)] [String] $ResourceGroupName, [Parameter(Mandatory=$false)] [String] $VMName, [Parameter(Mandatory=$false)] [Bool] $StartVM = $true ) Function Get-AzureRmVMPowerState { Param ( [Parameter(Mandatory=$true)] [Object]…


Azure Automation で VM を自動停止する

こんにちは、Azure サポートチームの山口です。 今日は、Azure Automation を使用して、サブスクリプション内の Azure VM を自動停止する Runbook の実装方法をご紹介させていただきます。   はじめに この記事は、4つのセクションで構成されています。 Automation アカウントの作成 Azure Automation 機能を使用するのに必須である Automation アカウントを作成する手順を紹介します。 Azure モジュールの更新 Runbook を実行する環境を構築します。 Azure モジュールを最新版に更新していないと、PowerShell 上では正常に動作するスクリプトコードが、Runbook として実行した場合にエラーを返す可能性があります。 もしそのような状況に陥っているのであれば、このセクションを見直してみてください。 Runbook の作成 / テスト Azure VM を自動停止する PowerShell スクリプトの Runbook を作成して、それが正しく動くかテストします。 今回は、動作する PowerShell スクリプトを用意していますので、Azure Automation が簡単に実装できることをぜひ体感してみてください。 スケジュールの設定 作成した Runbook を定期的に実行するためのスケジュール設定を行います。 このスケジュール機能によって、例えば、毎日退社の時間になれば全 VM を自動停止させるような構成が作成できます。   §1: Automation…