Рейтинг:0

Nginx вычислил переменные журнала, используя lua

флаг ng

Я пытаюсь заставить Nginx (работающий как входной контроллер Kubernetes) регистрировать миллисекунды, а не секунды. (Это сделано для того, чтобы мы могли вводить журналы в нашу существующую систему Elasticsearch, в которой уже есть другие системы, регистрирующие ms)

Основываясь на этом Сообщение блога Я пробовал следующее в контексте «http»:

  карта $host $request_time_ms {
    по умолчанию «тест»;
  }
  log_by_lua_block { 
    ngx.var.request_time_ms = 'foo'
  }

И затем в моей строке журнала:

 '{...."duration_ms":"$request_time_ms",....}'

Но зарегистрированное значение всегда является значением по умолчанию для тестовое задание а не ожидаемый из фу.

В итоге должно получиться так:

ngx.var.request_time_ms = math.floor(tonumber(ngx.var.request_time) * 1000)

Но я просто пытаюсь заставить базовую ситуацию работать в первую очередь.

Любая идея, почему это не работает? Это как если бы log_by_lua_block просто не запускается.

Рейтинг:0
флаг gr

Я не могу воспроизвести вашу ситуацию на своем собственном сервере (должен сказать, что я не использую kubernetes или докер для тестов). Для меня эта конфигурация работает так, как ожидалось. Это действительно похоже log_by_lua_block вообще не работает на вашем входном контроллере. Но вы можете использовать следующий обходной путь, чтобы получить время запроса в миллисекундах, а не в секундах:

карта $request_time $request_time_ms {
    ~^0\.0*(\d+?)$ $1;
    ~(\d+)\.(\d+) $1$2;
}
флаг ng
Кажется, это работает, но у меня также были некоторые значения: `"duration":0.112, "duration_ms":"8"`, что странно....
Ivan Shatsky avatar
флаг gr
Это действительно выглядит странно, но у меня нет ответа, почему это происходит...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.