Azure でログ収集！(Log Analytics)

##Azureでlogを収集！

###■初めに
　Azureの｢Log Analytics｣を使ってAzureVMのイベントログを収集し、メール発砲までの処理を行います。
　※やってることは監視と似ていますがあくまでログの収集と分析のツールになります

###■実践理由　：　
１．今度の自社で行う「社外向け」勉強会で実践しようと思ったけど時間的な都合で断念したから。
　　限られた時間内ですべてを詰め込むのは難しい。。。

２．実際にやってみて調べてみたけど意外に少ない！この通りやればできますよっていう手順書的な物がなかった。（俺がダメってパターンかもしれないけど。。。（十中八九それっぽいOrz））

---

###■準備するもの
　・　Azure Portal
　・　インターネット環境
　・　AzureVM（インターネットに接続できること）

---

##■Section 1　概要■

###■１　「Log Analytics」　ってなに？
　AzureのPaas。Azureのリソースからパフォーマンスやイベントログ、パッチ更新情報等様々な情報を収集しダッシュボードにて集約。閾値を設定してメールを発砲させたりすることができます。
　まだ未検証だけど「オンプレミス環境」、「AWSリソース」にも*今後*できるらしい。

###■２　今回やること
　・　「Log Analytics」の作成とソリューションの作成
　・　イベントログの収集
　・　エラー検知によるアラート発行！

　※今回はこんな環境作ります

![oekakiVer3.png](https://qiita-image-store.s3.amazonaws.com/0/150678/b188588b-97be-0c5e-27e5-97895b604a8c.png)


---

##■Section 2　やりかた■
###■１　「Log Analytics」の作成
これは簡単！ポータルから適当に入力して作成です！

1) ｢Azure Portal｣にログインし｢新しいサービスの作成｣をクリック
　※左の「+」アイコン
2)「Market Place」より「Log Analytics」を指定し｢作成｣ボタンを押す
　※検索バーに「Log Analytics」と入力し「Enterkey」！
3)以下入力し「OK」
　※作成には3分程度かかります
　※作成後はダッシュボードにワークスペースが存在していることを確認

| 項目 | 設定値 |　実際の設定 |
|:-:|:-:|:-:|
|  新規作成 | いづれかにチェック  |　チェック　|
|  既存のものを使用する | いづれかにチェック  |　チェックなし　|
|  OMSワークスペース | 作成するワークスペース名  |　EVTLOG　|
|  サブスクリプション | 自分のサブスクリプション  |　※内緒　|
|  場所 | 自分のリージョン |　※内緒　|
|  価格レベル | 料金プラン |　Free　|

![4444.png](https://qiita-image-store.s3.amazonaws.com/0/150678/ff5ca4ee-f350-38e9-97da-faede4bb8a11.png)


![AzureLog03.png](https://qiita-image-store.s3.amazonaws.com/0/150678/559e0939-755b-c362-f3e8-4f8e3cf1dd0f.png)

###■補足　「ソリューション」の作成
「ワークスペース」内に「ソリューション」を追加することで収集をしたい内容を追加することができます。

注意：　イベントログを取得するだけなら本手順は必要ありません。本手順は新たなログを取得したい時に使う内容です。

1)「Marketplace」より「Monitoring + Management」を選択する
2)「ActivityLog」を選択し「作成」を押す
3)以下入力し「作成」を押す

| 項目 | 内容 | 入力値 |
|:-:|:-:|:-:|
| OMS ワークスペース  | ソリューションを追加するワークスペースを設定  | EVTLOG  |
| OMS ワークスペースの設定  | 上記同様  | EVTLOG  |

