Назад | Перейти на главную страницу

Как установить время начала запроса с HAProxy?

Я хотел бы измерить время полного стека запросов. Время захвата New Relic промежуточного программного обеспечения (например, java, python, ruby) и время запроса (см. https://newrelic.com/docs/features/tracking-front-end-time). Для этого мне нужно настроить X-Request-Start заголовок, когда запрос проходит через балансировку нагрузки HAProxy. Haproxy.cfg должен выглядеть так:

backend www
  balance roundrobin
  mode http
reqadd      "X-Request-Start"  UNKNOWN_TIME_FUNCTION()
server servername 192.168.0.1:80 weight 1 check

Есть собственная функция haproxy для замены UNKNOWN_TIME_FUNCTION()?

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

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

Да и кстати, почему бы вам просто не использовать журналы haproxy как все, чтобы измерить точное время обработки? Он делает именно то, что вам нужно, с более подробной информацией (например, разделение подключения / обработки / передачи) без необходимости изменять что-либо на сервере и с большей точностью (синхронизировать две машины менее чем за 1 миллисекунду непросто).