運用
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/keys | API キー |
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 |
登録応答には 実際に使用されたタイムゾーンとそのソース が共に表示されます — 「どの日の午前零時であったか」を後で再確認できなければならないためです。
推測して選択しません。静かに選択されたタイムゾーンは 配備ホストごとに異なる答え を生みます。
設定値
| キー | デフォルト値 | 内容 |
|---|---|---|
cep.backend | aster | バックエンド — aster · flink. 設定しない場合は aster で起動します。その他の値(esper · siddhi などの旧値を含む)は、名前を提示して起動が停止します |
cep.mode | native | portable の場合、基準バックエンド(Aster CEP)にも問い合わせます |
cep.stream.shard_count | 16 | 入力シャード |
cep.consumer.thread_count | 16 | コンシューマースレッド |
cep.api.max_eql_text_length | 100000 | 文の長さ上限 |
cep.storage.ttl_seconds | 864000 (10日) | 運用指標保存期間 |
cep.api.key | 管理 API の X-API-Key | |
cep.web.user · cep.web.password | コンソールログイン — 空の場合はコンソールのみ閉鎖されます |
値を変更する手順は 設定変更方法、キーのローテーションは パスワード · API キー変更 を参照してください。
正本は配備時にレンダリングされるテンプレートです。