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

運用

CEP は pd の cep サービスの一つです — API · コンソール · エンジンが同じプロセス内にあります。

項目値
ポート7400 (HTTP) · 7401 (TLS)
pd サービスcep — MASTER のみ
設定plantpulse-cep.properties (レンダリングされます)
ルール · イベントタイプPostgreSQL datalake DB
入力 · 出力Valkey
docker exec plantpulse-datalake pd status cep
docker exec plantpulse-datalake pd restart cep
docker exec plantpulse-datalake pd logs --lines 200 cep

どのバックエンドで起動したか — ログの一行が答えです​

CEP input path: aster.
ingest.rate_1m は証拠ではありません

どのエンジンで起動したとしても、流入量は増加します。「動作しているか」と「何が動作しているか」は別の問いです。

バックエンドの選択方法と切り替え順序は バックエンド にあります。

登録結果の読み方​

文は 登録 され、登録には結果が伴います。

curl -fsS -H "X-API-Key: ${PP_CEP_API_KEY}" http://127.0.0.1:7400/api/v1/eql/registration
結果意味
ACTIVE起動したバックエンドが受信し、動作しています
REJECTED保存はされましたが 動作しません。 どの構成が原因であるかを示すトークンが添えられています
REJECTED は「欠陥」ではなくリストです

その数が 0 であることが正常なのではありません。拒否された文は 次に何をすべきかの入力 です — 構成を除いて書き直すか、バックエンドを変更するか、その機能をリクエストするか。

重要なのは 黙殺されない という点です。拒否は保存され、名前を持ち、照会可能です。

移植性は別途問い合わせてください。

curl -fsS -H "X-API-Key: ${PP_CEP_API_KEY}" http://127.0.0.1:7400/api/v1/eql/portability

主要 API​

パス役割
POST /api/v1/eql/deploy文の登録
POST /api/v1/eql/validate判定のみ
DELETE /api/v1/eql/undeploy/{id}登録解除
GET /api/v1/eql/registration登録結果表 (ACTIVE / REJECTED)
GET /api/v1/eql/portability移植性
GET /api/v1/eql/metrics/snapshot · /metrics/engine文ごとのマッチ率 · 出力率、エンジン指標
GET·POST·PUT·DELETE /api/v1/event-typesイベントタイプ登録
GET·POST·DELETE /api/v1/keysAPI キー
GET /api/health匿名 readiness — エンジン · キャッシュ · スキーマ
文の指標はマッチ率と出力率です

サーバーが文ごとにマッチと出力をカウントし、上記2つのエンドポイントで出力します。どのバックエンドで起動しても同一です。

文ごとの CPU · 壁時計時間は出力しません — 計測不能な値を 0 として出力すると「高速である」と誤認されるためです。

ルールの正本 — 意図は DB、事実はエンジン​

問い正本
「どのようなルールが あるべきか」cep_statement (datalake DB)
「どのようなルールが 動作しているか»起動したエンジン自身
CREATE TABLE IF NOT EXISTS cep_statement (
statement_name VARCHAR(200) NOT NULL,
eql TEXT NOT NULL,
updated_at_ms BIGINT NOT NULL DEFAULT 0,
updated_by VARCHAR(64) NOT NULL DEFAULT '',
CONSTRAINT cep_statement_pkey PRIMARY KEY (statement_name)
);

一つの文が一行であり、登録で書き込み、解除で削除します。

技術コンポーネントが業務表を読みません

CEP はルールエンジンであり、資産管理ではありません。そのため、「何を動作させるべきか」を 自己の表 に記述します。

enabled カラムがないのは意図的です

停止の信号は 行が存在しないこと のみであり、それが解除によって作られる状態です。常に真であるしかないカラムは 存在しないスイッチのように読み取られます。

statement_name が基本キーである点も同様です — 同じ名前が2つの本文を持つ状況を 解消せずに拒否 します。

updated_at_ms · updated_by はコードが読みません — 障害発生時に psql の前に座る担当者 のためのものです。

表セット(cep_statement · cep_event_type · cep_api_key)は CEP が起動時に自ら作成します。 すべて「あればそのままにする」形式であるため、値が入っている環境へのインストールでもそのまま適用されます。

入力 — Valkey ストリーム​

設定デフォルト値
ストリーム接頭辞PP:CEP-IN-STREAM
シャード数16 (cep.stream.shard_count)
一回あたりの読取件数1000
TLSオフ — 値は cache.ssl.enabled から取得
tls のデフォルト値が「オフ」なのは実測結果によるものです

プラットフォームの Valkey 設定に TLS ポート宣言がなく、プレーンテキストでサービスしています。

🔴 この値が誤っている場合、明示的な失敗にはなりません。 プレーンテキストサーバーに TLS で接続し、ハンドシェイクタイムアウト で停止しますが、それは設定問題ではなく ネットワーク障害のように 読み取られます。

失敗・停滞したイベントはデッドレターとして保存します — 静かな破棄に戻さないでください。

出力 — 文ごとにトピック一つ​

結果は文の名前ごとに一つである Valkey トピックへ出力されます。

  • 購読者が 0 の場合はログのみが残ります。 発行は購読者がなくても成功するため、ここが結果が静かに消える場所 となります。
  • 再配布時は コンシューマーを停止させた後 にレジストリをクリアします。順序が逆になると、再配布のたびにデッドレターが蓄積します。

タイムゾーン​

層値決定主体
ワイヤepoch msタイムゾーンなし。 どの PP_TZ でも同一の値
ウィンドウ境界文 > PP_TZ > 拒否WINDOW TUMBLING … AT TIME ZONE

登録応答には 実際に使用されたタイムゾーンとそのソース が共に表示されます — 「どの日の午前零時であったか」を後で再確認できなければならないためです。

JVM タイムゾーンが不一致の場合は拒否します

推測して選択しません。静かに選択されたタイムゾーンは 配備ホストごとに異なる答え を生みます。

設定値​

キーデフォルト値内容
cep.backendasterバックエンド — aster · flink. 設定しない場合は aster で起動します。その他の値(esper · siddhi などの旧値を含む)は、名前を提示して起動が停止します
cep.modenativeportable の場合、基準バックエンド(Aster CEP)にも問い合わせます
cep.stream.shard_count16入力シャード
cep.consumer.thread_count16コンシューマースレッド
cep.api.max_eql_text_length100000文の長さ上限
cep.storage.ttl_seconds864000 (10日)運用指標保存期間
cep.api.key管理 API の X-API-Key
cep.web.user · cep.web.passwordコンソールログイン — 空の場合はコンソールのみ閉鎖されます

値を変更する手順は 設定変更方法、キーのローテーションは パスワード · API キー変更 を参照してください。

コンテナ内で修正した設定は再起動時に消失します

正本は配備時にレンダリングされるテンプレートです。

関連文書​