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を入力し、ログインボタンをクリックします。
.png)
ログインに成功しますと新たなパスワードを求めてきますので、Old Passwordには「SYS」、「New Password」、「Retype New Password」には新たなパスワードを入力し「Login」ボタンをクリックします。
Welcomeメッセージが表示されますので、「Create Your First Cluster」ボタンをクリックします。
以下の画面が表示されますので、「Cluster name」欄にクラスタ名の内容を記述し。「Add Cluster」をクリックします。.png)
つづいてインスタンス名の設定を記載します。以下のようにClusterの選択画面が表示されていますので、画面中央右の「+New」というボタンをクリックします。
.png)
以下の画面が表示されますので、IRISサーバのIPアドレスかホスト名、Webアクセス用のポート番号、インスタンス名を入力し、「Add Instance」ボタンをクリックします。
.png)
以上で設定は終了です。
3. サーバの監視
設定が終了すると、以下のようにclusterごとに各サーバの状態が表示されます。
.png)
各インスタンスをクリックしますと、以下のような画面が表示され、CPU使用率などのメトリックがグラフ表示されます。
.png)
画面右手中央の「View in Grafana」をクリックしますと、Grafanaを使用してダッシュボードのグラフをカスタマイズできます。
最後に
IRISサーバの監視が意外(?)と簡単な設定でできたと思います。
ぜひ一度お試しください。
英語になりますが、インストール方法の詳細はhttps://docs.intersystems.com/sam/csp/docbook/Doc.View.cls?KEY=ASAM
をご参照ください。
ご意見、ご質問等もお待ちしています。
Comments
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」(赤枠部分)をクリックします。.png)
以下のようにパネルが作成されますので、「Add query」をクリックします。.png)
Queryのメトリックスを指定し、Legend欄にデータのコメントを入力します。.png)
グラフが追加されましたら、画面上方の「Save Dashboard」(赤枠部分)をクリックします。.png)
SAM (http://localhost:8080/api/sam/app/index.csp) にアクセスしますと、新たにパネルが追加されています。
以上です。