一、前言
解决方案适用于各beat。
auditbeat的具体安装过程见博客ELK入门(十八)——Auditbeat安装、启动与可视化
我在安装完成auditbeat并导入模板后,发现在kibana的可视化界面没有正常生成图像,而是出现了Saved field "" is invalid for use with the "Terms" aggregation.Please select a new field.的问题。从字面看,是字段的类型不允许以“term”的方式聚合,而且模板也无法编辑。

我们到Stack Management→Index Pattern→auditbeat-*下查看event.action字段,发现该字段存在,但是Aggregation下没有小绿点,而有另一个event.action.keyword才允许Aggregation。说明字段的类型存在问题,导致我们无法正确显示。
还有很多字段都是类似的问题,例如我们查找host.name字段

查看其他beat的该字段(如metricbeat),发现hosta.name可以聚合,而且没有keyword字段,于是估计是在传入的过程中被加上的keyword。

二、解决方案
在我的传入方式中,我是采用logstash传入。于是我将auditbeat程序终止,生成的索引删除,转而用elasticsearch传入。再查看索引和dashboard,发现host.name变成可以聚合的方式,而kibana的图像也可以正常显示。接着我们再次终止auditbeat,但是索引不删除,改回用logstash传入,此时发现字段类型仍然保持可聚合的小绿点,再删除elasticsearch生成的索引,类型也没有错误。
以我目前是logstash方式传入为例,总结一下过程如下:
1.停止auditbeat,删除logstash生成的索引
2.编辑yml,用elasticsearch传输,重启后检查字段和图像
用head和kibana查看,发现图像正常显示,字段类型可Aggregation


3.停止auditbeat,不删除elasticsearch生成的索引
4.编辑yml,重新用logstash传输,重启后检查字段和图像
5.字段和图像依然正常后可删除elasticsearch生成的索引
三、后记——原理
问题成功解决后咨询了Elastic中国社区官方博客,非常感谢他给了我指导!对原理稍微有了一些认知。
要正确和模板相匹配的关键,在于有一个和模板相对应的index templates。

当我们output方式设置为elasticsearch启动后,会执行setup步骤生成这样的一个索引模式,其中host.name为keyword类型(以及其他字段也是)。有了这个索引模板,之后再用logstash导入,索引名称可以匹配这个索引模式的话,就不会出现问题。
当没有这个模板的时候, logstash 导入的数据当然就会自动变成 text 及 keyword 的 multifield 数据类型,所以在前面的图中我们看到生成了host.name.keyword字段。
因此,在导入前,我们可以检查以下这个index templates是否存在。如果没有,就先用ES启动,用中国社区博主的说法是"直接在 auditbeat.yml 里配置 elasticsearch,然后运行 auditbeat setup 就可以了"。不过我现在已经可以成功匹配,就没有重新尝试

其中,关于setup命令,可以参见博客Beats:解密 Filebeat 中的 setup 命令
224



被折叠的 条评论
为什么被折叠?



