Logging was configured correctly and shipping to Loki, but the stream was useless: measured at 100% healthcheck chatter, with every line wrapped in ANSI escape codes. The real SIP events were there and completely buried. Three causes, each masking the next: - asterisk.conf was written in the first lab commit with `nocolor = yes` and never mounted, so the setting had no effect. Now mounted. It was also overriding [directories] and runuser/rungroup, which the image sets up correctly itself — removed, since overriding them risks breaking the container for no gain. - The image's command is `-vvvdddf`: verbosity 3 and debug 3 forced on the command line, which overrides both asterisk.conf and logger.conf. Overridden in compose to drop -v and -d; warnings and errors still log, and verbosity is raisable at runtime when tracing a call. - The actual source: the image's healthcheck makes ~7 separate `asterisk -rx` connections every 30s, and Asterisk logs a connect/disconnect pair for each. Replaced with a single check on a 60s interval, and the check now runs `pjsip show transports` rather than `core show version` — that fails when Asterisk is up but unconfigured, which is exactly the state that produced a "healthy" container with no SIP stack on first deploy. logger.conf drops both `notice` and `verbose`, which is where those pairs arrive. Verified on galatea: noise down from ~48 to 8 lines per two minutes (-83%), zero ANSI codes in Loki, 90% of the stream now signal, container still healthy, transport and dialplan intact. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
25 lines
1.2 KiB
Plaintext
25 lines
1.2 KiB
Plaintext
; Log to stdout only — Docker's json-file driver captures it and the host
|
|
; Alloy ships it to Loki as job=<compose project>. Writing to a file inside
|
|
; the container would put the logs where nothing can see them.
|
|
[general]
|
|
dateformat = %F %T
|
|
; Colour is disabled in asterisk.conf (`nocolor = yes`), not here — Asterisk
|
|
; colourises the console by default and the escape codes travel through Docker
|
|
; into Loki, where every line arrives wrapped in \x1b[0;30m. That file must be
|
|
; mounted for the setting to take effect.
|
|
|
|
[logfiles]
|
|
; Warnings and errors only. That covers what matters when a lab call
|
|
; misbehaves: failed authentication, no-matching-endpoint, playback failures.
|
|
;
|
|
; `notice` and `verbose` are both excluded because the "Remote UNIX
|
|
; connection" pairs the healthcheck generates arrive on those channels, and
|
|
; they swamped everything else (the Loki stream measured 100% healthcheck
|
|
; noise before this). The healthcheck itself is also reduced to one CLI call
|
|
; on a 60s interval in docker-compose — the two changes work together.
|
|
;
|
|
; To trace a call's dialplan execution, raise verbosity at runtime rather than
|
|
; leaving it on:
|
|
; asterisk -rx "core set verbose 3"
|
|
console => warning,error
|