Я хотел бы измерить время полного стека запросов. Время захвата 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 миллисекунду непросто).