Измените секунды на миллисекунды в logstash - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь сравнить два файла журнала haproxy и nginx, используя стек ELK, особенно время отклика в logta sh Я создал два отдельных файла конфигурации в logsta sh для haproxy и nginx, В haproxy I Я получаю время отклика в миллисекундах, например: 2334 и nginx Я получаю его в секундах, например: 1,23.

Я хочу преобразовать время отклика nginx в миллисекундах, я пытался преобразовать он использует фильтр ruby, но не получает правильные результаты, и я думаю, что он конфликтует с моим текущим индексом эластичного поиска, созданным для haproxy.

Ниже приведены два моих файла конфигурации:

Haproxy logsta sh Conf:

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:[accept_date]}\] %{NOTSPACE:[frontend_name]}~ %{NOTSPACE:[backend_name]} %{NOTSPACE:[ty_name]}/%{NUMBER:[response_time]:int} %{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]}" }
    add_tag => [ "response_time", "response_time" ]

  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
 }

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

Nginx logsta sh conf file

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}"}
 }
       ruby {
               code => "event.set('response_time', event.get('response_time').to_i * 1000)"
       }
}
output {
 elasticsearch {
   hosts => ["localhost:9200"]
  }
 stdout { codec => rubydebug }
}

1 Ответ

1 голос
/ 08 марта 2020
grok {
match => { "message" => "%{IPV4:clientip} - - [%{HTTPDATE:requesttimestamp}] "%{WORD:httpmethod} /" %{NUMBER:responsecode:int} %{NUMBER:responsesize:int} "-" "-" "-" "%{NUMBER:responsetimems:float}""}
}
ruby {
code => "event.set('responsetimems', event.get('responsetimems').to_i * 1000)"
}
...