Два конфига для logsta sh не работают вместе - PullRequest
0 голосов
/ 09 марта 2020

У меня есть настройка ELK для обработки haproxy и nginx журналов, для этого я использовал отдельные файлы конфигурации для logsta sh, основными данными, которые я хочу получить из журналов, являются "URL-адрес содержимого" и "ответ" время ", в haproxy время отклика в миллисекундах, например, 1345, а в nginx время отклика в секундах, например, 1,23. Чтобы привести время ответа в том же формате, я изменил время ответа haproxy на секунды, используя плагин ruby в logsta sh. И я получаю желаемые результаты как при индивидуальном запуске, так и в кибане я изменил поле времени отклика на продолжительность, на которой ввод в секундах и вывод также в секундах. Но когда я запускаю обе конфигурации вместе, время отклика для журналов ngnix возвращает значение 0,000, и я вижу тег "_grokparsefailure" в ответе json, но когда я запускаю конфигурацию ngnix по отдельности для отладки, все работает нормально, в панели управления Kibana я можно увидеть правильные значения времени отклика.

Ниже приведена конфигурация для моей Nginx logsta sh Конфиг:

input {
  beats {
    port => 5045
  }
 }


filter {
 grok {
        match => { "message" => "%{IPORHOST:clientip} - - \[%{HTTPDATE:timestamp}\] \"%{WORD:verb} %{URIPATHPARAM:content} HTTP/%{NUMBER:httpversion}\" %{NUMBER:response} %{NUMBER:response_bytes:int} \"-\" \"%{GREEDYDATA:junk}\" %{NUMBER:response_time}"}
 }
        date {
                match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
        }

}
output {
 elasticsearch {
   hosts => ["localhost:9200"]
  }

}

Ниже приведена конфигурация для моей конфигурации Haproxy logsta sh:

input {
  beats {
    port => 5044
  }
 }

filter {
  grok {
    match => { "message" => "%{MONTH:month}  %{MONTHDAY:date} %{TIME:time} %{WORD:[source]} %{WORD:[app]}\[%{DATA:[class]}\]: %{IPORHOST:[UE_IP]}:%{NUMBER:[UE_Port]} %{IPORHOST:[NATTED_IP]}:%{NUMBER:[NATTED_Source_Port]} %{IPORHOST:[NATTED_IP]}:%{NUMBER:[NATTED_Destination_Port]} %{IPORHOST:[WAN_IP]}:%{NUMBER:[WAN_Port]} \[%{HAPROXYDATE:[timestamp]}\] %{NOTSPACE:[frontend_name]}~ %{NOTSPACE:[backend_name]} %{NOTSPACE:[ty_name]}/%{NUMBER:[response_time]} %{NUMBER:[http_status_code]} %{NUMBER:[response_bytes]:int} - - ---- %{NOTSPACE:[df]} %{NOTSPACE:[df]} %{DATA:[domain_name]} %{DATA:[cache_status]} %{DATA:[domain_name]} %{URIPATHPARAM:[content]} HTTP/%{NUMBER:[http_version]}" }

  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
  ruby {
  code => "event.set('response_time', event.get('response_time').to_f / 1000)"
 }
 }

output {
  elasticsearch { hosts => ["localhost:9200"] }
        stdout {
                codec => rubydebug
        }
  }

Я подозреваю, что шаблон response_time ie% {NUMBER: [response_time]} в haproxy и nginx создает проблему. Не знаю, в чем причина этой проблемы, перепробовал все возможные вещи.

...