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

CEP (複合イベント処理)

目次


概要

CEP(Complex Event Processing) 機能は、リアルタイムのイベントストリームから意味のあるパターンを検出し、即座にアクション(保存・発行・アラーム)を実行するルールエンジンです。現在、左メニューでは Automation グループの EQL クエリステートメント として表示されます。

サブメニュー内部 URL用途
EQL クエリ/query/indexEQL(Event Query Language) のアドホッククエリをリアルタイムストリームに投げ、結果をその場で確認
ステートメント/statement/index資産単位のドメインルール(状態/集計/イベント/コマンド)の照会

CEP ルールの結果は フロー の資産トリガー(flow_on_asset_event など)にも自動的に連携されます。


画面構成 — Automation グループの EQL 画面

画面主な利用者概要
クエリ運用アナリストEQL を 1 行実行し、リアルタイムストリームから結果を確認
ステートメントオペレーター資産に登録されたドメインルールの状態と実行統計を照会

クエリ画面 (/query/index)

EQL のアドホッククエリを作成し、▶ ボタンで即時実行してリアルタイムストリームから結果を確認する画面です。

上部 — クエリ保存・履歴

🔍 쿼리 [💾 이 쿼리를 저장] [↩ 마지막 쿼리] [▼ 이력 ▼]
ボタン動作
このクエリを保存saveQueryHistory() — 現在の EQL をお気に入りに保存
最後のクエリloadLastQuery() — 直近に実行したクエリを読み込み
履歴ドロップダウンloadQueryHistory() — 保存したクエリ履歴をドロップダウン表示(最大 400px スクロール)

上部または左メニューの EQL 入力欄で作成したクエリは、この画面に自動的に引き渡されて実行できます。

EQL 入力パネル

黒いボーダーの大きな入力ボックス(textarea[name=epl]、高さ 8 行) + 右上の 2 つのアイコン。

アイコン動作
▶ (再生、白)runQuery() — EQL の実行
⚙ (歯車、グレー)resultConfig() — 結果表示オプションダイアログ (display_count・expire_time・result_format・チャートオプションなど)

実行結果パネル

結果パネルのヘッダーには次の内容が表示されます。

項目表示
左側⚪ 「クエリ実行結果」 + (保存済みクエリの場合) [배치시간=..., EQL ID=...]
右側開始 / ⏸ 停止 ボタン (リアルタイム結果受信の一時停止)

結果チャート (query_result_chart、160px)

  • 右上に入力カウント(input_count_cur)と 1 分あたりの入力数(input_count_min)を表示
  • 結果データが入り始めるとチャートが描画される。リアルタイムのラインチャート形式
  • データ到着前は「チャートデータ受信待機中...」(回転アイコン)

結果テーブル (query_result_table)

カラム説明
#行番号
出力時刻EQL が結果を emit した時刻
行数1 回の emit の行数
データJSON またはテーブル形式の結果本文

実行を停止しない限り、結果テーブルには結果が蓄積され続けます。停止 ボタンを押すか、新しいクエリを実行すると蓄積が止まります。


トリガー画面の参考情報

独立した トリガー メニューは、現在の統合サイドバーでは無効化されています。既存の /trigger/index 画面や内部 API を運用中のインストール環境では、以下の内容をレガシー参考としてのみ利用してください。新規の自動化では フロー のトリガーノードと Automation > EQL クエリ / ステートメント のフローを優先して使用します。

EQL のマッチ結果を外部メッセージチャネルへ発行したり、ストレージに保存するユーザー定義トリガーを管理します。

上部ツール

⚡ 트리거 [➕ 트리거 추가] [↻]

一覧テーブル

一覧パネルヘッダーの右側には 選択したトリガーを配置 / 解除 / すべて再配置 の 3 つのボタンがあります。

