Linux

Troubleshoot the Agent, application configuration, profiler load, transport, and Raygun ingestion as separate layers. A healthy Agent does not prove that an application loaded the profiler.

For systemd hosts:

sudo systemctl status raygunagent
curl -fsS http://127.0.0.1:18100/status
sudo journalctl -u raygunagent --since '15 minutes ago'

Use sudo service raygunagent status on OpenRC or SysV hosts. Agent log files are stored under:

/var/log/raygun-agent/

If the installed files are damaged or missing, run the production installer again. It verifies the release digest before activating it:

curl -fsSL https://downloads.raygun.com/apm/install.sh | sudo sh

The profiled application, not the Agent service, must receive:

PROTON_API_KEY
CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={e2338988-38cc-48cd-a6b6-b441c31f34f1}
CORECLR_PROFILER_PATH=/opt/raygun/agent/current/Profiler/RaygunProfiler.so
PROTON_NETWORK_MODE=Udp

AMD64 applications also use CORECLR_PROFILER_PATH_64; ARM64 applications use CORECLR_PROFILER_PATH_ARM64.

Check the application's systemd unit and overrides:

sudo systemctl cat myapp.service
sudo systemctl show myapp.service \
  --property=EnvironmentFiles --property=MainPID

The environment file should be root-owned and mode 0600. Do not print PROTON_API_KEY into a support log.

Do not paste an API key into a support ticket or public log.

CoreCLR reads the native-profiler settings only when the process starts:

sudo systemctl daemon-reload
sudo systemctl restart myapp.service

Restarting only raygunagent does not attach the profiler to an already-running application.

Read the application's process ID from systemd and check its loaded mappings:

pid=$(systemctl show myapp.service --property=MainPID --value)
sudo grep RaygunProfiler "/proc/$pid/maps"

The mapping must resolve through /opt/raygun/agent/current/Profiler/RaygunProfiler.so.

If the profiler is absent, check the architecture-specific path, file permissions, service environment, and application startup logs.

Invoke real application routes that perform normal work. Health checks can prove request capture but do not prove that database, Redis, Elasticsearch, Druid, or application methods are exercised.

Allow a few minutes for traces to appear, then confirm new traces continue instead of checking only the first request after startup.

Add these values to the application environment, not the Agent service:

PROTON_DEBUG_LOGLEVEL=Info
PROTON_DEBUG_LOGTOCONSOLE=true

Restart the application and review its standard output. Info logging is intentionally noisy, so remove these values and restart the application after diagnosis.

To write profiler logs to files instead, set PROTON_ERROR_LOG_FOLDER to a directory writable by the application identity.

A short startup increase is expected, but sustained high use should be investigated with a representative workload. Use code filtering to remove unhelpful high-frequency methods and sampling to control retained trace volume.

Do not add the retired Raygun_LowOverheadMode setting to a current 3.x installation.

If the issue remains, contact Raygun Support and include:

  • Agent and profiler version;
  • Linux distribution, glibc version, and CPU architecture;
  • .NET runtime version and hosting model;
  • Agent health response with secrets removed;
  • the time window when representative requests were made; and
  • relevant Agent and temporary profiler logs with API keys removed.