メインコンテンツまでスキップ

仮想タグの運用

概要​

仮想タグは、他のタグの値を用いて計算して作成されるタグです。仮想タグとは何か、また作成方法については、ユーザーガイドの 仮想タグ を参照してください。本ページでは、管理者が把握しておくべき事項 — 計算がどこで実行され、いつデプロイされ、失敗がどこに記録され、何が性能を左右するか — についてのみ記述します。


1つの計算 = 1つのCEP文​

タグの 計算 タブに入力した EQL は、CEP に 1つの文 としてデプロイされます。

項目値
文IDCALCULATION_ + タグ ID (例: CALCULATION_TAG_V_FILTER_DP)
有効/無効値タグの use_calculation — 計算タブの 適用有無
結果の出力先結果行がそのタグのデータポイントとなり、収集値と同じパイプラインに入ります — 保存・アラーム・他の計算が一般タグと同様に読み取ります
結果処理文が結果を出力すると、非同期ワーカーがポイントに変換してパイプラインに投入します

計算結果は、CEP に 再投入することが許可された唯一のCEP結果 です。その他のCEP結果は、CEP入口で受け付けられません。そのため、仮想タグをソースとして読み込む仮想タグ(連鎖)が可能となります。ただし、計算が自分自身を読み込むかどうかは保存時に検査されません。 循環を構成すると、文が自身の出力を再度読み込むことになります。


デプロイのタイミング​

タイミング動作失敗時
計算タブ保存 · V5 PATCH /api/v5/tag/{tag_id}/calculation文を コンパイルした後 に保存し、旧文を降ろして新文を上げますコンパイルに失敗した場合は保存しません。保存はされたがデプロイできなかった場合は 応答が失敗 となります — デプロイされていない文を成功とは知らせません
サーバー起動use_calculation が有効なすべてのタグを 同時に4つずつ デプロイします当該タグをスキップして他のデプロイを継続します。そのタグの診断に «計算タグ配置失敗» が点灯します — 以下参照
タグ削除そのタグの計算文を降ろし、そのタグのアラーム設定を削除しますあるステップで失敗しても、次のステップおよびDB削除は継続されます
接続削除その接続の全タグ(仮想タグを含む)の計算・集計・アラームを降ろした後、タグと共に削除します—

保存が拒否される場合 — 422​

計算タブの保存時に文がコンパイルできない場合、HTTP 422 で拒否され、原因が画面に表示されます。

場所内容
EQLエディタ直下の案内ボックスタイトル «EQLを読み込めません», 位置チップ «N行 M列», 原因文とヒント、折りたたみ形式の エンジン原文表示。カーソルが該当箇所に移動します(位置情報がない場合はチップなしで文のみ)。トースト通知は別途表示されません
サーバーの文 (V5応答の detail)«EQLコンパイル失敗 (N行 M列): …» — 位置情報がない場合は «EQLコンパイル失敗: …»
V5応答の拡張欄reason = eql.compile, cause · compiler_message = 整理されたコンパイラの文, engine_message = エンジンの元の文, line · col = 1から数えた位置

CEPが起動しておらず検査できない場合は HTTP 503 となり、トーストに «CEPエンジンに接続できず、EQLを検証できませんでした。» と表示されます — 文自体の誤りではないため、エディタには表示しません。 サーバーログには、拒否は Tag calculation refused: tag_id=[…] として、CEPに接続できず保存できなかった場合は Tag calculation not saved - CEP could not check the EQL として記録されます。

同一の形式 が、EQLを受け取る他の入口にも同様に適用されます。

入口適用箇所
コンソールタグ計算タブ · アセットステートメント追加/修正 · プラグインステートメント · アラーム設定保存 · [EQL実行] 検査 · クエリ実行
V5タグ計算式 · アセットステートメント · アラーム設定 · クエリコンパイル/実行
CEPが停止していると計算式を保存できない

検証されていないEQLはDBに保存しないのが原則です。CEPを再起動している間に計算タブの保存が失敗するのは正常な動作であり、CEPが起動した後に再度保存してください。


失敗は診断に記録される​

計算に失敗した場合、診断に2種類で記録されます。

コード名前 · 種類 · 重要度メッセージタイミング
diagnostic.tag.calculation_deploy_failed計算タグ配置失敗 · 状態 · ERRORタグ {target} の計算を適用できませんでした({operation}): {error}保存された計算式を起動時や再配置時にエンジンに上げられなかったとき。タグごとに1つ点灯し、修正して配置されれば自動的に解消します
diagnostic.tag.calculation_listener_failing状態 · ERRORタグ {target} の計算が失敗しています。文が出力した結果をポイントに変換する際に失敗したとき。次の結果が成功すれば解消します

計算タグ配置失敗 の {error} にはエンジンが拒否した文が、診断引数 line · col にはその位置が格納されます。 診断画面の詳細パネルには «修正画面を開く» リンクがあり、そのタグの設定フォームへ直接移動できます — 計算タブで修正して保存すれば再配置され、診断が解消されます。diagnostic.infra.component_unreachable(cep) が同時に点灯している場合は、まずCEPを復旧させてください。

保存されたEQLが配置されなければ動作しないため、同様の診断が 対象ごとに1つずつ EQLを使用する他の箇所にも存在します。

コード名前対象«修正画面を開く» が開く場所
diagnostic.tag.calculation_deploy_failed計算タグ配置失敗タグタグ設定フォーム
diagnostic.tag.alarm_deploy_failedタグアラーム配置失敗アラーム設定 ID (タグは tag_id)アラーム設定フォーム
diagnostic.asset.statement_deploy_failed設備ステートメント配置失敗asset_id/statement_name当該アセットのステートメントタブ

結果行に timestamp · value · quality · error_code のいずれかが欠けているか、value が空である場合は、エラーではなく警告ログ を残してその結果を破棄します。仮想タグに値が生成されないにもかかわらず診断に異常がない場合は、サーバーログで Calculated point validation failed を探してください。


性能​

項目理由
仮想タグ数 = CEP文数仮想タグ1つにつき、文が1つ追加で動作します。同じ値を複数の仮想タグで個別に計算させないようにしてください
ソースごとのウィンドウサイズは小さく2つ以上のソースを組み合わせると、ウィンドウ内の値同士で組み合わせが生成されます。win:length(1) は最新値1つずつのため組み合わせは1つのみですが、時間ウィンドウを大きく設定すると組み合わせが倍増します
OUTPUT LAST EVERY nソースのいずれ側に値が届いても再計算されるため、ソースが多く高速であるほど結果の頻度が高くなります。この節は 間隔ごとに最後の1つのみ を出力する割合制限です — 結果がそのまま保存されるポイントとなるため、保存量も同時に削減されます
起動時間起動時、計算文を同時に4つずつデプロイします。仮想タグが多い場合、起動後にすべての計算が動作するまで時間がかかります

限界​

項目内容
ソースタグ数の上限製品に定められた上限はありません
連鎖 (仮想タグの仮想タグ)可能
循環 · 自己参照検査なし — 保存時に検知されません
計算式の長さV5 API で入力する場合、4,000文字まで
構文起動したCEPバックエンドが受理する文のみデプロイされます — CEP — バックエンド

設定キー​

仮想タグ計算専用の設定キーは ありません。 計算文がどのエンジンで動作するかは、CEPの cep.backend によって決定されます(CEP — バックエンド)。


関連文書​