Logsta sh конвертировать выходной формат даты - PullRequest
0 голосов
/ 28 февраля 2020

Я использую logsta sh, чтобы получить данные из mysql и передать их вasticsearch. К сожалению, формат даты по умолчанию анализируется на время Зулу. При необходимости получите данные в формате datetime, например yyyy-mm-dd H:i:s без t и z. Ниже мой logsta sh config

jdbc {
jdbc_driver_library => "/etc/mysql/driver/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/db"
jdbc_user => root
jdbc_password => "secret"
tracking_column => "id"
use_column_value=> true
statement => "SELECT * FROM db.logs;"
schedule => " * * * * * *"
}

}

output {
elasticsearch {
document_id=> "%{id}"
document_type => "_doc"
index => "logs"
hosts => "http://localhost:9200"
sniffing => true
}

stdout{
codec => rubydebug
  }
}

filter {

date {
match => ["date", "yyyy-MM-dd HH:mm:ss"]
   }
}

В этом случае я получил "_dateparsefailure". Я также пытался использовать с mutate gsub и convert, но безуспешно.

Теперь результат равен "date" => "2020-02-28T09:18:18.000Z", но ожидаемый результат равен 2020-02-28 9:19:18

.

1 Ответ

0 голосов
/ 28 февраля 2020

Фильтр даты полезен, но не всегда является лучшим вариантом.

Прежде всего вы можете попробовать использовать этот инструмент, чтобы найти правильный формат для вашей даты: https://esddd.herokuapp.com/

Если он не работает с фильтром даты, вам нужно добавить шаблон в elasticsaerch.

Для этого вам нужно создать файл json, подобный этому:

{                                                                                                                                                                                                                  
    "index_patterns": [                                                                                                                                                                                            
      "YOUR INDEX PATTERN"                                                                                                                                                                                                                                                                                                                                                                                                   
    ],                                                                                                                                                                                                             
    "order": 0,                                     
    "mappings": {                                   
      "dynamic_templates": [                        
          {                                           
          "timestamp_fix": {                        
            "path_match": "THE NAME OF YOUR DATE FIELD",              
            "mapping": {                            
              "type": "date",                       
              "format": "FORMAT OF THE DATE YOU WANT"
            }                                       
          }                                         
        }                                           
      ]                                             
    }        

и затем вы должны поместить в logsta sh вывод следующих параметров:

 template => "PATH TO YOUR JSON FILE"
 template_name => "template_fix"
 template_overwrite => true

, как описано в logsta sh документации здесь: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html

Дайте мне знать, если это работает! Удачи!

...