Как логировать бэкенд в лог-режиме клиента varnishncsa? - PullRequest
0 голосов
/ 25 февраля 2020

Я ищу способ включить имя бэкэнда (как настроено параметром backend vcl), к которому был отправлен запрос (или получен ответ; в любом случае) в varnishncsa вывод журнала.

При запуске varnishncsa в режиме клиента , то есть ведении журнала запросов / ответов внешнего интерфейса.

Формат журнала здесь: https://varnish-cache.org/docs/trunk/reference/varnishncsa.html#format

Я пытался найти «Расширенную переменную» (%{X}x), которая бы удовлетворяла этой опции, но пока безуспешно. Версия Varni sh - 6.x.

Нужно ли устанавливать настраиваемый заголовок запроса или ответа, чтобы он соответствовал этому первому ??

1 Ответ

2 голосов
/ 25 февраля 2020

Вы можете использовать расширенную переменную для выполнения работы.

varnishncsa из внутреннего запроса

Вот пример, где я получаю имя внутреннего бэкенда для запросы бэкэнда:

varnishncsa -b -F "%{VSL:BackendOpen[2]}x"

Вам необходим тег VSL - это тег BackendOpen, который будет возвращать следующий вывод в varnishlog:

-   BackendOpen    32 boot.bla 192.168.224.2 8080 192.168.224.3 53908

As Вы можете видеть, что имя бэкэнда является вторым полем, отсюда и выражение BackendOpen[2].

varnishncsa из клиентского запроса

В клиентском потоке серверная часть намекнула , но не открыта.

Если вы хотите получить доступ к подсказке , вам потребуется доступ к переменной req.backend_hint. Вы можете использовать std.log() для регистрации этого значения как тега VCL_Log.

Вот пример VCL:

vcl 4.0;
import std;

backend default {
  .host="1.2.3.4";
  .port="80";
}

sub vcl_recv {
  std.log("Backend: "+ req.backend_hint);
}

А вот команда varnishncsa, которая будет искать это значение :

varnishncsa -c -F "%{VSL:VCL_Log:Backend}x"

Заключение

Конечно, вам все еще нужно немного настроить команду varnishncsa, чтобы включить правильные поля и фильтр для правильных параметров, но, надеюсь, это ответит на ваш вопрос. вопрос.

Вам нужно искать имя бэкэнда на стороне клиентского запроса или на стороне запроса бэкэнда .

...