You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Logstash的amazon_es插件时模板安装失败求助

解决Logstash amazon_es插件的Failed to parse mapping [default]错误

我来帮你搞定这个Logstash amazon_es插件的模板解析错误,我之前处理过类似的问题,下面是几个实用的解决办法:

首先先明确你的配置和遇到的错误:

你的Logstash配置:

input { 
  tcp { 
    host => "0.0.0.0" 
    port => 5959 
    codec => json 
  } 
}
output { 
  amazon_es { 
    hosts => ["XXXXXXX.ap-south-1.es.amazonaws.com"] 
    region => "ap-south-1" 
    aws_access_key_id => "XXXXXXXXX" 
    aws_secret_access_key => "XXXXXXXXXXXXX" 
    index => "production-logs-%(YYYY-MM-dd)" 
  } 
}

遇到的错误信息:

[ERROR] 2018-04-17 12:03:59.056 [[main]-pipeline-manager] amazones - Failed to install template: Failed to parse mapping [default]


错误原因分析

这个问题主要有两个常见诱因:

  1. Logstash的amazon_es插件默认自动生成的索引模板,语法和你使用的AWS Elasticsearch Service版本不兼容(比如AWS ES 6.x/7.x已经废弃了旧的_type映射字段);
  2. 你配置的索引名格式有误,导致插件在生成模板时出现解析问题。

具体解决方案

1. 先修正索引名的语法错误

你现在用的%(YYYY-MM-dd)不是Logstash正确的日期变量格式,正确的写法应该是%{+YYYY-MM-dd},这样Logstash才能正确生成按日期分割的索引名。修改后的output配置如下:

output { 
  amazon_es { 
    hosts => ["XXXXXXX.ap-south-1.es.amazonaws.com"] 
    region => "ap-south-1" 
    aws_access_key_id => "XXXXXXXXX" 
    aws_secret_access_key => "XXXXXXXXXXXXX" 
    index => "production-logs-%{+YYYY-MM-dd}" 
  } 
}

2. 禁用自动模板安装,手动创建兼容的索引模板

插件自动生成的模板经常会有版本兼容性问题,最稳妥的方式是禁用自动模板管理,自己创建符合AWS ES版本的模板:

  • 第一步:在amazon_es输出配置中添加manage_template => false,告诉Logstash不要自动安装模板:
    output { 
      amazon_es { 
        hosts => ["XXXXXXX.ap-south-1.es.amazonaws.com"] 
        region => "ap-south-1" 
        aws_access_key_id => "XXXXXXXXX" 
        aws_secret_access_key => "XXXXXXXXXXXXX" 
        index => "production-logs-%{+YYYY-MM-dd}"
        manage_template => false  # 新增这一行
      } 
    }
    
  • 第二步:用AWS CLI手动创建索引模板(假设你已经配置好AWS凭证),替换YOUR_ES_DOMAIN_NAME为你的AWS ES域名:
    aws es put-template --domain-name YOUR_ES_DOMAIN_NAME --name production-logs-template --body '{
      "index_patterns": ["production-logs-*"],
      "mappings": {
        "properties": {
          "@timestamp": { "type": "date" },
          "@version": { "type": "keyword" },
          "message": { "type": "text" }
          # 可以根据你的日志字段添加更多映射规则
        }
      },
      "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 1
      }
    }'
    

3. 检查并升级amazon_es插件版本

如果你的Logstash版本和amazon_es插件版本不匹配,也会导致模板语法错误。比如旧版本插件会生成包含_type字段的映射,而AWS ES 6.x+已经不再支持多个文档类型,7.x更是完全移除了_type。

升级插件的命令(在Logstash安装目录下执行):

bin/logstash-plugin update logstash-output-amazon_es

升级完成后重启Logstash,再测试日志推送是否正常。


内容的提问来源于stack exchange,提问作者sadaf2605

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:21:25