Как записать имя сервера, который ответил на запрос

Я использую varnishncsa для регистрации запросов, которые занимают много времени, чтобы ответить на моих внутренних серверах, используя следующую команду:

varnishncsa -F '%t "%r" %s %T' | awk '$7 > 10 {print}'

Я пытался добавить информацию об имени бэкэнда, но это не отображается в выводе varnishncsa:

sub vcl_backend_response {
    std.log("backend_name:" + beresp.backend.name);
}

что я делаю не так?

1 ответ

Решение

Это не работает для вас, потому что varnishncsa по умолчанию использует режим "клиент". Включите его используя -b переключатель.

Впоследствии это будет работать:

varnishncsa -b -F '%t "%r" %s %T %{VCL_Log:backend_name}x' | awk '$7 > 10 {print}'

Возможно, вы захотите проверить полное объяснение, которое включает дополнительную оптимизацию для запроса медленных запросов бэкэнда.

Другие вопросы по тегам