Azure Montorで監視する
Monitoring with Azure Monitor.
Log Analyticsにログデータを転送する
Log AnalyticsはAzureのログの保管・分析を行うSaaS型のログ管理ソリューションです。
2020年07月現在ではAzure Monitorに統合しており、Azure Monitor Log Analyticsという名前になっているようです。
Azure Monitor
IRISのmessages.logファイル(Cache'でのcconsole.logファイル)をLog Analyticsに転送します。
標準のOSログではなく、IRISのログをLog Analyticsに転送したいので、
カスタム ログを定義する
を参考に設定します。
VMの管理画面から、「診断設定」を選択します。ログを転送する先のストレージアカウントを選択して「ゲストレベルの監視を有効にする」を選択します。
情報を収集する内容が表示されます。画面上部の「保存」を選択します。
VMの管理画面から、「ログ」を選択します。初回は下図のように、ようこそ画面が表示されるので「はじめに」ボタンを表示します。
Log Analyticsの管理画面から「詳細設定」を選択します。
詳細設定画面からData → カスタムログ → 追加 を選択します。
「ファイルを選択」をクリックして、messages.logファイルのサンプルをアップロードします。
![](l4.png)
手元にmessages.logファイルのサンプルがなかったので、IRISサーバーから実際のmessages.logファイルを取得します。
IRISサーバーの/opt/ISC/dur/mgr/messages.logをscpなどで取得し、「ファイルを選択」で指定します。
レコードの区切り文字で「改行」を指定します。
ログ収集パスで /opt/ISC/dur/mgr/messages.log を指定します。
名前と説明では適当に名前を設定して「完了」を押します。
ログが正しく連携されているか確認します。
LogAnalyticsの ログ → テーブル とクリックし、カスタムログの中に、作成したカスタムログ名_CL(下図ではIRIS_messages_CL)が存在することを確認します。
IRIS_messages_CLをダブルクリックします。
IRIS_messages_CLをダブルクリックしたことにより、クエリ入力欄(赤枠)にIRIS_messages_CLが設定されています。
この状態で画面上部の「実行」をクリックすると、画面下部に結果が表示され、RawData列にmessages.logの内容が格納されていることが確認できます。
これで messages.log の内容が、Log Analyticsに連携されていることが確認できました。
同様に設定すれば任意のログをLog Analyticsに取り込ませることが可能です。
障害が発生したら通知するよう設定する
Log Analyticsで収集したログで、特定の内容が発生した場合に通知を発生させることができます。
Azure Monitorで アラート → 新しいアラートルール を選択します。
アラートルールの作成画面で「リソースの選択」をクリックします。
上記で使用したLog Analyticsワークスペースを選択し、「完了」をクリックします。
アラートルールの作成画面に戻ります。リソースに選択した内容が反映されていることを確認し、「条件の選択」をクリックします。
シグナルロジックの構成画面が開きます。Custom Log search を選択します。
messages.logのスペース区切り3ブロック目の重大度が 2のときに通知を発生させるため、検索クエリ欄に以下のように入力します。
IRIS_messages_CL | where strcat_array( split( RawData, " ", 2 ), "") == "2"
この検索クエリの意味は、messages.logの各行について( IRIS_messages_CL)、
スペース区切りの3ブロック目 (ゼロ始まりのため2)を文字列化したもの( strcat_array( split( RawData, " ", 2 ), "") )が
"2"であるものを抽出しています。
検索クエリはKustoクエリというもので記述します。詳しくは
Kustoクエリ概要を参照してください。
1度でも発生したら通知させるために、
基準 : 結果の数
演算子 : 次の値より大きい
しきい値 : 0
と入力し、「完了」をクリックします。
アラートルールの作成画面に戻ります。条件に選択した内容が反映されていることを確認し、「アクショングループの選択」をクリックします。
「アクショングループの作成」をクリックし、通知の実行方法を指定します。
以下の例では、メール・SMS・アプリ通知を指定しました。電話は2020/07時点で国コード1(US)以外指定できませんでした。
名前を適当に設定し保存します。
アラートルールの作成画面に戻ります。アクショングループに先程設定したアクションが表示されていることを確認し、アラートルール名などを適宜設定して、「アラートルールの作成」をクリックします。
擬似的に障害を起こして、通知を確認する
重大度2の障害を起こすのは難しいので、WriteToConsoleLogメソッドでエラーを記録してみます。
sshでIRISサーバーに接続し、iris sessionでIRISコンソールに入り、以下コマンドを実行します。
Do ##class(%SYS.System).WriteToConsoleLog("DUMMY Error Occurs",0,2)
tailでmessages.logを見ると、重大度2のエラーが記録されていることが確認できました。
まもなく、携帯にショートメッセージが届きました。
アプリ通知はスマホ側で「プッシュ通知」をONにしていなかったので、アプリ画面で確認しました。
メールでも通知が来ました。メールは該当ログまで送ってくれるので一番詳しく分かります。
メール・SMS・アプリ通知で問題が発生したことを知らせてもらえるので、IRISのmessages.logだけでなく、他のものにも活用していけそうに思います。
|