![AzureLog04.png](https://qiita-image-store.s3.amazonaws.com/0/150678/e0bae14a-fb9e-afe8-308a-406b39ed2a64.png)

作成後↓
（画像縮小しています）

![AzureLog04_e.png](https://qiita-image-store.s3.amazonaws.com/0/150678/c1f805f7-ded4-4ef2-3699-be3d67f3d4a4.png)

###■２　「ワークステーション」に仮想マシンを接続
　作成したワークステーションにログを取得する仮想マシンを接続します

1)「ワークスペースのデータソース」より「仮想マシン」を選択
![AzureLog05.png](https://qiita-image-store.s3.amazonaws.com/0/150678/43b10b86-8396-ac53-bedf-42ca959c7c69.png)

2)ログを収集する「仮想マシン」を選択
![AzureLog06.png](https://qiita-image-store.s3.amazonaws.com/0/150678/a58898cf-4a68-48f3-4b34-ee85fefc819c.png)

3)「接続」をクリック
※10分程度かかります

![AzureLog07.png](https://qiita-image-store.s3.amazonaws.com/0/150678/7667f8a4-10ab-6194-2d58-dd3a2424cc99.png)

※接続が完了したら初めてワークスペースに仮想マシンが接続された状態になります

4)「ワークスペースの概要」戻り「OMSポータル」をクリック
　　※Setingsの表示数が「1」になっていれば接続されています
  　※OMSポータルに反映されるまで10分程度は見てください

![AzureLog08.png](https://qiita-image-store.s3.amazonaws.com/0/150678/f3305e0d-d906-ed99-00a3-22339134ddf9.png)

###■補足　Azure Activity Logs
 「Azure Activity Logs」はAzureの操作ログになります。AzureでのVM作成、削除更新等のアクションをログとして収集されます。今回のターゲットではありませんので割愛しますが、Azure内部で誰が何をやったかを追跡する際に使用できます

###■３　「イベントログ」の収集
　ようやく本題です。接続させたVMの持つ「イベントログ」を「Log Analytics」で収集し「OMS」上から確認できるようにします

1)「OMSポータル」の「設定」をクリック
2)「Data」を選択し「Windows イベントログ」を選択
3)「Collect events from the following event logs」に「System」と入力し「＋」をクリックする
![AzureLog10.png](https://qiita-image-store.s3.amazonaws.com/0/150678/9663dcc7-b6d8-d7ee-278c-d172b9042551.png)

追加後↓

![AzureLog11.png](https://qiita-image-store.s3.amazonaws.com/0/150678/3024b162-431b-67c6-0a05-fe5f8fa9fb5d.png)

4)「3)」を繰り返し「Application」を追加する
![AzureLog12.png](https://qiita-image-store.s3.amazonaws.com/0/150678/c3a8f187-6930-e45c-be5e-4d7fdc13d66d.png)

5)「3)」,「4)」実施後「Save」をクリックして保存する
　※保存後「家」のアイコンをクリックしホーム画面に戻ります

![AzureLog13.png](https://qiita-image-store.s3.amazonaws.com/0/150678/23f2db2f-78dd-3342-6c9b-09c49de60620.png)

5補足)「5)」実施後右端に下図のアイコンが表示される。アイコンをクリックして内容の確認を行う

![AzureLog14.png](https://qiita-image-store.s3.amazonaws.com/0/150678/a695c71f-7bc3-a42e-ed5e-5a8da4d09dcd.png)

![AzureLog15.png](https://qiita-image-store.s3.amazonaws.com/0/150678/aad60ec2-0fb4-499e-61a2-d5ceef2382fa.png)

6)「ログ検索」をクリック
![AzureLog16_E.png](https://qiita-image-store.s3.amazonaws.com/0/150678/d12df31e-bc9e-ad4b-df59-c15b7328a2b9.png)

7)入力欄に以下の「クエリー」を記載し「EnterKey」か、「下図虫眼鏡アイコン」をクリックして検索を実行する

入力クエリー　：　Type=Event

![AzureLog17.png](https://qiita-image-store.s3.amazonaws.com/0/150678/5bd57671-3eb4-25a8-ed62-b3183ea71e55.png)

「クエリー」実行後
※ログが発生している場合このように表示される

![AzureLog18.png](https://qiita-image-store.s3.amazonaws.com/0/150678/ece91832-ad6f-2674-dee9-1a14cfc6c380.png)


注意　：　本手順を実施することでログの収集は始まっています。ただ設定した内容によってはログが即座に反映されないこともあるためこの時点で表示されない場合はしばらく時間をおいてから再度実行するか直接端末に入って以下のコマンドを実行してください。

```ruby:実行コマンド
EVENTCREATE /ID 999 /L system /SO sys_test /T ERROR /D "イベントログのテストです。"
```

###■４　イベントログのビューの作成
　手順３まででとりあえずのログを確認することはできましたがこのままでは毎回「クエリー」を実行することになり面倒です。次の手順では独自のビューを作成しログ状況の把握を行います。

1)「OMSポータル」より「ビューデザイナー」をクリック
2)「ギャラリー」よりどれかを選択しドラッグ＆ドロップで赤枠内に移動する
　　※本手順では「数値」を利用していますが、ギャラリー内のものならどれを選んでもエラーは出ません。
![AzureLog19.png](https://qiita-image-store.s3.amazonaws.com/0/150678/dc47bcaa-a690-fd85-ef42-5f909d5749f5.png)

3)「プロパティ」画面より以下項目の設定を行い「適用」を押す

| 項目 | 内容 | 入力値 |
|:-:|:-:|:-:|
| 名前  | ビューの名前  | Event_All  |
| 説明  | ビューの説明  | イベントログの総数を表示  |
| タイル―凡例  | 凡例の名前  | イベントログの総数を表示  |
| クエリ  | クエリー  | Type=Event  |

![AzureLog20.png](https://qiita-image-store.s3.amazonaws.com/0/150678/bad1bf14-14eb-b609-b552-569cb1933402.png)

4)「ダッシュボードの表示」をクリックする
5)「2)」を繰り返してビューを作成する
　　※本手順では「番号とリスト」を利用していますが、ギャラリー内のものならどれを選んでもエラーは出ません。
![AzureLog21.png](https://qiita-image-store.s3.amazonaws.com/0/150678/1f6dded7-cdb3-55e5-ad42-e5faf44ee66f.png)
6)「プロパティ」にて以下を設定し「適用」

