プログラミング
ルーチンを作成するファイル入力・出力 引数の渡し方 マクロで効率化
逆引き
文字 数値
ファイル 日時
ユーティリティ
クライアントアプリ
VisMでの通信
Factoryでの通信
WebServiceでの通信
CSP
Cache'SQL
SQL文を実行するSQLserverから移行
リンク |
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ファイルのサンプルをアップロードします。 手元に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だけでなく、他のものにも活用していけそうに思います。 |