Fluentd
Use fluent/fluentd:v1.16.5-debian-1.0 with the core out_http plugin. Replace YOUR_INGEST_KEY with your Epok ingest key and set the log path. Keep json_array true: this endpoint accepts a JSON array, rather than a batch of newline-delimited objects. The X-API-Key header selects your workspace and project. Make /tmp writable for the tail position file.
Configuration
<source>
@type tail
path /var/log/fluentd.log
pos_file /tmp/p2-fluentd.pos
tag p2-fluentd
read_from_head true
<parse>
@type none
</parse>
</source>
<filter p2-fluentd>
@type record_transformer
<record>
service p2-fluentd
</record>
</filter>
<match p2-fluentd>
@type http
endpoint https://ingest.getepok.dev/api/v1/fluentd
headers {"X-API-Key":"YOUR_INGEST_KEY"}
json_array true
<format>
@type json
</format>
<buffer>
@type memory
flush_interval 1s
</buffer>
</match>
Keep your ingest key private. Missing keys return 401; unknown keys return 403. A successful HTTP response alone is not proof of stored data.
Real-agent acceptance
The rig requires the unique file line and service p2-fluentd to be stored in the seeded workspace and project. Real-agent acceptance is pending the coordinator run.
From a source checkout with Docker Compose, run the isolated acceptance rig. It uses a fresh key and run marker, publishes no host ports, and removes its stack on exit. Every required stored-data check must pass.
scripts/p2_agent_acceptance.sh