1.Too many open file handlers
Filebeat保持文件处理程序打开,直到文件到达文件末尾,以便它可以近乎实时地读取新的日志行。 如果Filebeat正在收集大量文件,则打开文件的数量可能会成为问题。 在大多数环境中,正在更新的文件数量很少。
close_inactive配置选项应相应地设置为关闭不再处于活动状态的文件。
您可以使用其他配置选项来关闭文件处理程序,但所有这些选项都应该小心使用,因为它们可能有副作用。 选项是:
close_renamed
close_removed
close_eof
close_timeout
harvester_limit
close_renamed和close_removed选项在Windows上很有用,可以解决与文件旋转相关的问题。
请参阅打开文件处理程序导致Windows文件旋转问题?
打开文件处理程序会导致Windows文件旋转问题? 在Windows上,您可能在重命名或删除文件时遇到问题,因为Filebeat会使文件处理程序保持打开状态。 这可能会导致文件旋转系统出现问题。 为避免此问题,您可以一起使用close_removed和close_renamed选项。 重要 当您配置这些选项时,收割机读取文件之前可能会关闭文件。 如果探矿者无法再次拾取文件,并且收割机尚未完成读取文件,则缺失的行将永远不会被发送到输出。
close_eof选项在具有大量只有很少条目的文件的环境中很有用。
close_timeout选项在关闭文件处理程序比发送所有日志行更重要的环境中很有用。 有关更多详细信息,请参阅设置探矿者。
确保在使用这些配置选项之前阅读这些配置选项的文档。
2.Filebeat使用了太多的CPU?
Filebeat可能被配置为频繁扫描文件。 检查filebeat.yml配置文件中scan_frequency的设置。 将scan_frequency设置为小于1s可能会导致Filebeat在频繁的循环中扫描磁盘。
3.注册文件太大?
Filebeat保持每个文件的状态并将该状态保存在registry_file中的磁盘上。 Filebeat重新启动时,文件状态用于在前一个位置继续读取文件。 如果每天都生成大量新文件,则注册表文件可能会变得太大。 要减小注册表文件的大小,有两个可用的配置选项:clean_removed和clean_inactive。
对于不再接触并忽略的旧文件(请参阅ignore_older),我们建议您使用clean_inactive。 如果旧文件从磁盘中删除,请使用clean_removed选项。
4.linux Inode重用会导致Filebeat跳过行吗?
Inode重用会导致Filebeat跳过行吗?
在Linux文件系统上,Filebeat使用inode和设备来识别文件。
从磁盘中删除文件时,可将inode分配给新文件。
在涉及文件旋转的使用情况下,如果旧文件被删除并且之后立即创建新文件,
新文件可能与删除的文件具有完全相同的inode。在这种情况下,Filebeat假定新文件与旧文件相同,并尝试在旧位置继续读取,这是不正确的。
默认状态不会从注册表文件中删除。要解决inode重用问题,我们建议您使用clean_ *选项(特别是clean_inactive)来删除非活动文件的状态。
例如,如果您的文件每24小时轮换一次,并且轮换的文件不再更新,则可以将ignore_older设置为48小时,将clean_inactive设置为72小时。
您可以将clean_removed用于从磁盘中删除的文件。请注意,clean_removed会在扫描期间无法找到文件时清除注册表中的文件状态。如果文件稍后再次显示,它将从头开始重新发送。
5.Filebeat没有运送文件的最后一行?
Filebeat使用换行符来检测事件的结束。 如果将行逐渐添加到正在采集的文件中,则在最后一行之后需要换行符,否则Filebeat将不会读取文件的最后一行。
6.Filebeat长时间保持已删除文件的打开文件处理程序(handler)?
在默认行为中,Filebeat会打开文件并保持打开状态,直到达到文件末尾。
在配置的输出很长时间(例如Elasticsearch或Logstash不可用)的情况下,这可能会导致Filebeat将文件处理程序保留到同时从文件系统中删除的文件。 只要Filebeat保持已删除的文件处于打开状态,操作系统就不会释放磁盘空间,这可能会导致磁盘利用率增加,甚至出现磁盘不足的情况。
为了缓解这个问题,您可以将close_timeoutedit设置设置为"5m"。 这将确保每5分钟关闭一次文件处理程序,而不管是否达到EOF。
请注意: 如果在Filebeat到达文件末尾之前删除文件,则此选项可能会导致数据丢失。
7.需要限制Filebeat使用的带宽?
如果您需要限制带宽使用率,我们建议您在操作系统OS上配置网络堆栈以执行带宽限制。
例如,以下Linux命令通过在通过端口5044的TCP连接上设置50 kbps的限制来限制Filebeat和Logstash之间的连接:
tc qdisc add dev $DEV root handle 1: htb tc class add dev $DEV parent 1:1 classid 1:10 htb rate 50kbps ceil 50kbps tc filter add dev $DEV parent 1:0 prio 1 protocol ip handle 10 fw flowid 1:10 iptables -A OUTPUT -t mangle -p tcp --dport 5044 -j MARK --set-mark 10
使用操作系统工具执行带宽限制可让您更好地控制策略。 例如,您可以使用操作系统工具在白天限制带宽,但不是在晚上。 或者您可以保留带宽不受限制,但为流量分配低优先级。
8.配置问题
您的配置文件的结构有问题,或者您使用了YAML分析程序无法解析的路径或表达式,因为配置文件包含未正确转义的字符。
如果YAML文件包含具有空格或不常用字符的路径,请将路径包装在单引号中(请参阅将单引号标记为包裹路径)。
另请参阅YAML提示和疑难解答中的一般建议:https://www.elastic.co/guide/en/beats/filebeat/current/yaml-tips.html
9.Kibana中的仪表板正在错误地分解数据字段?
索引模板可能未正确加载。 请参阅步骤4:在Elasticsearch中加载索引模板。
10.字段在Kibana可视化中没有索引或可用?
如果您最近执行了加载或解析自定义结构化日志的操作,则可能需要刷新索引以使字段在Kibana中可用。 要刷新索引,请使用刷新API。 例如:
curl -XPOST 'http://localhost:9200/filebeat-2016.08.09/_refresh'