как разделить документ на отдельные поля с помощью logstash

#elasticsearch #logstash #logstash-grok #logstash-configuration #logstash-file

Вопрос:

Я новичок в logstash, где я использую файл в качестве входных данных и elasticsearch в качестве выходных. Я вводлю документ mongo через файловый ввод, и когда он вставляется в elasicsearch, все это добавляется в одно поле «сообщение». Но я хочу, чтобы этот документ был доступен в разных полях elasticsearch в качестве пар ключ-значение.

Входной документ:

 {"_id" : "INC-4","name" : "Incident 4","priority" : "HIGH","prioritySort" : 2,"riskScore" : 90,"status" : "NEW","statusSort" : 0,"alertCount" : 1,"pinnedAlertCount" : 0,"containsPinnedAlerts" : false,"averageAlertRiskScore" : 90,"sealed" : false,"totalRemediationTaskCount" : NumberLong(0),"openRemediationTaskCount" : NumberLong(0),"hasRemediationTasks" : false,"created" : ISODate("2021-11-24T13:56:51.322Z"),"lastUpdated" : ISODate("2021-11-24T13:56:51.322Z"), "sources" : [ "Investigate" ],"createdBy" : "admin","breachExportStatus" : "NONE","hasDeletedAlerts" : false,"deletedAlertCount" : 0,"eventCount" : 1,"groupBySourceIp" : [ "" ],"groupByDestinationIp" : [ ""],"sentTo" : false,"_class" : "com.rsa.asoc.commons.domain.Incident", "statushistory" : [ {"date_changed" : ISODate("2021-11-24T13:56:51.328Z"),"status" : "NEW" }]}  

конфигурационный файл logstash:

 input {  file {  path =gt; "C:/Users/poler/Downloads/logstash-oss-7.10.0-windows-x86_64/files/file2.json"  start_position =gt; "beginning"  sincedb_path =gt; "NUL"  } } filter {  } output {  elasticsearch {  action =gt; "index"  hosts =gt; ["https://lt;hostIPgt;:9200"]  user =gt; "####"  password =gt; "####"  ssl_certificate_verification =gt; false  cacert =gt; "C:UserspolerDownloadslogstash-oss-7.10.0-windows-x86_64elasticsearch-cert.pem"  }  stdout{} }  

Может ли кто-нибудь, пожалуйста, помочь мне с конфигурационным файлом logstash, чтобы получить каждую пару ключ-значение в виде отдельных полей в elasticsearch??

Комментарии:

1. Вы рассматривали возможность использования фильтра json?

2. При вводе данных в формате JSON я могу получить ввод в правильном формате. Спасибо.

3. У меня также есть еще один вопрос об использовании плагина ввода JDBC, я запрашиваю данные в соответствии с полем «lastUpdated», для которого я использовал оператор jdbc в качестве оператора =gt; «db.incident.find({lastUpdated: { $gt: :sql_last_value }},{‘_id’: false})», но мои данные в базе данных похожи на «lastUpdated» : ISODate(«2021-12-01T11:45:14.736 Z»). Не могли бы вы, пожалуйста, помочь мне, как я могу прочитать этот формат метки времени через плагин ввода JDBC???