Skip to content

Linux (systemd)

On Linux, the agent instruments a service by attaching the matching language agent to it and restarting it. It changes only the service you chose, not the whole system. For the flow, consent, and rollback behavior, see the Application APM overview.

When you instrument a service, the agent adds the tracing settings to that service and, with your consent, restarts it so the settings take effect. Turning instrumentation off reverses the change and restarts the service, leaving it as it was. Applying the same choice twice does nothing, so it is safe to re-run.

The agent uses the standard tracing mechanism for each runtime, so the behavior matches what each language’s OpenTelemetry (OTel) agent documents.

RuntimeHow it is attached
JavaThe Java agent, through the standard JAVA_TOOL_OPTIONS startup option
Node.jsThe Node.js instrumentation, loaded at startup with NODE_OPTIONS
PythonThe Python auto-instrumentation
.NETThe .NET (CLR) profiler (less common on Linux than on Windows)

The language agents come inside the KloudMate agent package and are versioned with it, so they upgrade when the agent does and there is no separate download to manage.

The agent restarts one service at a time, only with your consent, and can wait for the service to come back up before reporting success. If a restart fails, the agent undoes the change and restarts the service, returning it to its previous state. See the overview for details.

systemd is the main method on Linux, but not the only one. Node.js and Python apps under PM2 are instrumented by restarting them with the tracing environment applied. A Java process that is not a systemd service is instrumented by runtime attach, with no restart, whether it runs as a bare java -jar process or under another supervisor. A bare Node.js or Python process still has to run under systemd or PM2 first. See Languages and process managers for the full matrix and the limits of each method.