如何增大Graylog(基于Elasticsearch)的日志消息最大存储尺寸?
解决Graylog自定义映射未生效的问题
咱们一步步来排查你的自定义映射没在新索引graylog_5上生效的原因,毕竟要突破32KB的消息尺寸限制,映射生效是核心前提。
1. 先确认自定义模板的优先级与匹配规则
Graylog自带的默认索引模板优先级可能比你的自定义模板高,导致新索引没应用你的配置。你可以先做这两步检查:
- 用命令查看所有Elasticsearch模板,重点对比优先级和匹配模式:
curl -X GET 'http://localhost:9200/_template?pretty' - 找到你的
graylog-custom-mapping模板,确认两点:order值(优先级)要高于Graylog默认模板(默认模板order一般是0,你可以把自定义模板设为10,确保它优先被应用)index_patterns要匹配Graylog的索引命名规则,比如设为graylog_*,这样新创建的graylog_5才能被匹配到
2. 验证自定义映射文件的格式与内容
你的graylog-custom-mapping.json可能存在格式错误,导致Elasticsearch无法正确解析。移除full_message字段索引的正确映射示例应该是这样的:
{ "index_patterns": ["graylog_*"], "order": 10, "mappings": { "_doc": { "properties": { "full_message": { "type": "text", "index": false } } } } }
你可以用本地的JSON校验工具检查文件是否有语法错误,比如逗号遗漏、括号不匹配等问题。
3. 确认模板已成功加载到Elasticsearch
重新上传模板时,务必确保命令执行成功:
curl -X PUT -d @'graylog-custom-mapping.json' 'http://localhost:9200/_template/graylog-custom-mapping?pretty'
如果返回"acknowledged": true,说明模板上传成功;如果有错误提示,根据提示修正问题(比如JSON格式、字段定义错误)。
4. 检查新索引的实际映射
等deflector切换到graylog_5后,用命令查看该索引的实际映射:
curl -X GET 'http://localhost:9200/graylog_5/_mapping?pretty'
重点看full_message字段的index属性是否为false。如果不是,说明模板没被应用,回到前面的步骤排查优先级和匹配规则。
5. 别忘了修改Graylog本身的消息尺寸限制
除了Elasticsearch的映射,你还需要调整Graylog的配置来允许更大的消息:
- 编辑Graylog的配置文件(比如
/etc/graylog/server/server.conf),修改参数:# 单位为字节,比如设为1MB就是1048576 message_size_limit = 1048576 - 如果使用了Beats等输入插件,还要在对应的输入配置里调整最大字节数
- 修改后重启Graylog服务,确保配置生效
等所有配置都调整正确后,再次手动循环deflector创建新索引,再检查映射是否生效,这样应该就能解决消息尺寸限制的问题了。
内容的提问来源于stack exchange,提问作者Paul




