Log Analyticsを一歩踏み込んで使ってみる【初心者向け】

#はじめに

ログフリークの皆さん、こんにちは。
クラウド使っていると、仕様上どうしても取れないログとかがあり、悶々としますよね。
私も最近Web App for Containerでそれを痛感しています。

そんな話は置いといて、この記事ではAzureのログ管理の必須サービス「**Log Analytics**」に関して書いていきたいと思います。

Azureでログ管理を考える際に大体出てくるLog Analyticsですが、皆さんはどのように活用してますでしょうか。
<img src=https://qiita-image-store.s3.amazonaws.com/0/181154/45399831-fbaa-8e6e-ad88-60b5a7012952.png width=7%>「よくわかんないけど、よく使われてるらしいからログをそこに溜めとこ」

<img src=https://qiita-image-store.s3.amazonaws.com/0/181154/45399831-fbaa-8e6e-ad88-60b5a7012952.png width=7%>「Azure上のログを集めて、一元管理できるようにしとこ」

といった感じにログの出力先に指定する方は多いと思います。

**ただ、実際にLog Analyticsでどのようなオペレーションを行うか考えているでしょうか。**

本記事はそのようなビギナー層に向けてどのようにLog Analyticsを使用していくかを書いていきます。
今回はログ検索とソリューションの使用の二種類に関して書いていきます。

#ログ検索

##ログ検索画面
問題が起きた際に、状況を確認するためにログを検索することは多々あります。
Log Analyticsにももちろん溜めたログを検索する機能があります。
![logsearch.png](https://qiita-image-store.s3.amazonaws.com/0/181154/cdb45723-8904-07da-8714-44bec1c87f45.png)
こんな画面ですね。ここに打ち込めと言わんばかりにクエリを書くフィールドが用意されてますね。

##クエリ構文
さて、ここで問題となるのがどのようにクエリを書けばいいのかです。
下にサンプルに書かれている通り基本的な構成は
＜ログのタイプ＞ | ＜条件＞ | ＜条件＞
といった様になっております。このログのタイプは様々ありますが、代表的なものを記載します。

|タイプ|内容|
|-----|----|
|Alert|リソースで上がったアラートのログ|
|AzureActivity|Azureの操作ログ|
|AzureDiagnostics|Azureの診断機能で出力したログ|
|AzureMetrics|リソースのメトリックログ|
|ComputerGroup|コンピュータグループに属しているコンピュータのログ|
|Event|イベントログ|

Log Analytics内にどのようなタイプのログが含まれているか確認したい場合は
「search *」で検索をかけ、左のペインに表示されるTypeの欄から行えます。
※すべてのログを表示するので、総量が多いと検索に時間がかかるので注意。
![logsearch2.png](https://qiita-image-store.s3.amazonaws.com/0/181154/032f6483-8edc-088d-0384-2c6341cb12a9.png)

パイプで繋げて条件を入れることによって絞り込みも可能です。
以下は代表的な条件になります。

|条件|内容|
|----|---|
|search <文字列>|文字列を含むログを表示|
|where < key > ==(!=) < value >|< key >が< value >(ではない)のログを表示|
|count|条件に合致するログの数を表示|
|join < Table >|別のテーブルと結合して表示|
|limit <数値>|行数を絞って表示|
|order by < Table > <  asc/desc >|表示する順序を指定|

というようにSQLのクエリと非常に似ております。
DB操作に慣れている方であれば違和感なく使用できるかと思います。

##Analytics Portal

今年に入ってからLog Analyticsも随分と進化を遂げており、クエリ機能に特化した「**Analytics Portal**」なるものが登場しました。
こちらはMicrosoftが提供する無償のWebツールとなっており誰でも使用することが可能です。
Log Analyticsのログ検索画面の上部にある「Analytics」を選択することによって移動できます。

![logsearch3.png](https://qiita-image-store.s3.amazonaws.com/0/181154/5a1ba46b-f95f-d967-9813-bc02d4429aa4.png)

Azureポータルの同様にログ検索ももちろん可能で、検索に使用したクエリの保存や、一連のクエリをfunctionとして定義することも可能になっております。
また、検索結果をグラフ形式等で出力することが可能です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/181154/76086319-0ac1-0e72-4f90-71dd4403a236.png)

いままではLog Analyticsを使用する場合OMSポータルを使用するのがマストとなっていましたが、現在ではその機能はすべてAzureポータルから使用することが出来るようになっているために、Log Analyticsを使用するだけであればAzureのポータルのみで完結できます。そしてより強力なクエリツールを使用したい場合はAnalyticsポータルを使用することが推奨されています。

#自分でいちいちクエリを叩かなくてもまとまって情報は見たい

その気持ちわかります。なんやかんや必要な情報は何かと考えて、クエリを構成して、ログを参照するのは大変です。
そんな方たち向けにあるのがLog Analyticsの**管理ソリューション**です。

##管理ソリューションとは
管理ソリューションはまとまって特定の範囲の情報を体系的に出力してくれる機能です。
ユーザーはソリューションギャラリーから使用したソリューションを選択するだけで、仕様を開始できます。
管理ソリューションを使用することによってユーザーは運用上の問題を迅速に調査して解決したり、様々な種類のデータを収集して関連付けて表示したりすることが可能になります。

##使用方法
管理ソリューションはOMSポータルのソリューションギャラリーから追加することが出来ます。以下の画像はOMSポータルのソリューションギャラリーになります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/181154/c1d62b72-e27b-a597-2540-4659f9ab1585.png)

まだプレビュー段階のものも多いですが、多くのソリューションが用意されております。
ソリューションの一覧は以下のリンクから確認することが出来ます。
[Azure Log Analytics 管理ソリューションをワークスペースに追加する](https://docs.microsoft.com/ja-jp/azure/log-analytics/log-analytics-add-solutions)

追加したソリューションはOMSポータルのダッシュボード、もしくはAzureポータルの「ソリューション」から確認することが出来ます。以下はAzureActivityソリューションの画面になります。
![logsearch4.png](https://qiita-image-store.s3.amazonaws.com/0/181154/fea3ccd8-49b5-6d66-8442-98409ba7731f.png)

#まとめ
本記事で書いた内容はLog Analyticsでできることのほんの一部になります。
しかし、この二つの方法は基本的な部分となりますのでこれを知っているだけでもLog Analyticsの使い方が非常にに広がります。
私もまだまだ触りたての初心者なので今後使っていってより有用な使い方が判明次第更新していこうかなと思っています。
皆様も素敵なログライフを送ってください。

#参考リンク

https://docs.microsoft.com/ja-jp/azure/log-analytics/
https://docs.loganalytics.io/docs/Learn/Getting-Started/Getting-started-with-the-Analytics-portal
https://docs.loganalytics.io/index
　⇒こちらのページの[playground]を選択するとデモ環境でAnalyticsポータルをいじることが出来ます。
　　**オススメ！**