Debugging
Debug Mode¶
By default, Synse Server runs with logging set at DEBUG level. To run it at INFO
level, you can either set logging: info in the Synse Server configuration YAML, or you
can set it via environment variable, e.g. SYNSE_LOGGING=info.
This can be set for docker run
docker run -p 5000:5000 -e SYNSE_LOGGING=info vaporio/synse-server
or via compose file (or other orchestration configuration)
version: '3'
services:
synse-server:
image: vaporio/synse-server
ports:
- '5000:5000'
environment:
SYNSE_LOGGING: info
Debugging gRPC¶
You may run into issues with Synse Server communicating with plugins, ranging anywhere from a bug
in the application(s), a networking issue, or issues with TLS certs. The error messages returned by
Synse Server's gRPC client may not be enough to get a detailed picture of whats going on. In such
cases, you can enable more detailed gRPC logging by setting the GRPC_TRACE and GRPC_VERBOSITY
environment variables, e.g. from compose file:
version: '3'
services:
synse-server:
image: vaporio/synse-server
ports:
- '5000:5000'
environment:
SYNSE_LOGGING: debug
GRPC_TRACE: all
GRPC_VERBOSITY: DEBUG
Additional info about these environment variables and their allowable values may be found here.
Getting Logs¶
When running Synse Server in a Docker container, its logs are output to the container's
stdout/stderr, so they can be accessed via docker logs, e.g.
docker logs synse-server
Profiling¶
As of Synse Server version v3.0.1, a --profile flag is made available to run Synse Server in
profiling mode. This uses cProfile
to gather the profiling data. When the flag is set, profiling data will be printed out to console and
written out to file (synse-server.profile).
To set the flag, pass --profile in as a command to the container, e.g.
docker run vaporio/synse-server --profile
or, in a compose file
version: '3'
services:
synse-server:
image: vaporio/synse-server
ports:
- '5000:5000'
command: ['--profile']
To get the profiling data, stop synse server (e.g. docker stop synse-server). You can view the
profiling data by:
- looking at the container logs (
docker logs synse-server) - copying the profile out of the container (
docker cp synse-server:/synse/synse-server.profile .)
From there, you can use tools like gprof2dot and
dot to create graphs of the data, or write a simple script
to parse the profiling data as desired.
For example:
$ gprof2dot -f pstats synse-server.profile -o synse-server.dot
$ dot -Tpng synse-server.dot -o synse-server.png