Hi.

I have the need to print the request headers which reaches the haproxy.

Today I was sitting down and started to write this small script.

Due to the fact that this is my first lua & haproxy script I'm sure it's not the most efficient version ;-)

I appreciate any feedback ;-)

### print_headers.lua
core.register_action("print-headers",{ "http-req" }, function(transaction)
    --[[
        transaction is of class TXN.
        TXN contains contains a property 'http' which is an instance
        of HAProxy HTTP class
    ]]

    local hdr = transaction.http:req_get_headers()

    for key,value in pairs(hdr) do
      local mystr = key
      mystr = mystr .. ": "
      for _ ,val2 in pairs(value) do
        mystr = mystr .. val2
      end
      core.Info(mystr)
    end

end)

###

### haproxy.cfg
global
  log /dev/log local1 debug
  lua-load /etc/haproxy/print_headers.lua

defaults
  log global
  mode http

listen proxy001
  ....
  http-request lua.print-headers
  ....
###

One issue is that I have every entry twice in the log, I assume this could be because I defined the loglevel "debug" and the 'core.Info' is in info level

###
Jan 10 23:22:58 app001 haproxy[26681]: accept-encoding: deflate, gzip
Jan 10 23:22:58 app001 haproxy[26681]: accept-encoding: deflate, gzip
Jan 10 23:22:58 app001 haproxy[26681]: content-type: application/json
Jan 10 23:22:58 app001 haproxy[26681]: content-type: application/json
Jan 10 23:22:58 app001 haproxy[26681]: user-agent: curl/7.47.0
Jan 10 23:22:58 app001 haproxy[26681]: user-agent: curl/7.47.0
Jan 10 23:22:58 app001 haproxy[26681]: x-request-id: 3
Jan 10 23:22:58 app001 haproxy[26681]: x-request-id: 3
Jan 10 23:22:58 app001 haproxy[26681]: content-length: 63
Jan 10 23:22:58 app001 haproxy[26681]: content-length: 63
Jan 10 23:22:58 app001 haproxy[26681]: host: MY_HOST:1234
Jan 10 23:22:58 app001 haproxy[26681]: host: MY_HOST:1234
Jan 10 23:22:58 app001 haproxy[26681]: accept: */*
Jan 10 23:22:58 app001 haproxy[26681]: accept: */*
###

Thanks for feedback.

aleks


Reply via email to