Skip to main content

Coroot-node-agent

Coroot-node-agent is a Prometheus- and OpenTelemetry-compatible agent that gathers comprehensive telemetry data about all containers running on a node and the node itself.

It collects and exports the following telemetry:

  • Metrics: Exported in Prometheus format or sent using the Prometheus Remote Write protocol.
  • Traces: eBPF-based network and application traces sent via OTLP/HTTP (OpenTelemetry protocol).
  • Logs: Discovers container logs and sends them via OTLP/HTTP.
  • Profiles: Uses the Pyroscope eBPF profiler to collect CPU profiles and sends them via a custom HTTP-based protocol.

Node Agent Configuration

You can configure coroot-node-agent using command-line flags or environment variables.

FlagEnv VariableDefaultDescription
--listenLISTEN0.0.0.0:80HTTP listen address
--cgroupfs-rootCGROUPFS_ROOT/sys/fs/cgroupPath to the host's cgroup filesystem root
--disable-log-parsingDISABLE_LOG_PARSINGfalseDisable container log parsing
--disable-json-log-parsingDISABLE_JSON_LOG_PARSINGfalseDisable extracting the message, severity, and attributes from JSON-formatted logs
--disable-pingerDISABLE_PINGERfalseDisable ICMP ping to upstreams
--disable-l7-tracingDISABLE_L7_TRACINGfalseDisable application-layer (L7) tracing
--disable-gpu-monitoringDISABLE_GPU_MONITORINGfalseDisable GPU monitoring (NVML)
--enable-java-tlsENABLE_JAVA_TLSfalseEnable Java TLS instrumentation via dynamic agent loading
--enable-java-async-profilerENABLE_JAVA_ASYNC_PROFILERfalseEnable Java profiling via async-profiler (CPU, memory allocations, lock contention)
--go-heap-profilerGO_HEAP_PROFILERenabledGo heap profiling mode: disabled, enabled (passive), or force (enable profiling in all Go apps)
--instrumentation-delayINSTRUMENTATION_DELAY30sDelay before enabling Python GIL and Node.js event loop instrumentation, after a process is started
--container-allowlistCONTAINER_ALLOWLISTList of allowed containers (regex patterns)
--container-denylistCONTAINER_DENYLISTList of denied containers (regex patterns)
--skip-systemd-system-servicesSKIP_SYSTEMD_SYSTEM_SERVICEStrueSkip well-known systemd system services (apt, motd, udev, etc.)
--exclude-http-requests-by-pathEXCLUDE_HTTP_REQUESTS_BY_PATHExclude HTTP paths from metrics/traces
--track-public-networkTRACK_PUBLIC_NETWORK0.0.0.0/0Public IP networks to track
--ephemeral-port-rangeEPHEMERAL_PORT_RANGE32768-60999TCP ports to exclude from tracking
--providerPROVIDERprovider label for node_cloud_info
--regionREGIONregion label for node_cloud_info
--availability-zoneAVAILABILITY_ZONEavailability_zone label for node_cloud_info
--instance-typeINSTANCE_TYPEinstance_type label for node_cloud_info
--instance-life-cycleINSTANCE_LIFE_CYCLEinstance_life_cycle label for node_cloud_info
--log-per-secondLOG_PER_SECOND10.0Rate limit for logs per second
--log-burstLOG_BURST100Max burst for log rate limiting
--log-patterns-per-containerLOG_PATTERNS_PER_CONTAINER256Max unique log patterns per container per level
--max-fqdns-per-containerMAX_FQDNS_PER_CONTAINER50Max unique FQDN values per container in container_dns_requests_total; extras are bucketed under ~other
--max-label-lengthMAX_LABEL_LENGTH4096Max metric label length
--collector-endpointCOLLECTOR_ENDPOINTUnified base URL for telemetry export
--api-keyAPI_KEYCoroot API key
--metrics-endpointMETRICS_ENDPOINTCustom URL for metrics export
--traces-endpointTRACES_ENDPOINTCustom URL for traces export
--traces-samplingTRACES_SAMPLING1.0Trace sampling rate (0.0 to 1.0)
--logs-endpointLOGS_ENDPOINTCustom URL for logs export
--profiles-endpointPROFILES_ENDPOINTCustom URL for profiles export
--profiles-prune-fractionPROFILES_PRUNE_FRACTION0.0025Drop insignificant profile code paths accounting for less than this fraction of the profile total (0 to disable)
--insecure-skip-verifyINSECURE_SKIP_VERIFYfalseSkip TLS certificate verification
--ca-fileCA_FILEPath to the custom CA certificate file
--scrape-intervalSCRAPE_INTERVAL15sHow often to collect internal metrics
--wal-dirWAL_DIR/tmp/coroot-node-agentDirectory for WAL storage
--max-spool-sizeMAX_SPOOL_SIZE500MBMax size for on-disk spool

Windows

The Windows agent uses the same flags, but only the platform-independent subset. Linux-only capabilities (eBPF L7 tracing and profiling, cgroups, Java/Python/Node.js instrumentation, the ICMP pinger, systemd handling, and trace/profile export) do not apply.

Flag names are identical (for example --scrape-interval), but environment variables are prefixed with COROOT_. On Windows environment variables are global, so the prefix avoids clashing with other software. For example, SCRAPE_INTERVAL becomes COROOT_SCRAPE_INTERVAL.

FlagEnv VariableDescription
--collector-endpointCOROOT_COLLECTOR_ENDPOINTBase URL of your Coroot instance
--api-keyCOROOT_API_KEYProject API key
--scrape-intervalCOROOT_SCRAPE_INTERVALMetrics collection interval
--metrics-endpoint / --logs-endpointCOROOT_METRICS_ENDPOINT / COROOT_LOGS_ENDPOINTCustom export URLs
--insecure-skip-verifyCOROOT_INSECURE_SKIP_VERIFYSkip TLS verification of the collector
--ca-fileCOROOT_CA_FILEPath to a custom CA certificate
--disable-log-parsingCOROOT_DISABLE_LOG_PARSINGDisable Windows Event Log and container log collection
--disable-json-log-parsingCOROOT_DISABLE_JSON_LOG_PARSINGDisable extracting the message, severity, and attributes from JSON-formatted logs
--disable-gpu-monitoringCOROOT_DISABLE_GPU_MONITORINGDisable NVIDIA GPU monitoring
--container-allowlist / --container-denylistCOROOT_CONTAINER_ALLOWLIST / COROOT_CONTAINER_DENYLISTRegex of services to include or exclude
--provider / --region / --availability-zone / --instance-type / --instance-life-cycleCOROOT_PROVIDER and so onOverride node_cloud_info labels
--wal-dir / --max-spool-sizeCOROOT_WAL_DIR / COROOT_MAX_SPOOL_SIZESpool directory and max size
--listenCOROOT_LISTENLocal /metrics listen address

See the Windows installation guide for setting these via the MSI or machine environment variables.

Container Environment Variables

You can disable specific functionality for individual containers by setting environment variables within the container:

Environment VariableDescription
COROOT_EBPF_PROFILING=disabledDisable eBPF profiling for this container
COROOT_LOG_MONITORING=disabledDisable log monitoring and parsing for this container
COROOT_EBPF_TRACES=disabledDisable eBPF traces for this container

These environment variables are read from the container's process environment and allow fine-grained control over which containers are monitored by the agent.

Looking for 24/7 support from the Coroot team? Subscribe to Coroot Enterprise:Start free trial