こんにちは。今日は、Azure Monitorの機能について勉強したことを整理しておこうと思います。
Contents
Azure Monitorとは?
公式ドキュメントの説明は以下ですが、要は「あらゆる場所に存在するシステムのメトリクス・ログといったテレメトリを一ヶ所に収集して、高度で統一的な監視を行えるようにする」ためのサービスです。
Azure Monitor は、クラウドおよびオンプレミス環境の利用統計情報を収集、分析し、それに対応する包括的なソリューションを提供することにより、アプリケーションとサービスの可用性とパフォーマンスを最大化します。 このツールは、ご利用のアプリケーションがどのように実行されているかを把握するのに役立ちます。さらに、このツールにより、そのアプリケーションに影響している問題点およびアプリケーションが依存しているリソースを事前に明らかにしておくことができます。
https://docs.microsoft.com/ja-jp/azure/azure-monitor/overview
公式ドキュメントなどを読んでみて、以下がポイントなのかなと思いました。
- 監視対象リソースからメトリクス情報とログ情報を収集し、可視化から分析、洞察、アクションの実行までを統合的に行えるソリューション
- 収集できる情報は、サーバレベルの情報のみならず、例えばApplication Insightsと統合することによりアプリケーションレベルの情報も収集できたり、幅広いレベルで収集できる
- 収集したデータは上の図のVisualizeやAnalyzeのソリューションを活用して様々な方法で可視化・分析可能
- 収集したデータの分析に基づいて、アラートやオートスケールの発動が可能
- Logic Appsなどの統合パイプラインサービスと組み合わせることで、収集したデータのある条件をトリガーに任意の処理を実行可能
- Azureサービスの監視だけでなく、オンプレ環境のログやメトリクスも収集して一元的な監視が行える
Azure Monitorの価格
下のキャプチャは東日本リージョンの2020年11月時点の価格です。最新の価格体系については以下を確認してください。
https://azure.microsoft.com/ja-jp/pricing/details/monitor/
- 上の説明の通り、Azure MonitorはApplication InsightsやLog Analytics、その他機能の集合体に対するブランド名です。そのため、利用料金も各機能毎に定義されており、その合計として計算されます。
- Log Analyticsは「データの取り込み」と「データ保持」に対して課金が発生する。(下の価格を見ると、インジェストの料金が意外と高い・・・。アプリログなどこちらで出力をコントロールできるログについては、最低限必要なデータに絞り込む設計が重要そうです。
- Application Insightsの価格も、Log Analyticsと同様にデータインジェストとデータ保持に対してかかります。ただし、Application InsightsもLog Analyticsも、上のAzure Monitorのアーキテクチャを見るとわかりますが、メトリクス・ログ情報を貯めている場所は同じなので、Application Insightsを利用している場合、Log Analyticsの料金とダブルで課金されることはない(と思います)。
- メトリクスの収集は無料。カスタムメトリクスを収集する場合は課金が発生。メトリクスを分析する際のクエリに対しては課金が発生。
- 正常性監視は、監視するメトリクスの数で料金が変わる
- アラートは、下記の通り(説明が手抜きになってきた笑)
- 通知料金は以下の通り。(アラートルールの設定と通知は別料金なんですね・・!)
Azure Monitorの機能を一通り触ってみる
さて、ここからはAzure Monitorの機能を実際の画面をみながらイメージアップしていきたいと思います。Azure Monitorの左側のブレードの順に触っていきます。
アクティビティログを確認する
ここでは、テナント横断で全リソースのアクティビティログを確認することができます。
アクティビティログには、ユーザの操作による変更や、Azureサービスの機能から各リソースへの更新が全て記録されます。
アラートを一括管理する
ここでは、各リソースに対して設定したアラートを統合的にモニタリング・管理できます。新たなアラートの作成や、アラート条件の変更といった管理作業も可能です。
この機能に関する詳細はこちらの公式ドキュメントでも確認可能です。
https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/alerts-overview
具体的には、以下の情報に対してアラートを設定可能です。
- メトリックの値
- ログの検索クエリ
- アクティビティ ログのイベント
- 基になっている Azure プラットフォームの正常性
- Web サイトの可用性のテスト
それでは実際の画面です。
発生したアラートはドリルダウンで現在の状況や、アラートルールの確認ができます。
- 重大度は、以下のように定義されています。
- 重大度 0 = 重大
- 重大度 1 = エラー
- 重大度 2 = 警告
- 重大度 3 = 情報
- 重大度 4 = 詳細情報
- 重大度は、アラート作成時に自分で定義可能です。
リソースのメトリックを監視する
メトリックブレードでは、各リソースのメトリックを監視することができます。ここで確認したメトリックを元に新たなアラートを作成したり、ダッシュボードにピン留めして、カスタムダッシュボードの作成、といったアクションに繋げることができます。
さまざまなログを確認する
「ログ」機能は、Log Analyticsとして提供される機能で各リソースのログを確認可能です。ログには、各リソースのHTTP通信ログや、アプリケーションログなどがあります。
ログ検索では、裏側ではLog Analyticsのワークスペース のテーブルに蓄積されたログを参照します。Log Analyticsワークスペース は1つでも複数でも問題ありません。ご参考ではありますが、ワークスペース の設計プラクティスはこちらに説明があります。
https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/design-logs-deployment
クエリは、Kustoという言語で記述する必要がありますが、SQLが分かる方であれば、微妙に構文は異なりますがおおよそ同じ感覚で使えます。
また、このクエリを元にアラートを作成することも可能です。ログに基づくアラートルールを作成する際は、監視するクエリを定義します。この機能により、アプリケーションログで”XXX”が出力されたらアラートを発生させる、といった制御も可能になります。
サービス正常性 (Service Health) を確認する
こちらは、Azureの障害など、Azureのサービス提供に関わる問題の発生状況を確認したり、それに対するアラートを作成したりできます。
例えば、上の画面では、Azure Active Directoryのサービスで発生した障害について表示されています。障害の場合、ドリルダウンすると、その状況や原因・対策などのレポートを確認することができます。これは便利ですね・・!
この機能では、その他にも計画メンテナンスの予定や、正常性に関わるアドバイスを受けたり、またはリソースレベルでの正常性確認の状況も監視することができます。(リソース正常性は、各リソース毎に設定を行っておく必要あり)
ブックでレポートを作成する
こちらは、高度なレポート作成機能になります。事前に用意された定型分析用のテンプレート、または一から、レポートを構成することが可能です。Power BIなどと接続して可視化する方法もありますが、この機能を使うとAzure上でも完結させることができますね。
機能の詳細については、以下の公式ドキュメントをご確認ください。
https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/workbooks-overview
リソース種類別の分析情報を確認する
Azure Monitor左側メニューの「分析情報」セクションでは、リソース種類別に分析を確認することができます。基本的には、各リソースの分析情報へのリンクが一覧でまとめられたような画面になっています。
アプリケーション
ここでは、各リソースのApplication Insightsへのリンクの一覧が提供されています。
Application InsightsはWeb AppやFunctionsなどのリソースで、予め有効化しておく必要があります。
仮想マシン
準備中
ストレージアカウント
こちらも、各ストレージアカウントリソースの「分析情報」ブレードへのリンクが提供されています。
コンテナ
準備中
ネットワーク
準備中
キーコンテナー
Azure Cache for Redis
準備中
各リソースの診断設定を管理する
さて、次は設定セクションの機能についてみていきます。はじめは「診断設定」です。
ここでは、各リソースの診断設定の有効/無効を管理することができます。
診断設定では、リソースの稼働状況の詳細を記録した各種ログを、ストレージアカウントやLog Analyticsなどに転送する設定を行うことができます。この診断設定を有効にしていないと取得できないログもあったりするので、詳細な分析を行いたいリソースに対しては有効化しておくことをお勧めします。
https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/diagnostic-settings
データ収集ルールを作成する
こちらは、仮想マシンリソース向けの機能です。この機能を使うことで仮想マシンから、プロセスの各稼働時間などといった詳細の稼働状況のデータをAzure Monitorに送信し、監視する仕組みを作ることができます。
上記の公式ドキュメントに記載がありますが、ポータル上から対象のVMに対してこの設定を行うと、VM上で必要な情報を収集してAzure Monitorに送信するAzure Monitorエージェントが自動的にインストールされるという仕組みのようです。また、Azure MonitorとVM間のデータのやりとりはマネージドIDを利用して行われるようで、仮想マシンのマネージドIDが自動的に作成されます。
現在は、特定のリージョンのVMのみサポートされているようですが、そのうち全てのリージョンで使えるようになるんですかね・・。
自動スケーリングを一括管理する
次は「自動スケーリング」ブレードです。ここでは、リソースの負荷が高まったときにAzureが自動的に仮想マシンを追加する、「自動スケーリング」機能を一括で設定・管理できます。
ここで一目で状況を確認できるのは便利ですね。
Azure Monitorとリソース間にPrivate-Linkを構成する
これは、Azure Monitorと監視対象のリソースを、プライベートエンドポイントを使ってセキュアに接続する方法、のようです。ちょっとあまり詳しくわかっていないですが、以下のドキュメントが参考になりそうです。
https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/private-link-security
コストを確認する
Azure Monitorではコスト管理のメニューも統合されており、Azure Monitorの中で確認することができます。
Azure Advisorによる推奨事項を確認する
最後になりますが、Azure MonitorではAzure Advisorも統合されており、Advisorによる推奨事項の確認も行うことができます。この機能はなかなか強力で、Azureのベストプラクティスをプロアクティブに提案してくれて便利な機能です。
個別の推奨事項は、確認するだけでなく、ボタン一つで対策の実行まで行うことができます。対策スクリプトの実態はARMテンプレートのようで、これがリソースにパッチ適用されるようです。
以上、Azure Monitorでできることを理解する、でした!
最後までご覧いただきありがとうございました!
おしまい
(おまけ)Azureをもっと知りたい方には
Azureの認定資格を取得する
Azureは、資格試験が充実していますのでご興味のあるところから勉強してみてはいかがでしょうか。こちらに一覧と勉強方法などをまとめましたので、参考になりましたら幸いです。
書籍で勉強する
Azure関連書籍、ひと昔はとても少なかったのですが、少しづつ増えてきている印象です。以下がおすすめです。
オンラインコンテンツを活用する
個人的には最近はUdemyなどのオンライン学習コンテンツもおすすめです。Udemyの場合は、30日間の無料返金期間もあるので、購入してちょっと違ったなと思ったら返金できるところも安心で、私も活用しています。
Azureについては、日本語コンテンツも増えてきているので、以下に特に評価が高いものをのせておきます。
作りながら覚えるMicrosoft Azure入門講座(PaaS編)
作りながら覚えるMicrosoft Azure入門講座(IaaS編)
https://docs.microsoft.com/ja-jp/azure/azure-monitor/faq#whats-the-difference-between-azure-monitor-log-analytics-and-application-insights