Skip to main content

Local ingest ports

The agent can open local ports to receive data from applications on the same host. Both are off by default and bind to loopback.

Custom application metrics​

Let apps on the host POST their own KPIs (namespaced app.*), which the agent forwards up the WebSocket:

wakora --custom-metrics-port 9099

or:

[agent]
custom-metrics-port = 9099

Namespace, cardinality and payload size are enforced so a noisy app cannot blow up your metric count.

OpenTelemetry spans (APM)​

For method-level APM, the agent runs a local OTLP receiver that accepts spans over HTTP, in both JSON and protobuf. The instrumented runtime exports to this port and the agent forwards the spans up the same WebSocket, keeping the single-outbound-connection model. You rarely set this by hand: when an APM definition targets the host, the agent brings the receiver up itself and persists the setting. The same local listener also accepts the RUM beacons relayed by the PHP prepend (see RUM).

Because it speaks standard OTLP, the receiver accepts spans from any OpenTelemetry SDK, not only the PHP and .NET runtimes the agent provisions. If you already instrument a Java, Node, Python, or Go service with OTel, point its exporter at this port and the spans flow through the same pipeline.

wakora --otlp-port 4318

or:

[agent]
otlp-port = 4318

For containerized apps that cannot reach loopback, bind the receiver on an additional address, the host's own address on the Docker bridge (172.17.0.1 on a default install):

[agent]
otlp-port = 4318
otlp-bind = 172.17.0.1

The bind stays on the bridge IP rather than 0.0.0.0, so only same-network containers can reach it. See APM for the full pipeline.