カラム説明
選択50px一括配置/解除用チェックボックス
状態80px配置/解除バッジ
トリガー ID110pxシステムが自動付与する ID
トリガー名 | 説明自動オペレーター指定のメタ情報
MQ ストリーミング70pxMQ 発行の使用有無 (Y/N)
ストレージ保存70px結果をストレージへ格納するかの有無 (Y/N)
総実行件数70px累積マッチ件数
最終実行日時110px直近のマッチ時刻
エラー70px累積エラーカウント
登録日110px登録時刻
最終更新日110px最終更新時刻
アクション80px編集・削除ボタン

ページ下部には案内ボックスが表示されます。

ユーザー定義トリガーの利用 特定の条件に該当した際にアクションを実行するユーザー定義トリガーを追加できます。さらに、これを MQ 経由でストリーミングしたり、ストレージに保存することもできます。

トリガー追加/編集フォーム

上部の トリガー追加 ボタンでフォーム画面(/trigger/form)へ移動します。

1) 基本情報 fieldset

入力path備考
トリガー IDtrigger_id200px読み取り専用 — システムが自動付与
トリガー名trigger_name450px人が識別しやすい名前
説明trigger_desc600 × 100px (textarea)トリガーの用途

2) EQL fieldset

入力path説明
EQLepl8 行の textarea — EQL クエリを作成 (SELECT ... FROM ... WHERE ...)
▶ テスト実行(アイコン)runQuery() — 作成した EQL を即時テスト実行。結果は下の クエリ結果 テーブル(graph_query_result)に表示

クエリ結果テーブル(テスト実行結果のプレビュー):

カラム説明
出力時刻EQL が結果を emit した時刻
データ結果本文

3) ストリーミング fieldset

入力path説明
MQ 出力の有無use_mq (チェックボックス)結果データを外部メッセージチャネルへ発行するか
プロトコルmq_protocol (セレクター)MQTT または KAFKA
デスティネーションmq_destination (450px)発行先のトピック/チャネル — 区切り文字: KAFKA -、MQTT /。例: device-machine-topic-1 または device/machine/topic_1

4) ストレージ保存 fieldset

入力path説明
ストレージ保存の有無use_storage (チェックボックス)結果データをストレージへ格納するか

ストレージのテーブル名・カラム定義の領域は、トリガー結果の保存テーブルが固定されているため現在は無効状態です。

フォームの送信

ボタン動作
一覧(☰)トリガー一覧画面へ戻る
保存 (青)入力検証後に保存。保存しただけでは配置されないため、一覧画面で 選択したトリガーを配置 を押して初めて実際に動作を開始

すべて再配置

ボタン位置動作
すべて再配置一覧パネルヘッダー右側 (🔁)登録済みのすべてのトリガーを一括再配置。ルールエンジンの再起動後、またはシステム点検後に使用

運用手順

  1. トリガー追加 → EQL・ストリーミング・ストレージのオプションを入力 → 保存
  2. 一覧で該当トリガーをチェック → 選択したトリガーを配置 をクリック → 状態が「配置」に変更
  3. 運用中に一時的に停止する場合は 解除 をクリック → 状態が「解除」に変更
  4. 点検後は すべて再配置 で一括再稼働

ステートメント画面 (/statement/index)

資産単位で登録されたドメインルール(状態/集計/イベント/コマンド)の状態と実行統計を照会する画面です。

上部の検索・フィルタ

√ 스테이트먼트 [유형 ▼] [검색 ...] [조회] [↻]
コントロールオプション説明
種別セレクター (search_type)(すべて)・状態(CONTEXT)・集計(AGGREGATION)・イベント(EVENT)・コマンド(COMMAND)4 種類のルールタイプでフィルタ
検索入力 (txt)(250px)placeholder: 「検索 ...」 — ルール名/適用資産 ID/説明のキーワード
照会(赤 + 🔍)search() — 条件で一覧を更新
更新(赤 + ↻)refresh() — 画面の再読み込み

4 種類のルールタイプ

