0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure IaaSサーバの監視アラート

Posted at

#1.概要
Azure上に構築したIaaSサーバに対して、Azureの機能だけで監視アラートの設定したいと考え実装を行いましたので、その際の手順を残します。
せっかくなのでリソース監視については、昨年GAした「Azure Monitor for VMs」を使用してみました。

#2.監視項目したいリソース
一般的にサーバで監視する以下の項目を監視し、閾値をトリガーにアラートを発呼します。
・CPU使用率(80%以上)
・メモリ使用率(80%以上)
・ディスク使用率(80%以上)
・サービス起動停止
・プロセス起動停止 ← わからないので諦めた
・死活

#3.手順
#####①VMの作成(VM作成手順はそこら中にあるので省略します)
#####②Azure Monitor for VMsの有効化
仮想マシンのメニューから[監視]-[分析情報]を選択します。
キャプチャ.PNG
[有効]を選択し、デプロイの完了を待ちます。
キャプチャ.PNG
#####③LogAnalyticsワークスペースの作成
検索バーからloganalyticsを検索し、LogAnalyticsワークスペースを選択します。
キャプチャ.PNG
LogAnalyticsワークスペースをデプロイします。
キャプチャ.PNG
#####④LogAnalytics エージェントのインストール
LogAnalyticsのメニューから[ワークスペースのデータソース]-[仮想マシン]を選択します。
キャプチャ.PNG
①で作成した仮想マシンを接続します。
キャプチャ.PNG
#####⑤アラートの作成
検索バーからモニターを検索し、モニターを選択します。
キャプチャ.PNG
モニターのメニューから、アラートを選択し、新しいアラート ルールを選択します。
キャプチャ.PNG
以下を元にパラメータを選択し、アラート ルールの作成を選択します。
スコープ:③で作成したワークスペース
条件:例として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も同じ感じでいけると思います。
もっとスマートな方法があればぜひ教えてください。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?