#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???