【问题标题】:Filebeat - Failed to publish events caused by: read tcp x.x.x.x:36196->x.x.x.x:5045: i/o timeoutFilebeat - 无法发布事件导致:读取 tcp x.x.x.x:36196->x.x.x.x:5045: i/o timeout
【发布时间】:2018-04-25 20:20:41
【问题描述】:

您好,我在通过 filebeat 将日志发送到 logstash 时遇到了问题: 简而言之-在 kibana 中看不到日志-在跟踪 filebeat 日志时,我看到了很多这些: ERROR logstash/async.go:235 Failed to publish events 由于:read tcp x.x.x.x:36246->y.y,y.y:5045: i/o timeout(而 y.y,y.y 是 logstash 地址,5045 是打开的节拍端口)

更多详情: 我有大约 60 台安装了 filebeat 6.1.1 的机器和一台安装了 logstash 6.2.3 的 logstash 机器。 有些文件节拍成功发送了他们的日志,而有些则抛出了我上面提到的错误。 那些非错误文件发送旧日志 - 意味着我可以在 logstash 调试日志中看到一些日志时间戳是 2 或 3 天前

Logstash 使用内存为 35%,峰值时 CPU 使用率接近 75%, 在 filebeat 机器的 netstat -tupn 输出中,我可以看到已建立从 filebeat 到 logstash 的连接。

谁能帮我找出问题?

【问题讨论】:

    标签: logstash filebeat


    【解决方案1】:

    看起来像 logstash 性能问题。 CPU使用率可能太高内存可能更多。将最小 (Xms) 和最大 (Xmx) 堆分配大小增加到 =[主机中的总量 - 1], (live 1 G to the Os) 并将其设置为等于 (xms=xmx)

    您还可以运行另一个 logstash 实例并将 filebeat 输出平衡到这两个实例,然后看看会发生什么。

    要考虑的更多事项:

    性能检查表

    检查输入源和输出目标的性能:

    Logstash 的速度与其连接的服务一样快。 Logstash 只能以与其输入和输出目的地一样快的速度使用和生成数据! 检查系统统计信息:

    CPU

    注意 CPU 是否被大量使用。在 Linux/Unix 上,您可以运行 top -H 来查看按线程划分的进程统计信息,以及总 CPU 统计信息。 如果 CPU 使用率很高,请跳到有关检查 JVM 堆的部分,然后阅读有关调整 Logstash 工作器设置的部分。

    内存

    请注意 Logstash 在 Java VM 上运行的事实。这意味着 Logstash 将始终使用您分配给它的最大内存量。 寻找使用大量内存并可能导致 Logstash 交换到磁盘的其他应用程序。如果应用程序使用的总内存超过物理内存,就会发生这种情况。 I/O 利用率

    监控磁盘 I/O 以检查磁盘饱和度。

    如果您使用的 Logstash 插件(例如文件输出)可能会使您的存储空间饱和,则可能会发生磁盘饱和。 如果您遇到许多迫使 Logstash 生成大量错误日志的错误,也会发生磁盘饱和。 在 Linux 上,您可以使用 iostat、dstat 或类似的东西来监控磁盘 I/O。

    监控网络 I/O 以了解网络饱和度。

    如果您使用执行大量网络操作的输入/输出,可能会发生网络饱和。 在 Linux 上,您可以使用 dstat 或 iftop 之类的工具来监控您的网络。 检查 JVM 堆:

    如果堆大小太低,CPU 利用率通常会达到顶峰,导致 JVM 不断地进行垃圾收集。 检查此问题的一种快速方法是将堆大小加倍并查看性能是否有所提高。不要将堆大小增加到超过物理内存量。为操作系统和其他进程留出至少 1GB 的可用空间。 您可以使用随 Java 分发的 jmap 命令行实用程序或使用 VisualVM 对 JVM 堆进行更准确的测量。有关详细信息,请参阅对 Heapedit 进行分析。

    始终确保将最小 (Xms) 和最大 (Xmx) 堆分配大小设置为相同的值,以防止堆在运行时调整大小,这是一个非常昂贵的过程。 调整 Logstash 工作器设置:

    首先使用 -w 标志增加管道工作者的数量。这将增加可用于过滤器和输出的线程数。如果需要,将其扩展到多个 CPU 内核是安全的,因为线程可以在 I/O 上空闲。 您还可以调整输出批量大小。对于许多输出,例如 Elasticsearch 输出,此设置将对应于 I/O 操作的大小。对于 Elasticsearch 输出,此设置对应于批量大小。

    More info here.

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 2021-09-24
      • 2021-06-11
      • 2021-11-22
      • 2018-04-27
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      相关资源
      最近更新 更多