一、如何调整日志的输出级别
filebeat 提供了-v命令,可以控制输出级别
二、如何指定filebeat.yml的文件路径
filebeat 提供了-c命令,可以设置文件路径
三、filebate输出es的日志乱序问题
filebeat通过批量接口输出数据到es,如果未指定timestamp,filebeat会统一生成一个当前时间。就会产生同一时间多个日志数据乱序问题。
如果我们能够指定timestamp是采集日志的时间,就可以解决这个问题。 filebeat的processor提供了timestamp配置
processors:
- timestamp:
# 日志时间字段
field: message.ts
timezone: Asia/Shanghai
layouts:
- '2006-01-02T15:04:05.999Z'
四、filebeat发送日志到es提示 405 MEHOTD MOT FOUND
如果filebeat和es的版本不一致,可能导致filebeat使用的es方法和当前es版本不兼容,尽量保持filebeat、es、kibana 三者的版本一致
五、filbeat日志发送es报错 failed to publish events
此错误的原因一般是索引无法解析,导致发送数据到es的时候报错。
例如索引配置为index:filebeat-%{[agent.version]} 同时配置删除了agent字段,导致agent.version无法解析
六、为什么修改es索引,必须修改setup.template
推送到es的数据 都是按照天建的索引,查询数据时,es是怎么知道去你这么多天纬度的索引里面查询数据,es是如何管理你的这些索引。因此需要针对这一类索引建立一个索引模版统一管理
七、filebeat是如何保证重启服务还可以继续上次的位置继续读数据
filebeat提供了registry机制,每次发送数据到es后,都会记录下当前读取到的文件offset位置。
八、filebeat如何保证发生日志切割也能正常读取
一般我们平时使用的日志库都有日志容量达到多个容量后,会进行日志备份然后在重新创建一个日志文件,大致流程
- test.log重命名为test.log.1
- 重新创建test.log filebeat的处理流程
- 打开test.log文件,记录test.log文件的inode和文件句柄
- 轮训从test.log中取日志
- test.log重命名为test.log.1时,对filebeat的读取无影响
- 继续尝试从test.log读日志,由于test.log已经备份为test.log.1因此filebeat会一致读取不到数据,到超过close.reader.after_interval(默认时5秒)时间后,filebeat会关闭当前文件。 5、filebeat重新在文件路径中查找test.log文件,此时找到了新创建的test.log文件,从头开始继续读取新文件
九、如何配置定期删除es数据
可以使用es的索引生命周期来管理es的索引数据 例如一个7天索引生命周期的配置
PUT _ilm/policy/7-days-default
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_primary_shard_size": "50gb",
"max_age": "7d"
}
}
},
"warm": {
"min_age": "2d",
"actions": {
"shrink": {
"number_of_shards": 1
},
"forcemerge": {
"max_num_segments": 1
}
}
},
"delete": {
"min_age": "7d",
"actions": {
"delete": {
"delete_searchable_snapshot": true
}
}
}
},
"_meta": {
"managed": true,
"description": "built-in ILM policy using the hot and warm phases with a retention of 7 days"
}
}
}