Introduction
Symbolicator is a standalone service that resolves function names, file location and source context in native and JavaScript stack traces. It can process minidumps, Apple crash reports and source maps. Additionally, Symbolicator can act as a proxy to symbol servers supporting multiple formats, such as Microsoft's symbol server or Breakpad symbol repositories.
Usage
Start the server with:
$ symbolicator run -c config.yml
The configuration file can be omitted. Symbolicator will run with default settings in this case.
Configuration
Write this to a file (config.yml
):
cache_dir: "/tmp/symbolicator"
bind: "0.0.0.0:3021"
logging:
level: "info"
format: "pretty"
enable_backtraces: true
metrics:
statsd: "127.0.0.1:8125"
prefix: "symbolicator"
cache_dir
: Path to a directory to cache downloaded files and symbolication caches. Defaults to/data
inside Docker which is already defined as a persistent volume, andnull
otherwise, which disables caching. It is strictly recommended to configure caches in production!bind
: Host and port for HTTP interface.bind_https
: Host and port for optional HTTPS interface.- HTTPS support is a Cargo feature, and needs to be enabled during building:
shell cargo build --features https <other build options>
- Additionally for HTTPS support, paths to TLS certificate and key files need to be specified in the configuration file:
server_config
: web server configuration needed for serving over HTTPS.https
: HTTPS configuration.certificate_path
: Path to a TLS certificate file in PEM format.key_path
: Path to a TLS key file in PEM format.
- HTTPS support is a Cargo feature, and needs to be enabled during building:
logging
: Command line logging behavior.level
: Log level, defaults toinfo
. Can be one ofoff
,error
,warn
,info
,debug
, ortrace
.format
: The format with which to print logs. Defaults toauto
. Can be one of:json
,simplified
,pretty
, orauto
(pretty on console, simplified on tty).enable_backtraces
: Whether backtraces for errors should be computed. This causes a slight performance hit but improves debuggability. Defaults totrue
.
metrics
: Configure a statsd server to send metrics to.statsd
: The host and port to send metrics to. Defaults to STATSD_SERVER environment variable or in case it is not defined, then it defaults tonull
, which disables metric submission.prefix
: A prefix for every metric, defaults tosymbolicator
.hostname_tag
: If set, report the current hostname under the given tag name for all metrics.environment_tag
: If set, report the current environment under the given tag name for all metrics.
sentry_dsn
: DSN to a Sentry project for internal error reporting. Defaults tonull
, which disables reporting to Sentry.sources
: An optional list of preconfigured sources. If these are configured they will be used as default sources for symbolication requests and they will be proxied by the symbol proxy if enabled. The format for the sources here matches the sources in the HTTP API.symstore_proxy
: Enables or disables the symstore proxy mode. Creates an endpoint to download raw symbols from configured sources Symbolicator as if it were asymstore
(Microsoft Symbol Server) compatible server. Defaults totrue
.connect_to_reserved_ips
: Allow reserved IP addresses for requests to sources. See Security. Defaults tofalse
.traces_sample_rate
: The sample rate for traces sent to Sentry. Should be a value between0.0
and1.0
. Defaults to0.05
.propagate_traces
: When tracing is enabled, inherit the sample rate from incoming parent traces and if Sentry is used as a symbol source also propagate traces back to Sentry. Defaults totrue
.max_concurrent_requests
: The maximum number of requests symbolicator will process concurrently. Further requests will result in a 503 status code. Set it tonull
to turn off the limit. Defaults to 120.
All time units for the following configuration settings can be either a time expression like
1s
. Units can bes
,seconds
,m
,minutes
,h
,hours
,d
,days
,w
,weeks
,M
,months
,y
,years
.
max_download_timeout
: The timeout for downloading debug files.connect_timeout
: The timeout for establishing a connection to a symbol server to download debug files.streaming_timeout
: The timeout for streaming the contents of a debug file.caches
: Fine-tune cache expiry.
Time units for caches may also be
null
to disable cache expiration.
downloaded
: Fine-tune caches for downloaded files.max_unused_for
: Maximum duration to keep a file since last use of it.retry_misses_after
: Duration to wait before re-trying to download a file which was not found.retry_malformed_after
: Duration to wait before re-trying to download a file which was malformed.max_lazy_redownloads
: Symbolicator will fall back to a compatible but out-of-date cache version if available, and start computing the up-to-date version in the background. This option sets the maximum number of such lazy downloads that symbolicator will do concurrently. Defaults to 50.
derived
: Fine-tune caches for files which are derived from downloaded files. These files are usually versions of the downloaded files optimised for fast lookups.max_unused_for
: Maximum duration to keep a file since last use of it.retry_misses_after
: Duration to wait before re-trying to download a file which was not found.retry_malformed_after
: Duration to wait before re-trying to download a file which was malformed.max_lazy_recomputations
: Symbolicator will fall back to a compatible but out-of-date cache version if available, and start computing the up-to-date version in the background. This option sets the maximum number of such lazy computations that symbolicator will do concurrently. Defaults to 20.
diagnostics
: This configures the duration diagnostics data will be stored in cache. E.g. minidumps which failed to be processed correctly will be stored in this cache.retention
: Duration a file will be kept in this cache.
Security
By default, Symbolicator does not try to download debug files from reserved IP ranges. This ensures that no unintended connections are made to internal systems when source configuration is passed in from an untrusted source.
To allow internal connections, set connect_to_reserved_ips
to true
.
An exception from this rule is the "sentry"
source type. Sentry is expected to
run within the same network as Symbolicator, which is why it is exempt by
default.