常见问题 |文件节拍参考 [6.8] |弹性的 (elastic.co)
无法从网络卷读取日志文件?
建议不要从网络卷读取日志文件。尽可能在主机上安装 Filebeat,然后 直接从那里发送日志文件。从网络卷(尤其是在 Windows 上)读取文件可能会有意想不到的一面 影响。例如,更改的文件标识符可能会导致 Filebeat 再次从头开始读取日志文件。
Filebeat 不是在收集文件中的行吗?
文件节拍可能配置不正确或无法将事件发送到输出。要解决此问题,请执行以下操作:
- 确保配置文件指定了要收集的文件的正确路径。有关详细信息,请参阅步骤 2:配置文件节拍。
- 验证文件是否早于 ignore_older 指定的值。 被禁用 默认值,因此这取决于您设置的值。您可以通过为 ignore_older 指定不同的值来更改此行为。
ignore_older
-
确保文件节拍能够将事件发送到配置的输出。在调试模式下运行 Filebeat 以确定是否 它已成功发布事件:
<span style="color:#212529"><span style="background-color:#ffffff"><span style="background-color:#343741"><span style="color:#888888"><span style="background-color:#343741"><span style="color:#f5f7fa">./</span><span style="color:#f5f7fa">filebeat </span><span style="color:#f5f7fa">-</span><span style="color:#f5f7fa">c config</span><span style="color:#f5f7fa">.</span><span style="color:#f5f7fa">yml </span><span style="color:#f5f7fa">-</span><span style="color:#f5f7fa">e </span><span style="color:#f5f7fa">-</span><span style="color:#f5f7fa">d </span><span style="color:#adefff">"*"</span></span></span></span></span></span>
打开的文件处理程序太多?
Filebeat 使文件处理程序保持打开状态,以防它到达文件末尾,以便它可以近乎实时地读取新的日志行。如果 Filebeat 正在收集大量文件,则打开的文件数量可能会成为问题。在大多数环境中,主动更新的文件数很少。应相应地设置配置选项以关闭不再处于活动状态的文件。close_inactive
您可以使用其他配置选项来关闭文件处理程序,但应谨慎使用所有这些选项,因为它们可能会产生副作用。选项包括:
和选项在 Windows 上可用于解决与文件轮换相关的问题。请参阅打开文件处理程序导致 Windows 文件轮换出现问题?。该选项在具有大量文件且只有很少条目的环境中非常有用。在关闭文件处理程序比发送所有日志行更重要的环境中,该选项非常有用。有关更多详细信息,请参阅配置输入。close_renamed
close_removed
close_eof
close_timeout
请确保在使用任何配置选项之前阅读这些配置选项的文档。
注册表文件太大?
Filebeat 保留每个文件的状态,并将状态保存到 中的磁盘。文件状态用于在重新启动 Filebeat 时继续在上一个位置读取文件。如果每天生成大量新文件,则注册表文件可能会变得太大。若要减小注册表文件的大小,有两个配置选项可用:clean_removed 和 clean_inactive。registry_file
对于不再接触且被忽略的旧文件(请参阅ignore_older),我们建议您使用 .如果旧文件从磁盘中删除,请使用该选项。clean_inactive
clean_removed
索引节点重用导致 Filebeat 跳过行?
在 Linux 文件系统上,Filebeat 使用 inode 和设备来识别文件。从磁盘中删除文件时,索引节点可能会分配给新文件。在涉及文件轮换的用例中,如果删除旧文件并立即创建新文件,则新文件可能与已删除的文件具有完全相同的索引节点。在这种情况下,Filebeat 假定新文件与旧文件相同,并尝试在旧位置继续读取,这是不正确的。
默认情况下,状态永远不会从注册表文件中删除。要解决 inode 重用问题,我们建议您使用 clean_* 选项(尤其是 clean_inactive)来删除非活动文件的状态。例如,如果文件每 24 小时轮换一次,并且轮换的文件不再更新,则可以将ignore_older设置为 48 小时,clean_inactive设置为 72 小时。
您可以将clean_removed用于从磁盘中删除的文件。请注意,每当在扫描过程中找不到文件时,都会从注册表中清除文件状态。如果文件稍后再次显示,它将从头开始再次发送。clean_removed
打开文件处理程序会导致 Windows 文件轮换出现问题?
在 Windows 上,您可能在重命名或删除文件时遇到问题,因为 Filebeat 使文件处理程序保持打开状态。这可能会导致文件轮换系统出现问题。若要避免此问题,可以同时使用“close_removed”和“close_renamed”选项。
配置这些选项时,文件可能会在收割机读取完文件之前关闭。如果输入无法再次拾取文件,并且收割机尚未完成文件读取,则丢失的行将永远不会发送到输出。
文件节拍使用了太多的 CPU?
Filebeat 可能配置为过于频繁地扫描文件。检查配置文件中的设置。设置为小于 1 秒可能会导致 Filebeat 在紧密循环中扫描磁盘。scan_frequency
filebeat.yml
scan_frequency
Kibana 中的仪表板未正确分解数据字段?
索引模板可能未正确加载。请参阅步骤 4:在 Elasticsearch 中加载索引模板。
字段未在 Kibana 可视化中编制索引或不可用?
如果您最近执行了加载或分析自定义结构化日志的操作, 您可能需要刷新索引才能使字段在 Kibana 中可用。刷新 索引,使用刷新 API。例如:
<span style="background-color:#343741"><span style="color:#212529"><span style="color:#888888"><span style="background-color:#343741"><span style="color:#f5f7fa">curl </span><span style="color:#f5f7fa">-</span><span style="color:#f5f7fa">XPOST </span><span style="color:#adefff">'http://localhost:9200/filebeat-2016.08.09/_refresh'</span></span></span></span></span>
Filebeat 没有传送文件的最后一行?
Filebeat 使用换行符来检测事件的结束。如果行以增量方式添加到正在 收获,最后一行后需要换行符,否则 Filebeat 不会读取 该文件。
Filebeat长时间保持已删除文件的打开文件处理程序?
在默认行为中,Filebeat 打开文件并使它们保持打开状态,直到 到达他们的尽头。在配置的输出被阻止的情况下 (例如,Elasticsearch或Logstash不可用)长时间,这可能会导致 Filebeat 用于将文件处理程序保留为从文件系统中删除的文件 与此同时。只要 Filebeat 使已删除的文件保持打开状态, 操作系统不会释放磁盘上的空间,这可能会导致增加 磁盘利用率甚至磁盘不足的情况。
要缓解此问题,可以将close_timeout设置设置为 。这将确保 每个文件处理程序每 5 分钟关闭一次,无论它是否 是否达到EOF。请注意,如果文件是 在文件节拍到达文件末尾之前删除。5m
需要限制 Filebeat 使用的带宽?
如果您需要限制带宽使用,我们建议您在操作系统上配置网络堆栈以执行 带宽限制。
例如,以下 Linux 命令通过设置 通过端口 5044 的 TCP 连接限制为 50 kbps:
<span style="background-color:#343741"><span style="color:#212529"><span style="color:#888888"><span style="background-color:#343741"><span style="color:#f5f7fa">tc qdisc </span><span style="color:#1ba9f5">add</span><span style="color:#f5f7fa"> dev $DEV root handle </span><span style="color:#ff886c">1</span><span style="color:#f5f7fa">:</span><span style="color:#f5f7fa"> htb
tc </span><span style="color:#1ba9f5">class</span> <span style="color:#1ba9f5">add</span><span style="color:#f5f7fa"> dev $DEV parent </span><span style="color:#ff886c">1</span><span style="color:#f5f7fa">:</span><span style="color:#ff886c">1</span><span style="color:#f5f7fa"> classid </span><span style="color:#ff886c">1</span><span style="color:#f5f7fa">:</span><span style="color:#ff886c">10</span><span style="color:#f5f7fa"> htb rate </span><span style="color:#ff886c">50kbps</span><span style="color:#f5f7fa"> ceil </span><span style="color:#ff886c">50kbps</span><span style="color:#f5f7fa">
tc filter </span><span style="color:#1ba9f5">add</span><span style="color:#f5f7fa"> dev $DEV parent </span><span style="color:#ff886c">1</span><span style="color:#f5f7fa">:</span><span style="color:#ff886c">0</span><span style="color:#f5f7fa"> prio </span><span style="color:#ff886c">1</span><span style="color:#f5f7fa"> protocol ip handle </span><span style="color:#ff886c">10</span><span style="color:#f5f7fa"> fw flowid </span><span style="color:#ff886c">1</span><span style="color:#f5f7fa">:</span><span style="color:#ff886c">10</span><span style="color:#f5f7fa">
iptables </span><span style="color:#f5f7fa">-</span><span style="color:#f5f7fa">A OUTPUT </span><span style="color:#f5f7fa">-</span><span style="color:#f5f7fa">t mangle </span><span style="color:#f5f7fa">-</span><span style="color:#f5f7fa">p tcp </span><span style="color:#f5f7fa">--</span><span style="color:#f5f7fa">dport </span><span style="color:#ff886c">5044</span> <span style="color:#f5f7fa">-</span><span style="color:#f5f7fa">j MARK </span><span style="color:#f5f7fa">--</span><span style="color:#1ba9f5">set</span><span style="color:#f5f7fa">-</span><span style="color:#f5f7fa">mark </span><span style="color:#ff886c">10</span></span></span></span></span>
使用 OS 工具执行带宽限制可以更好地控制策略。例如,您可以使用 操作系统工具在白天限制带宽,但不在晚上。或者,您可以保持带宽无上限,但为流量分配较低的优先级。
加载配置文件时出错?
在以下情况下,您可能会在 POSIX 操作系统上加载配置文件时遇到错误:
- 未经授权的用户尝试加载配置文件,或
- 配置文件具有错误的权限。
有关解决这些错误的更多信息,请参阅配置文件所有权和权限。
发现意外或未知字符?
要么你的配置文件的结构有问题,要么你有 使用了 YAML 分析器无法解析的路径或表达式,因为配置 文件包含未正确转义的字符。
如果 YAML 文件包含带有空格或不寻常字符的路径,请将 单引号中的路径(请参阅用单引号括起来的路径)。
另请参阅 YAML 提示和陷阱下的一般建议。
日志存储连接不起作用?
您可能未正确配置日志存储或文件节拍。要解决此问题,请执行以下操作:
-
确保 Logstash 正在运行,并且可以连接到它。首先,尝试 ping Logstash 主机以验证您是否可以访问它 从运行文件节拍的主机。然后使用 or 确保端口可用。例如:
nc
telnet
<span style="color:#212529"><span style="background-color:#ffffff"><span style="background-color:#343741"><span style="color:#888888"><span style="background-color:#343741"><span style="color:#f5f7fa">ping </span><span style="color:#f5f7fa"><</span><span style="color:#f5f7fa">hostname </span><span style="color:#1ba9f5">or</span><span style="color:#f5f7fa"> IP</span><span style="color:#f5f7fa">></span><span style="color:#f5f7fa"> telnet </span><span style="color:#f5f7fa"><</span><span style="color:#f5f7fa">hostname </span><span style="color:#1ba9f5">or</span><span style="color:#f5f7fa"> IP</span><span style="color:#f5f7fa">></span> <span style="color:#ff886c">5044</span></span></span></span></span></span>
- 验证 Filebeat 的配置文件是否指定了运行 Logstash 的正确端口。
- 确保 Elasticsearch 输出在配置文件中被注释掉,而 Logstash 输出被取消注释。
- 确认最新的 Beats 安装并配置了 Logstash 的输入插件。请注意,Beats 不会 连接到伐木工人输入插件。了解如何安装和更新 插件,请参阅使用插件。
洛格斯塔什缺少@metadata?
日志存储输出会自动删除字段。因此,如果 Logstash 实例是直接链接的或通过某些消息链接的 队列(例如,Redis 或 Kafka),该字段在最终的 Logstash 实例中将不可用。@metadata
@metadata
要保留字段,请使用具有重命名设置的 Logstash 变体筛选器将字段重命名为 非内部字段。@metadata
Logstash 和 Beats 的区别?
Beats 是轻量级数据发送器,您可以将其作为代理安装在服务器上,以发送特定类型的操作 数据到Elasticsearch。与 Logstash 相比,Beats 占用空间小,使用的系统资源更少。
Logstash 占用空间更大,但提供了广泛的输入、过滤器和输出插件,用于收集、丰富、 以及转换来自各种来源的数据。
有关更多信息,请参阅 Logstash 简介和 节拍概述。
SSL 客户端无法连接到 Logstash?
运行 Logstash 的主机可能无法访问,或者证书可能无效。要解决您的问题,请执行以下操作:
-
确保 Logstash 正在运行,并且可以连接到它。首先,尝试 ping Logstash 主机以验证您是否可以访问它 从运行文件节拍的主机。然后使用 or 确保端口可用。例如:
nc
telnet
<span style="color:#212529"><span style="background-color:#ffffff"><span style="background-color:#343741"><span style="color:#888888"><span style="background-color:#343741"><span style="color:#f5f7fa">ping </span><span style="color:#f5f7fa"><</span><span style="color:#f5f7fa">hostname </span><span style="color:#1ba9f5">or</span><span style="color:#f5f7fa"> IP</span><span style="color:#f5f7fa">></span><span style="color:#f5f7fa"> telnet </span><span style="color:#f5f7fa"><</span><span style="color:#f5f7fa">hostname </span><span style="color:#1ba9f5">or</span><span style="color:#f5f7fa"> IP</span><span style="color:#f5f7fa">></span> <span style="color:#ff886c">5044</span></span></span></span></span></span>
-
验证证书是否有效,以及主机名和 IP 是否匹配。
仅出于测试目的,您可以设置为禁用主机名检查。
verification_mode: none
- 使用 OpenSSL 测试与 Logstash 服务器的连接并诊断问题。有关详细信息,请参阅 OpenSSL 文档。
- 确保在为 Logstash 配置 Beats 输入插件时已启用 SSL(set )。
ssl => true
与 SSL 相关的常见错误和解决方法
以下是一些常见错误以及修复它们的方法:
x509:无法验证 <IP 地址>的证书,因为它不包含任何 IP SAN。
发生这种情况是因为您的证书仅对“主题”字段中存在的主机名有效。
若要解决此问题,请尝试以下解决方案之一:
- 为主机名创建一个 DNS 条目,将其映射到服务器的 IP。
- 为 主机名创建一个条目。或者在 Windows 上向 添加一个条目。
/etc/hosts
C:\Windows\System32\drivers\etc\hosts
- 重新创建服务器证书,并为服务器的 IP 地址添加主题AltName (SAN)。这使得 服务器的证书对主机名和 IP 地址都有效。
Getsockopt:没有到主机的路由
这不是 SSL 问题。这是一个网络问题。确保两台主机可以通信。
Getsockopt:连接被拒绝
这不是 SSL 问题。确保 Logstash 正在运行,并且没有防火墙阻止流量。
无法建立连接,因为目标计算机主动拒绝了它
防火墙拒绝连接。检查防火墙是否阻止了客户端、网络或 目标主机。
监控 UI 显示的节拍数少于预期
如果在同一主机上运行多个 Beat 实例,请确保每个实例都具有不同的值。path.data