Re: При настройке формата логов, некоторые поля отсутствуют или стоят не на своих местах

Maxim Dounin mdounin на mdounin.ru
Ср Окт 4 15:32:54 UTC 2017


Hello!

On Wed, Oct 04, 2017 at 04:22:32AM -0400, Aleksandr_Petrov wrote:

> nginx version: nginx/1.12.1
> 
> Вот при таком формате логов: '[proxy ($upstream_cache_status) : $proxy_host
> $upstream_addr $upstream_response_time $upstream_status ], когда все
> работает логи пишутся правильно. Но когда хосты в апстримах выдают ошибки в
> логах отображается что-то не понятное. Вот примеры: 
>     1  [proxy (-) : - ip1:port1, ip2:port2 7.133, 13.312 502, 502 ] 
>     2  [proxy (-) : - ip1:port, ip2:port, ip3:port, ip4:port, ip5:port,
> ip6:port, upstream1 7.260, 7.168, 7.168, 7.168, 7.168, 7.168, 0.000 502,
> 502, 502, 502, 502, 502, 502 ]
> 
> В первом примере нет $proxy_host,

Переменная $proxy_host доступна только непосредственно в том 
location'е, где осуществляется проксирование.  Соответственно если 
в конфигурации страницы ошибок перенаправляются с помощью 
директивы erro_page, где проксирование не используется, то пустое 
значение ожидаемо.

> а во втором $proxy_host нет на своем 
> месте, но он появился в списке адресов апстримов (upstream1).

Название upstream'а попадает в переменную $upstream_addr тогда, 
когда конкретный сервер выбран быть не может, потому что все 
имеющиеся сервера признаны неработающими.  В это же время в логе 
ошибок будет ошибка про "no live upstreams".

-- 
Maxim Dounin
http://nginx.org/


Подробная информация о списке рассылки nginx-ru