Skip to main content

Processor catalogue

Initialize Resources gives every user editable copies of six open-source processors, plus the WME-managed Logstash Pipeline. All six live in github.com/datacrop/maize-processor-* (Apache-2.0), run as Compose applications from the repository root on branch main, and follow the same conventions: Python 3.12, a non-root user, confluent-kafka, JSON logs on stdout, and a health check on /tmp/processor-ready.

Defaults below are the compose defaults; the definitions seeded in WME may use different defaults (for example the generator is seeded with asset demo-asset, unit C and a 15–35 range).

Telemetry Generator​

maize-processor-telemetry-generator · Data Analytics · In: — · Out: Kafka

Publishes synthetic Telemetry Event JSON records, with occasional anomalies.

ParameterDefaultMeaning
ASSET_ID, ASSET_NAMEmachine-01Asset reported on each event
METRIC, UNITtemperature, celsiusMetric name and unit
MIN_VALUE, MAX_VALUE20, 90Value range
INTERVAL_SECONDS2Time between events
ANOMALY_RATE0.05Share of anomalous values
RANDOM_SEED42Deterministic output
MAX_EVENTS0Stop after N events (0 = never)

Also reads KAFKA_SECURITY_PROTOCOL_OUTPUT, KAFKA_SASL_MECHANISM_OUTPUT, KAFKA_SASL_USERNAME_OUTPUT, KAFKA_SASL_PASSWORD_OUTPUT.

Telemetry Normalizer​

maize-processor-telemetry-normalizer · Data Analytics · In: Kafka · Out: Kafka

Validates records (timestamp, numeric value), applies value × VALUE_MULTIPLIER + VALUE_OFFSET and optionally renames the metric/unit.

ParameterDefaultMeaning
CONSUMER_GROUP_ID— (required)Kafka consumer group — unique per instance
AUTO_OFFSET_RESETearliestWhere a new group starts
OUTPUT_METRIC, OUTPUT_UNIT—Replacement metric / unit
VALUE_MULTIPLIER, VALUE_OFFSET1, 0Linear transform
INVALID_RECORD_POLICYskipskip or fail

Threshold Monitor​

maize-processor-threshold-monitor · Data Analytics · In: Kafka · Out: Kafka

Emits threshold-alert events when a metric crosses warning/critical thresholds, with a cooldown.

ParameterDefault
CONSUMER_GROUP_ID, AUTO_OFFSET_RESET—, earliest
METRICmetric to watch
COMPARISONabove or below
WARNING_THRESHOLD, CRITICAL_THRESHOLD70, 90
COOLDOWN_SECONDS60

Stream Inspector​

maize-processor-stream-inspector · Data Analytics · In: Kafka · Out: —

A sink that prints bounded records and periodic counters to stdout — ideal for checking a topic from Worker Runtime.

ParameterDefault
CONSUMER_GROUP_ID, AUTO_OFFSET_RESET—, earliest
LOG_FORMATjson or text
INCLUDE_FIELDSfields to print (empty = all)
MAX_VALUE_LENGTH1000
SUMMARY_INTERVAL_SECONDS30

Asset State Builder​

maize-processor-asset-state-builder · Data Modeling · In: Kafka · Out: Kafka

Keeps the latest state per asset in a Redis sidecar (redis:7.4-alpine with a volume) and emits Asset State records (active / stale).

ParameterDefault
CONSUMER_GROUP_ID, AUTO_OFFSET_RESET—, earliest
STATE_TTL_SECONDS86400
STALE_AFTER_SECONDS300
EMIT_INTERVAL_SECONDS10

Apache Kafka + AKHQ​

maize-processor-kafka-akhq · Data Persistence · In: — · Out: —

Infrastructure as a processor: Kafka 4.3.1 (KRaft) and AKHQ 0.27.1 on a worker — useful for an extra, workflow-local broker.

ParameterDefault
KAFKA_EXTERNAL_PORT, AKHQ_EXTERNAL_PORT19092, 18081
KAFKA_ADVERTISED_HOSTlocalhost — set to the worker's address
KAFKA_AUTO_CREATE_TOPICS_ENABLEtrue
KAFKA_NUM_PARTITIONS3

Logstash Pipeline (WME managed)​

Not a repository: WME generates a Logstash pipeline from the processor's inputs, outputs and optional logstash_filter; active pauses or resumes it. See Logstash pipelines.

Repository layout​

Each bundled processor has the same layout — a good template for your own:

maize-processor-<name>/
├─ compose.yaml # maps every variable with ${VAR:-default}
├─ Dockerfile
├─ requirements.txt
├─ src/
│ ├─ app.py # reads env, connects, touches /tmp/processor-ready
│ └─ healthcheck.py
├─ tests/
└─ .github/workflows/test.yml # ruff, pytest, docker compose config/build