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