| 項目 | 内容 | 入力値 |
|:-:|:-:|:-:|
| グループタイトル  | ビューの名前  | 個別イベント  |
| タイル―凡例  | 凡例の名前  | VM04LogTest  |
| タイル―クエリ  | クエリー  | Computer=VM04LogTest Type=Event |
| リスト―クエリ  | クエリー  | Type=Event Computer=VM04LogTest ｜ Measure count() by EventLog  |

![AzureLog22.png](https://qiita-image-store.s3.amazonaws.com/0/150678/ca146913-a7fd-4012-8853-e2422517802e.png)

7)　適用後、「保存」ボタンを押す
![AzureLog23.png](https://qiita-image-store.s3.amazonaws.com/0/150678/22c7bddf-1449-35cb-0edc-2c1cafb582ba.png)

8)「OMS ポータル」の「ホーム」より作成したビューを確認する

　※登録しているマシンで発生しているイベントの総数は「69」だということがわかる　⇒　赤枠内をクリック

![AzureLog24_E.png](https://qiita-image-store.s3.amazonaws.com/0/150678/6b3b81f3-4465-a8b6-0e2f-271cc30ab3ad.png)

　※「VM04LogTest」で発生しているログの内訳がわかる
　　　－Systemイベント　：　60件
　　　－Applicationイベント　：　9件
![AzureLog25.png](https://qiita-image-store.s3.amazonaws.com/0/150678/47e233bd-5c89-7cec-7d4b-aae6e1f94d3c.png)

###■５　「メール」の発行
　イベントログの監視になりますので当然閾値を超えた場、何らかのアクションを起こさせる必要があります。本手順ではAlertの設定を行い、エラーが5件発生したらメールを飛ばすという仕組みを作成します

1)「ホーム」画面より「Event_All」を選択
2)「VM04LogTest集計」より「System」を選択
3)「ログ検索」画面より「error」にチェックを入れる
4)チェックを入れた後、「適用」を押す
![AzureLog26.png](https://qiita-image-store.s3.amazonaws.com/0/150678/a6ca43ff-c1a4-86ab-d61e-ff4e5556b960.png)

5)表示された「クエリー」をコピーする（Ctrl+C)
![AzureLog27.png](https://qiita-image-store.s3.amazonaws.com/0/150678/d0171033-f143-850f-0a2f-051b5c7195fb.png)

6)「Alert」をクリックする
![AzureLog28.png](https://qiita-image-store.s3.amazonaws.com/0/150678/7a440ac0-eee1-6dc0-453a-05a3fb2b277a.png)

7)以下設定を行う。設定後保存する

| 項目 | 内容 | 入力値 |
|:-:|:-:|:-:|
| 名前  | アラートルールの名前  | Rule01  |
| 説明  | アラートルールの説明  | テストアラート  |
| 時間枠  | アラート発行の時間帯  | 5分  |
| このアラートを確認する頻度  | このアラートを確認する頻度  | 5分  |
| アラートを生成する基準 | トリガー  | 結果の数  |
| 結果の数 | 閾値  | (次の値より大きい)　4  |
| 電子メールの通知 | 電子メール  | はい  |
| 件名 | メールの件名  | AzureErrorMail  |
| 受信者 | 受信するメールアドレス  | 内緒  |

![AzureLog30_E.png](https://qiita-image-store.s3.amazonaws.com/0/150678/f616c403-f5a4-e0ee-05cd-2614940bc209.png)

設定は以上になります

あとはエラーが5件発生したらメールが飛んできます
本手順ではコマンドでイベントを発行させてメールの確認を行います

１対象のVMにはいって以下のコマンドを5回実行

```ruby:実行コマンド
EVENTCREATE /ID 999 /L system /SO sys_test /T ERROR /D "イベントログのテストです。"
```

![AzureLog31.png](https://qiita-image-store.s3.amazonaws.com/0/150678/32e82510-15cb-e352-791e-f6b9f8ea4da8.png)

自前のメールより以下のようなメールが届いていることを確認する
![AzureLog32_E.png](https://qiita-image-store.s3.amazonaws.com/0/150678/638f141e-158b-7246-c931-eefaa2498e41.png)

###■６　最後に。。。

ここまでたどり着くのに作者は結構苦労しました。何が大変って公式ドキュメントに書いてある通りにやってもなかなかできませんでした。本資料はとりあえず使ってみたいとか、機能検証行う時とかに何も考えずに作れることをイメージしながら作りました。当然ながらより深いことをやるためにはやっぱり自学が必要になります。
どんな動きをするのかをとりあえず見たいとかの時に使ってくれると幸いです。