Рубрики
Uncategorized

Отображать и отфильтровать трафик на уровне лака: vlogdump

Не написал много в последние несколько месяцев. Причина в том, что я работал на работе, создавая опера … Tagged с лаком, Awk, DevOps.

Не написал много в последние несколько месяцев. Причина в том, что я был на работе, создавая Опера 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»