Cache'ってなに?
インストール
ターミナルの使い方

プログラミング
ルーチンを作成する
ファイル入力・出力
引数の渡し方
マクロで効率化

逆引き
文字 数値 ファイル 日時 ユーティリティ

クライアントアプリ
VisMでの通信
Factoryでの通信
WebServiceでの通信

CSP

Cache'SQL
SQL文を実行する
SQLserverから移行


リンク
インターシステムズ(日)
└日本語ドキュメント
インターシステムズ(米)
(有)エムブイビイ
ダイナシステム(株)

Googleグループ(英)
Googleグループ(日)
George James Software

cache'infoアーカイブ


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だけでなく、他のものにも活用していけそうに思います。

2020/07/20Update