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

Конвертер необработанного файла журнала haproxy в CSV

У меня есть необработанные файлы журнала haproxy, где каждая строка выглядит примерно так:

Feb  6 12:14:14 localhost \
      haproxy[14389]: 10.0.1.2:33317 [06/Feb/2009:12:14:14.655] http-in \
      static/srv1 10/0/30/69/109 200 2750 - - ---- 1/1/1/1/0 0/0 {1wt.eu} \
      {} "GET /index.html HTTP/1.1"

Вопрос: как я могу преобразовать необработанные файлы журнала haproxy в CSV?

Я не знаю ни одного существующего инструмента навскидку. Но вы можете взять на себя работу с этим logstash Grok регулярное выражение, преобразовать в регулярное выражение на выбранном вами языке и выдать объект как csv.

Недавно я столкнулся с подобной проблемой на работе. Я нашел их очень полезными:

http://grokconstructor.appspot.com/do/match#result

https://grokdebug.herokuapp.com/

В итоге у меня получилась такая общая строка шаблона:

pattern => "%{IP:client_ip}:%{INT:client_port} \[%{HAPROXYDATE:accept_date}\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{INT:time_request}/%{INT:time_queue}/%{INT:time_backend_connect}/%{INT:time_backend_response}/%{NOTSPACE:time_duration} %{INT:http_status_code} %{NOTSPACE:bytes_read} %{DATA:captured_request_cookie} %{DATA:captured_response_cookie} %{NOTSPACE:termination_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue} (\{%{HAPROXYCAPTUREDREQUESTHEADERS}\})?( )?(\{%{HAPROXYCAPTUREDRESPONSEHEADERS}\})?( )?\"(<BADREQ>|(%{WORD:http_verb} (%{URIPROTO:http_proto}://)?(?:%{USER:http_user}(?::[^@]*)?@)?(?:%{URIHOST:http_host})?(?:%{URIPATHPARAM:http_request})?( HTTP/%{NUMBER:http_version})?))?\""

Но это требует option httplog добавление каждого внешнего интерфейса, для которого вы хотите получить показатели.