cloudtrail logstash mapper_parsing_exception status 400

Как я могу обновить шаблон logstash или asticsearch, чтобы избежать этой ошибки mapper_parsing_exception, отображаемой на сервере logstash. Пытаюсь поймать логовую облачную трассу в AWS, но, похоже, каждый шаг преодолевает препятствия.

Я также понимаю, что сделано с Гроком, но не знаю как!

[2018-10-06T00:28:19,948][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"cloudtrail-2018.10.06", :_type=>"doc", :_routing=>nil}, #<LogStash::Event:0x73d7cfa2>], :response=>{"index"=>{"_index"=>"cloudtrail-2018.10.06", "_type"=>"doc", "_id"=>"pIPGRmYBZjQ3shBzZDlQ", "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"object mapping for [Records.requestParameters.ebsOptimized] tried to parse field [ebsOptimized] as object, but found a concrete value"}}}}

вторая ошибка

2018-10-06T00:28:33,047][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"cloudtrail-2018.10.06", :_type=>"doc", :_routing=>nil}, #<LogStash::Event:0x7c5a7518>], :response=>{"index"=>{"_index"=>"cloudtrail-2018.10.06", "_type"=>"doc", "_id"=>"JIPGRmYBZjQ3shBzmTqd", "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"failed to parse [Records.apiVersion]", "caused_by"=>{"type"=>"illegal_argument_exception", "reason"=>"Invalid format: \"2017_03_25\" is malformed at \"_03_25\

Вот мой шаблон и динамическое отображение по умолчанию

{
  "cloudtrail": {
    "order": 0,
    "version": 60001,
    "index_patterns": [
      "cloudtrail-*"
    ],
    "settings": {
      "index": {
        "mapping": {
          "total_fields": {
            "limit": "6000"
          }
        },
        "refresh_interval": "5s"
      }
    },
    "mappings": {
      "_default_": {
        "dynamic_templates": [
          {
            "message_field": {
              "path_match": "message",
              "match_mapping_type": "string",
              "mapping": {
                "type": "text",
                "norms": false
              }
            }
          },
          {
            "string_fields": {
              "match": "*",
              "match_mapping_type": "string",
              "mapping": {
                "type": "text",
                "norms": false,
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              }
            }
          }
        ],
        "properties": {
          "@timestamp": {
            "type": "date"
          },
          "@version": {
            "type": "keyword"
          },
          "geoip": {
            "dynamic": true,
            "properties": {
              "ip": {
                "type": "ip"
              },
              "location": {
                "type": "geo_point"
              },
              "latitude": {
                "type": "half_float"
              },
              "longitude": {
                "type": "half_float"
              }
            }
          }
        }
      }
    },
    "aliases": {}
  }
}

картографирование, не уверен, почему так больше

"apiVersion": {
                "type": "date"
              },
              "awsRegion": {
                "type": "text",
                "norms": false,
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              }

ОБНОВЛЕНИЕ 1:

@ Амир Масуд Заребидаки, Спасибо. Я думал, что asticsearch делает все отображение динамически и оптимизирует также, все еще очень плохо знакомый с концепцией эластичного поиска. Однако я избавился от ошибки формата даты, добавив в свой фильтр следующее

mutate {
             gsub => [              "eventSource", "\.amazonaws\.com$", "",
              "apiVersion", "_", "-"        ]

но не уверен, если это правильный способ сделать это, потому что сейчас отсутствуют некоторые данные, и у меня есть новая ошибка в журнале в виде

[2018-10-08T13:26:16,000][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"cloudtrail-2018.10.08", :_type=>"doc", :_routing=>nil}, #<LogStash::Event:0x30ef00f4>], :response=>{"index"=>{"_index"=>"cloudtrail-2018.10.08", "_type"=>"doc", "_id"=>"aknbU2YBeGi09oGfWDua", "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"failed to parse [responseElements.role]", "caused_by"=>{"type"=>"illegal_state_exception", "reason"=>"Can't get text on a START_OBJECT at 1:230"}}}}}

0 ответов

Другие вопросы по тегам