Graylog的dashboard上,发现
image.pngIndexer failures
相当猖狂。12多万条!!
点进去一看,绝大多数都是这样子的:
{"type":"mapper_parsing_exception","reason":"failed to parse field [metricValue] of type [float] in document with id 'c80f3031-b5fe-11e9-9e16-0a58ac10310c'","caused_by":{"type":"illegal_argument_exception","reason":"[float] supports only finite values, but got [NaN]"}}
划重点
mapper_parsing_exception
搜索一番之后,发现这个错误应该是日志里
metricValue
的类型跟Elasticsearch的日志索引里定义的不一致导致的。网上没有找到完整的解决方法,参考官方文档得出以下步骤。
原理就是配置
"ignore_malformed": true
到索引上,用以忽略此种错误。因为这个错误其实并不影响日志的存储,所以只需要忽略掉就行了。注: Graylog版本3.1.0,Graylog后端的Elasticsearch版本6.7.0
创建graylog-custom-mapping.json
{
"settings": {
"index": {
"mapping": {
"ignore_malformed": true
}
}
},
"template": "graylog_*"
}
将graylog-custom-mapping.json
加载到Elasticsearch
$ kubectl get svc | grep graylog | grep 9200
graylog-elasticsearch-client ClusterIP 10.233.37.72 <none> 9200/TCP
$ curl -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'http://10.233.37.72:9200/_template/graylog-custom-mapping?pretty'
这个设置不会在当前active的index上立即生效,而是会等到下一个index产生的时候
$ curl -s -X GET "http://10.233.37.72:9200/graylog_deflector?pretty" | grep -A 3 setting
"settings" : {
"index" : {
"mapping" : {
"ignore_malformed" : "true"
网友评论