コード日本語意味
CONTEXT状態設備/資産の現在の状態(稼働/停止/異常)を EQL で定義
AGGREGATION集計一定のウィンドウ期間における平均/最大値などの集計
EVENTイベント特定パターン(しきい値超過など)の発生時にドメインイベントを発行
COMMANDコマンドルールのマッチ時に資産へコマンド(flow_on_asset_command)を発行

一覧テーブル

カラム説明
状態80px有効/無効バッジ
適用アセット ID150pxルールが付与された資産の識別子
タイプ80px4 種類のうちいずれか (上の表を参照)
ステートメント名自動ルール名
説明300pxルールのメモ
総実行件数80pxルールがマッチした累積回数
最終実行日時120px直近のマッチ時刻
エラー60px累積エラーカウント
登録日120pxルールの登録時刻
詳細50pxクリックでルール詳細表示画面(/statement/view)へ

詳細表示

一覧の 詳細 ボタンをクリックすると別画面(/statement/view/{asset_id}/{statement_name})へ移動し、次の内容を確認できます(下記 ステートメント詳細画面 を参照)。

  • ルールの EQL 本文
  • 実行結果の履歴
  • 実行トレンド/集計
  • 分析パフォーマンストレンド
  • 状態履歴

ステートメント詳細画面

詳細ボタンから遷移する分析ビュー(statement/view.jsp、715 行)。1 つのルールのすべての運用情報を 1 画面にまとめています。

上部 — 識別ヘッダー

√ 스테이트먼트 | {statement_name} [ {asset_id} ] [← 목록] [↻]
ボタン動作
一覧(←)/statement/index へ戻る
更新画面の再読み込み

パネル 1 — ステートメント情報 (5 カラムのテーブル)

カラム説明
状態250px有効/無効 + 最終実行時刻
ステートメント名自動ルール名
適用アセット200px資産ドメインバッジ — クリックで 資産ツリーへ移動
タイプ200px状態(CONTEXT)・集計(AGGREGATION)・イベント(EVENT)・コマンド(COMMAND)
登録日160pxルールの登録時刻

EQL 本文 fieldset

ルールの EQL クエリ本文がそのまま表示されます。テキストエリアからコピーして クエリ画面 に貼り付け、テスト実行できます。

入力・出力 fieldset

領域表示
入力シリーズルールの入力として使用されるタグ・イベントタイプの一覧
出力シリーズルールが発行するドメインイベントタイプ
エラーカウントの初期化累積エラーカウントのみを 0 にリセット(resetErrorCount(asset_id, statement_name))

パネル 2 — 実行結果の履歴 (4 カラムのテーブル)

カラム説明
実行時刻160pxルールの実行時刻
結果60px成功(緑) / エラー(赤)
結果値 / エラーメッセージ自動成功時は結果本文、エラー時はエラーメッセージ
コピー50px📋 — 結果値/エラーメッセージをクリップボードへコピー

パネル 3 — 実行トレンドチャート

項目説明
ヘッダー📊 「実行トレンド」
ボタン今日(switchTrendDay(0)) / 昨日(switchTrendDay(-1)) のトグル
チャート24 時間の時間帯別の成功/エラー積み上げ棒グラフ (シリーズ: 成功・エラー)

パネル 4 — 実行集計

項目説明
ヘッダー📊 「実行集計」
ボタン今日(switchAggDay(0)) / 昨日(switchAggDay(-1)) のトグル
fieldset 1分単位の集計(時間帯別カウント・平均スループットなど)
fieldset 2優先度または結果の分布

パネル 5 — 分析パフォーマンストレンド

項目説明
ヘッダー🖥 「分析パフォーマンストレンド」
ボタン今日(switchCpuDay(0)) / 昨日(switchCpuDay(-1)) のトグル
チャートルール処理に使用された CPU/処理時間の時系列 — 重いルールの特定

パネル 6 — 状態履歴テーブル

カラム説明
変更時刻ルール状態の変更時刻 (有効化・解除・再配置など)
状態変更後の状態

ルールのライフサイクル(いつ有効化・解除・修正されたか)を追跡する際に使用します。

