記事
· 2020年8月13日 3m read

InterSystems System Alerting and Monitoring (SAM)を使ってみました!

皆さん、こんにちは。

InterSystems System Alerting and Monitoring (SAM)をご存知でしょうか。InterSystems IRIS 2020.1以降に対応し、IRISやそのアプリケーションの監視を行うソリューションです。といってもシステム監視を行うPrometheus、アラートを管理するAlertManager、ダッシュボードとしてグラフ等を表示させるGrafanaなどを組み合わせたものですが、IRISの利用者に合わせて設定しやすくなっています。

なお、これらのコンポーネントはDockerコンテナを使用しますので、Docker(19.3.098以降)ならびにDocker compose(1.25以降)をインストールいただく必要があります。

IRISの監視APIについてはこちらをご覧ください。

インストール手順

1. アプリケーションのインストール

アプリケーション自体はDockerコンテナにて提供されますので、DockerComposeのファイルやシェルスクリプトを以下のGitHubリポジトリからダウンロードします。
https://github.com/intersystems-community/sam

以下のgzipファイルをダウンロードし、展開します。
sam-1.0.0.XXX-unix.tar.gz

$ tar zpxvf sam-1.0.0.115-unix.tar.gz

展開されたディレクトリに移動し、start.shを実行します。

$ ./start.sh

以上で、各種コンテナがダウンロードされ、起動されます。

2. IRISサーバの設定

インストールが完了すると、ブラウザから以下のURLにアクセスします。

http://localhost:8080/api/sam/app/index.csp

ブラウザを実行しているホストとコンテナをインストールしたホストが異なる場合は、localhostの代わりにコンテナをインストールしたホスト名を入力してください。

以下のようにユーザ名、パスワードを聞いてきますので、ユーザ名:Admin、パスワード: SYSを入力し、ログインボタンをクリックします。

ログインに成功しますと新たなパスワードを求めてきますので、Old Passwordには「SYS」、「New Password」、「Retype New Password」には新たなパスワードを入力し「Login」ボタンをクリックします。

Welcomeメッセージが表示されますので、「Create Your First Cluster」ボタンをクリックします。

以下の画面が表示されますので、「Cluster name」欄にクラスタ名の内容を記述し。「Add Cluster」をクリックします。

つづいてインスタンス名の設定を記載します。以下のようにClusterの選択画面が表示されていますので、画面中央右の「+New」というボタンをクリックします。

以下の画面が表示されますので、IRISサーバのIPアドレスかホスト名、Webアクセス用のポート番号、インスタンス名を入力し、「Add Instance」ボタンをクリックします。

以上で設定は終了です。

3. サーバの監視

設定が終了すると、以下のようにclusterごとに各サーバの状態が表示されます。

各インスタンスをクリックしますと、以下のような画面が表示され、CPU使用率などのメトリックがグラフ表示されます。

画面右手中央の「View in Grafana」をクリックしますと、Grafanaを使用してダッシュボードのグラフをカスタマイズできます。

最後に

IRISサーバの監視が意外(?)と簡単な設定でできたと思います。
ぜひ一度お試しください。
英語になりますが、インストール方法の詳細はhttps://docs.intersystems.com/sam/csp/docbook/Doc.View.cls?KEY=ASAM
をご参照ください。

ご意見、ご質問等もお待ちしています。

ディスカッション (1)1
続けるにはログインするか新規登録を行ってください

SAMではアプリケーションに合わせて監視項目を追加することも可能です。

まず、%SYS.Monitor.SAM.Abstractクラスを継承したクラスを作成し、PRODUCTパラメータにアプリ名、GetSensors()メソッドにてSetSensor()メソッドを使用し、メトリックを登録し、クラスをコンパイルします。試しに先日作成した温湿度計のデータを取得するようにしました。

 Class REST.Monitor Extends %SYS.Monitor.SAM.Abstract
{ 

 Parameter PRODUCT = "temperature"; 
 Method GetSensors() As %Status
 {
    set lastdate=$order(^Temp(""),-1)
    quit:lastdate="" $$$OK
    set lasttime=$order(^Temp(lastdate,""),-1,data)
    quit:lasttime="" $$$OK

    set temp=$lg(data),hum=$lg(data,2)
    set now=$horolog
    do ..SetSensor("temperature",temp)
    do ..SetSensor("humidity",hum) 
    do ..SetSensor("latency",$piece(now,",")-lastdate*86400+$piece(now,",",2)-lasttime) 
    quit $$$OK
 } 
}

ターミナルを起動し%SYSネームスペースに移動、以下のメソッドを実行します。
(第2パラメータのUSERはREST.Monitorが存在するネームスペース)

%SYS>set status = ##class(SYS.Monitor.SAM.Config).AddApplicationClass("REST.Monitor", "USER")

戻り値の変数statusが1でしたら、正常に登録できています。

登録が終わりましたら、以下のURLにアクセスし、先ほどクラスを作成したホストを選択します。
http://localhost:8080/api/sam/app/index.csp
 

画面右手中央の「View Grafana」をクリックします。

画面上部に以下のようなアイコンが表示されますので、「Add Panel」(赤枠部分)をクリックします。

以下のようにパネルが作成されますので、「Add query」をクリックします。

Queryのメトリックスを指定し、Legend欄にデータのコメントを入力します。

グラフが追加されましたら、画面上方の「Save Dashboard」(赤枠部分)をクリックします。

SAM (http://localhost:8080/api/sam/app/index.csp) にアクセスしますと、新たにパネルが追加されています。

以上です。