Azure IaaSサーバの監視アラート
1.概要
Azure上に構築したIaaSサーバに対して、Azureの機能だけで監視アラートの設定したいと考え実装を行いましたので、その際の手順を残します。
せっかくなのでリソース監視については、昨年GAした「Azure Monitor for VMs」を使用してみました。
2.監視項目したいリソース
一般的にサーバで監視する以下の項目を監視し、閾値をトリガーにアラートを発呼します。
・CPU使用率(80%以上)
・メモリ使用率(80%以上)
・ディスク使用率(80%以上)
・サービス起動停止
・プロセス起動停止 ← わからないので諦めた
・死活
3.手順
①VMの作成(VM作成手順はそこら中にあるので省略します)
②Azure Monitor for VMsの有効化
仮想マシンのメニューから[監視]-[分析情報]を選択します。
[有効]を選択し、デプロイの完了を待ちます。
③LogAnalyticsワークスペースの作成
検索バーからloganalyticsを検索し、LogAnalyticsワークスペースを選択します。
LogAnalyticsワークスペースをデプロイします。
④LogAnalytics エージェントのインストール
LogAnalyticsのメニューから[ワークスペースのデータソース]-[仮想マシン]を選択します。
①で作成した仮想マシンを接続します。
⑤アラートの作成
検索バーからモニターを検索し、モニターを選択します。
モニターのメニューから、アラートを選択し、新しいアラート ルールを選択します。
以下を元にパラメータを選択し、アラート ルールの作成を選択します。
スコープ:③で作成したワークスペース
条件:例として15分間隔の監視アラートを作成したパラメータを以下に記載します。
アクション:メール及びWebhookを必要に応じて設定
アラート ルールの詳細:必要に応じて設定
・CPU使用率(80%以上)
検索クエリ
InsightsMetrics
| where Origin == "vm.azm.ms"
| where Computer == "*********"
| where Namespace == "Processor" and Name == "UtilizationPercentage"
| where Val >= 80
基準:結果の数
演算子:次の値より大きい
しきい値:14
期間(分単位):15
頻度(分単位):15
・メモリ使用率(80%以上)
検索クエリ
InsightsMetrics
| where Origin == "vm.azm.ms"
| where Computer == "*********"
| where Namespace == "Memory" and Name == "AvailableMB"
| extend TotalMemory = toreal(todynamic(Tags)["vm.azm.ms/memorySizeMB"])
| extend AvailableMemoryPercentage = ((1 - (toreal(Val) / TotalMemory)) * 100.0 )
| where AvailableMemoryPercentage >= 80
基準:結果の数
演算子:次の値より大きい
しきい値:14
期間(分単位):15
頻度(分単位):15
・ディスク使用率(Cドライブ使用率80%以上)
検索クエリ
InsightsMetrics
| where Origin == "vm.azm.ms"
| where Computer == "*********"
| where Namespace == "LogicalDisk" and Name == "FreeSpacePercentage"
| where parse_json(Tags).["vm.azm.ms/mountId"] == "C:"
| extend FreeDisk = tostring(todynamic(Tags)["vm.azm.ms/mountId"])
| summarize AggregatedValue = (100 - avg(Val)) by bin(TimeGenerated, 1m), Computer, _ResourceId, FreeDisk
| where AggregatedValue >= 80
基準:結果の数
演算子:次の値より大きい
しきい値:14
期間(分単位):15
頻度(分単位):15
・サービス起動停止(例:RDSサービス)
検索クエリ
Event
| where ( Computer has "*********")
| where ( EventLog == "System")
| where ( Source == "Service Control Manager" )
| where ( RenderedDescription has "Remote Desktop Services サービスは 停止 状態に移行しました。")
基準:結果の数
演算子:次の値より大きい
しきい値:1
期間(分単位):15
頻度(分単位):15
・死活
検索クエリ
Heartbeat
| where ( Computer has "*********")
基準:結果の数
演算子:次の値より小さい
しきい値:1
期間(分単位):15
頻度(分単位):15
"*********"は、サーバ名です。
4.最後に
LinuxOSも同じ感じでいけると思います。
もっとスマートな方法があればぜひ教えてください。
Author And Source
この問題について(Azure IaaSサーバの監視アラート), 我々は、より多くの情報をここで見つけました https://qiita.com/myabiot_/items/1eed1cb5a07b161e4bce著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .