Troubleshooting#

If you encounter a technical issue and couldn’t find the solution in other sections, ask us a question on the community forum or in the Telegram channel.

Technical support for clients:

For inquiries regarding licenses and contracts, contact:

Debug Binaries#

Our pre-built packages for Linux include a version of the angie executable named angie-debug, which is compiled in a different way to facilitate troubleshooting:

angie

angie-debug

Purpose

Optimized for performance and used in production environments.

Intended for debugging purposes with additional debug logging and features.

Build-time Options

Built with optimization flags, without debugging symbols.

Built with debugging symbols and options for extensive logging.

Logging

Standard logging capabilities for monitoring and basic troubleshooting.

Extra logging features with detailed request processing and internal state info.

Intended Usage

To be used in production systems for stability, performance, and efficiency.

To be used in development, testing, and troubleshooting scenarios.

Performance

Minimal resource usage and maximum throughput.

Higher resource overhead and lower performance due to additional logging.

Debug Logging#

To enable debug logging when building Angie PRO from source, enable debugging for the build:

$ ./configure --with-debug ...

After installation, angie -V allows to verify that debug logging is enabled:

$ angie -V

  ...
  configure arguments: --with-debug ...

In pre-built packages for Linux, angie-debug is compiled with debug logging enabled:

$ ls -l /usr/sbin/ | grep angie
   lrwxrwxrwx 1 root root      13 Sep 21 18:58 angie -> angie-nodebug
   -rwxr-xr-x 1 root root 1561224 Sep 21 18:58 angie-debug
   -rwxr-xr-x 1 root root 1426056 Sep 21 18:58 angie-nodebug

For Angie PRO, systemd service is configured to use the angie executable:

DAEMON=${DAEMON:-/usr/sbin/angie}

To enable debug logging, set the debug level using the error_log directive:

error_log /path/to/log debug;

And configure angie-debug to run:

$ sudo ln -fs angie-debug /usr/sbin/angie
$ sudo angie -t && sudo service angie upgrade

This will initiate live executable upgrade.

To disable debug logging:

$ sudo ln -fs angie-nodebug /usr/sbin/angie
$ sudo angie -t && sudo service angie upgrade

If you leave the debug level in the error_log directive, Angie PRO will log new entries at the info level.

Overriding error_log in the configuration without specifying the debug level will disable debug logging. Here, overriding the directive at the server level disables debug logging for that server:

error_log /path/to/log debug;

http {
   server {
     error_log /path/to/log;
    # ...

To avoid this, remove the line overriding the error_log or specify the debug level in it:

error_log /path/to/log debug;

http {
   server {
     error_log /path/to/log debug;
   #  ...

Logging for Specific Addresses#

You can enable debug logging only for specified client addresses:

error_log /path/to/log;

events {
  debug_connection 192.168.1.1;
  debug_connection 192.168.10.0/24;
}

Cyclic Memory Buffer#

Debug log can be written to a cyclic memory buffer:

error_log memory:32m debug;

Writing to the memory buffer at the debug level will not significantly impact performance even under high load. In this case, the log can be extracted using a GDB script, for example:

set $log = ngx_cycle->log

while $log->writer != ngx_log_memory_writer
  set $log = $log->next
end

set $buf = (ngx_log_memory_buf_t *) $log->wdata
dump binary memory debug_log.txt $buf->start $buf->end