記事へ Toshihiko Minamoto · 2021年2月22日 Hiroseさん、コメントありがとうございます。 お作法的にはこちらの記事が正統ではあるのですが、ベースとしていくつかのクラスを作成する必要があり、ちょっとした連携をするには敷居が高いのかなと思いまして、この記事を書いてみました。 また機会がありましたら、試してみてください
記事へ Toshihiko Minamoto · 2021年1月28日 Yamadaさん、こんにちは。日付を変換されている set array(key)=$zdh(data,3) に以下のようにtry-catch文を入れてはいかがでしょうか。 try { set array(key)=$zdh(data,3) } catch { set array(key)="" } こうすれば、$zdh()関数にてエラーが発生すると、catch文のブロックが実行されarray変数に空文字が入り、処理が継続されます。もし、arrayにエラーメッセージを入れるのでしたら、catchの後ろに例外変数を入れ、そのNameプロパティを代入してください。 try { set array(key)=$zdh(data,3) } catch err { set array(key)=err.Name }
記事へ Toshihiko Minamoto · 2020年12月16日 ありがとうございます。Prometheousはフリーソフトでシステムの監視を行うソフトウェアで、RESTインターフェースを使ってJson形式で監視データをやり取りしています。アーキテクチャは(https://prometheus.io/docs/introduction/overview/#architecture)を参照ください。 基本的に監視サーバから監視対象サーバのExporterにアクセスし、監視データを取得する仕組みになっており、閾値を超えるとAlert Managerに通知され、メールやSlackなど様々な通知が行えるようになっています。また、grafanaという視覚化(グラフ表示等)ツールを使って推移を確認することもできます。 監視データの取得については仕様に基づいて様々なハードウェア、OS、ミドルウェアの監視データを提供するExporterが公開されています。(https://prometheus.io/docs/instrumenting/exporters/)この記事ではCacheやEnsembleのRESTインターフェースでExporterを作成していますが、IRISは標準でPrometheousの監視データを提供する機能が備わっています。InterSystemsではPrometheousやGrafanaの機能を使用したInterSystems SAMを公開しており、簡単な設定でIRISを監視できるようにしています。以下の記事もご確認頂ければと思います。InterSystems System Alerting and Monitoring (SAM)を使ってみました!よろしくお願いします。
記事へ Toshihiko Minamoto · 2020年10月19日 橋本さんご質問ありがとうございます。 nginxがプロキシサーバとして、443番ポートで受け付け、受け付けたリクエストをnode.js ( 3014ポート )と IRISコンテナ( 9091 ポート )に転送されているということでしょうか。スマホやPCから反応がないとのことですが、nginxのアクセスログにはログが表示されてますでしょうか?エラーログは何か表示されてないでしょうか?
記事へ Toshihiko Minamoto · 2020年10月9日 Henriqueさん、ありがとうございます。 シンプルで見やすいですね!また、ユーザがそれぞれ見やすい画面を選択できるというのも良いと思いました
記事へ Toshihiko Minamoto · 2020年9月17日 Henriqueさん、情報ありがとうございます。なるほど、1つのネームスペースを追加すると、コード用のデータベースとデータ用データベースを作成したり、RESTのインタフェースを作れるのですね。いちいちデーターベースを作成しなくても良さそうです。
記事へ Toshihiko Minamoto · 2020年9月7日 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) にアクセスしますと、新たにパネルが追加されています。 以上です。