活用パターン

分析の流れ画面の流れ
エラールールの診断実行結果の履歴 → エラーメッセージ → コピー → EQL 本文の確認 → クエリ画面 でテスト実行
重いルールの特定分析パフォーマンストレンド → CPU 使用量が大きい時間帯 → EQL 本文の簡素化
ルールマッチ分布の分析実行トレンド + 集計 → 時間帯別のマッチパターン
運用ルールの整備状態履歴 → 有効化/解除の時点を追跡

活用シナリオ

シナリオ画面手順
現在のライン稼働状態を即時確認クエリEQL 入力欄に SELECT * FROM AssetData.win:time(1 sec) WHERE asset_id='LINE-A' → ▶
新しいアラームルールのテスト・配置トリガー追加 → EQL 作成 → ▶ テスト実行 → 結果確認 → 保存 → 配置
外部 SCADA へ資産イベントを中継トリガーEQL のマッチメッセージを MQTT トピック scada/line-a/events へ発行
資産単位のルール点検ステートメント種別=EVENT + 資産 ID で検索 → 有効なルール一覧 + 実行件数
ルールの暴走が疑われる場合ステートメント総実行件数が大きいルールから確認 → 詳細で EQL/入力を確認
自動化でルール結果を受け取るフローflow_on_asset_event トリガーでドメインルールの結果を直接受信

よくある質問

Q. EQL は SQL と同じですか? A. 似た構文を使いますが、EQL は 時間ウィンドウストリーム の概念が加わったイベント処理言語です。例: Point.win:time(5 sec) は直近 5 秒のデータのみ、Point.win:length(100) は直近 100 件のみを処理します。

Q. クエリ画面で実行したクエリは保存されますか? A. ▶ 実行だけでは一時的なもので、このクエリを保存 ボタンを押して初めてお気に入りに保存されます。一度きりの分析用途であれば保存する必要はありません。

Q. トリガーを保存しただけですが動作しません。 A. 保存は定義を登録した状態にすぎません。一覧でそのトリガーをチェックし、選択したトリガーを配置 をクリックすると実際にルールエンジンへ登録され、マッチが開始されます。

Q. トリガーのデスティネーションはどう決めればよいですか? A. プロトコル によって区切り文字が異なります。

  • KAFKA: ハイフン(-)区切り — 例: device-machine-topic-1
  • MQTT: スラッシュ(/)区切り — 例: device/machine/topic_1

Q. ステートメント画面で検索しても結果が出ません。 A. 種別セレクターで「種別」(すべて)を選択しているか確認してください。また、資産 ID の一部だけを入力しても部分一致で検索されます。

Q. 総実行件数が異常に大きいです。 A. ルールの入力ウィンドウが狭すぎるか、マッチ条件が広すぎる可能性が高いです。詳細 ボタンで EQL を確認するか、フロー のトリガーパターン(*_pattern)でメッセージを事前にフィルタリングしてください。

Q. トリガーの EQL テスト実行の結果が空です。 A. テスト時点でデータの流入がないか、EQL のウィンドウが長すぎて初回マッチが遅れている可能性があります。1 分ほどテストを続けてから再確認するか、ウィンドウを短く (win:time(1 sec)) 調整してテストしてください。

Q. トリガーを一時的に停止するには? A. 一覧でそのトリガーをチェックし 解除 をクリックします。再び動作させるには 選択したトリガーを配置 を実行します。

Q. 資産にルールは自動的に付与されますか? A. 資産登録時、運用環境の設定によって既定のドメインルールが自動付与される場合があります。現在適用されているルールはステートメント画面で確認し、追加/削除が必要な場合はシステム管理者または資産別の設定画面で実施します。

Q. EQL の結果を自動で処理したいです。 A. フロー の資産トリガー(flow_on_asset_event/flow_on_asset_alarm など)でドメインルールの結果を自動受信し、後続アクション(作業指示の発行・メール送信・外部 API 呼び出し)へ連携できます。


関連画面