Не написал много в последние несколько месяцев. Причина в том, что я был на работе, создавая Опера Discover Бэкэнд обслуживания, который мы запустили на Opera Mobile для Android всего несколько дней назад.
Несколько недель до этого, во время первых сессий стресс -тестирования Discover, я написал этот маленький инструмент под названием Vlogdump
Эта опера позволила мне выставить на GitHub . Основная цель, помимо обучения awk 🙂 Это Чтобы отобразить и отфильтровать трафик, попадая в ваш лак для демона. .
Vlogdump
не предназначен для замены лаклог
Но я знаю, что иногда Varnishlog дает мне слишком много выводов, чтобы иметь дело, особенно если я хочу точно определить одного клиента или один запрос. Я знаю, что лаклог, который поставляется с лаком 3.0.x, намного лучше в этом отношении, но мы используем 2.1.x, и эта версия Varnishlog не так способна.
Vlogdump
на никто легче взглянуть, но в то же время он передает гораздо больше информации, чем varnishncsa
или типичный access.log
формат.
Вот пример вывода:
$ varnishlog | vlogdump -v only_misses=1 172.22.0.15 => GET /assets/e85ed0a7b1b87120a0a2bfa025531c6733a48802 HTTP/1.0 MISS <= 200 OK 28.432 ms 172.22.0.18 => GET /assets/5a9e9440c5c85e8dc5d65e03e15c95e390901fa7 HTTP/1.0 MISS <= 200 OK 36.905 ms 172.22.0.18 => GET /icons/categories/te/icon32x32-technology.png HTTP/1.0 MISS <= 304 Not Modified 0.589 ms 172.22.0.15 => GET /api/fetch/article-preview/?client=2&language=en-GB HTTP/1.1 MISS <= 301 MOVED PERMANENTLY 8.381 ms 172.22.0.18 => GET /assets/c3830e95b717761005e26ce49ebab253e0ccb40b HTTP/1.0 MISS <= 200 OK 291.354 ms 172.22.0.18 => GET /api/category?client=2&language=en-GB HTTP/1.1 MISS <= 200 OK 58.025 ms ...
Еще один интересный пример.
Показать запрос и заголовки ответов транзакций, которые привели к хитам в кешах и имели заголовки запросов (любой из них), соответствующие «Android» :
$ varnishlog | vlogdump -v show_req_headers=1 -v show_resp_headers=1 -v req_headers_match=Android -v only_hits=1 83.149.37.122 => GET /api/category/?... HTTP/1.1 HIT <= 200 OK 0.088 ms req.http.Accept = application/json;version=1 req.http.Accept-Encoding = gzip req.http.Host = ...opera.com req.http.Connection = Keep-Alive req.http.User-Agent = Mozilla/5.0 (Linux; Android 4.1.2; GT-N7100 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31 OPR/14.0.1074.57768 beresp.http.Server = Apache beresp.http.Content-Encoding = gzip beresp.http.Content-Type = application/json beresp.http.Vary = Accept-Encoding, Origin beresp.http.Content-Length = 4217 beresp.http.Date = Sat, 25 May 2013 07:59:53 GMT beresp.http.X-Varnish = 1611090407 1611007435 beresp.http.Age = 267 beresp.http.Via = 1.1 varnish beresp.http.Connection = keep-alive
Теперь, когда вы хотите попробовать:-), вы можете сделать это в нескольких командах и предполагая, что у вас установлен правильный Awk:
wget -q -Ovlogdump https://raw.github.com/cosimo/vlogdump/master/vlogdump varnishlog | ./vlogdump [options]
Документация перечисляет все доступные варианты.
Вы можете сделать Более интересные вещи :
- Отображение запроса или заголовков ответа для каждой транзакции (
-v
,-v
) - Показать только запросы медленнее, чем 200 мс (
vlogdump -v
) - Показать только кэш пропускает или хиты (
-v
илитолько_misses = 1
) - Показать только транзакции, где URL соответствует Regexp x (
-v
или-v
для отрицательного соответствия) - Показать только транзакции, в которых код состояния HTTP был x (
-v
) - Показать только транзакции, в которых заголовки запроса или ответа соответствуют данному регулярному выражению (
-v
,-v
)
Вы также можете объединить большинство из этих вариантов вместе. Это очень полезно, когда вы заинтересованы в небольшой доли трафика, но Вы хотите увидеть все транзакции в полете .
Одна рекомендация. Это мой первый (последний?) Значительный сценарий AWK:-) Я знаю, что это работает хорошо, и я использую его, но из -за того, как это работает, Я бы не оставил его в течение длительного времени , поскольку он будет медленно съесть вашу память, отслеживая все транзакции и клиентов.
Если у вас есть отзывы или вопросы, не стесняйтесь комментировать GitHub или отправить мне электронное письмо.
Оригинал: «https://dev.to/cosimo/display-and-filter-traffic-at-the-varnish-level-vlogdump-ihf»