如何将大文件从 logstash 上传和解析到 Elasticsearch
how can I upload and parse big files from logstash to Elasticsearch
我有一个包含 1 个主节点和 2 个数据节点的 3 节点集群,每个节点设置为 1TB
我已将 -Xms24g -Xmx24g 都增加到我的内存的一半(总共 48GB)
在将文件从 100mb 增加到 1GB 之后,我成功地将 140mb 文件从 Kibana 上传到 elk
当我尝试仅使用 logstash 上传相同的文件时,该过程卡住了并破坏了弹性
我的管道相当简单
input {
file {
path => "/tmp/*_log"
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
小文件效果很好。我无法推送大文件。
日志包含 100 万行
我将 /etc/security/limits.conf 中的所有字段设置为无限制
有什么想法我想念的吗?
您需要在 /etc/logstash/jvm.options
中增加内存大小
典型摄取场景的建议堆大小应不少于 4GB 且不超过 8GB。
CPU 如果堆大小太小,利用率可能会不必要地增加,导致 JVM 不断收集垃圾。您可以通过将堆大小加倍以查看性能是否有所提高来检查此问题。
不要将堆大小增加到超过物理内存量。一些内存必须留给 运行 OS 和其他进程。作为大多数安装的一般准则,不要超过物理内存的 50-75%。您拥有的内存越多,您可以使用的百分比就越高。
将最小 (Xms) 和最大 (Xmx) 堆分配大小设置为相同的值,以防止堆在 运行 时调整大小,这是一个非常昂贵的过程。
您可以使用随 Java 分发的 jmap 命令行实用程序或使用 VisualVM
更准确地测量 JVM 堆
我有一个包含 1 个主节点和 2 个数据节点的 3 节点集群,每个节点设置为 1TB 我已将 -Xms24g -Xmx24g 都增加到我的内存的一半(总共 48GB) 在将文件从 100mb 增加到 1GB 之后,我成功地将 140mb 文件从 Kibana 上传到 elk 当我尝试仅使用 logstash 上传相同的文件时,该过程卡住了并破坏了弹性 我的管道相当简单
input {
file {
path => "/tmp/*_log"
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
小文件效果很好。我无法推送大文件。 日志包含 100 万行 我将 /etc/security/limits.conf 中的所有字段设置为无限制 有什么想法我想念的吗?
您需要在 /etc/logstash/jvm.options
中增加内存大小典型摄取场景的建议堆大小应不少于 4GB 且不超过 8GB。
CPU 如果堆大小太小,利用率可能会不必要地增加,导致 JVM 不断收集垃圾。您可以通过将堆大小加倍以查看性能是否有所提高来检查此问题。 不要将堆大小增加到超过物理内存量。一些内存必须留给 运行 OS 和其他进程。作为大多数安装的一般准则,不要超过物理内存的 50-75%。您拥有的内存越多,您可以使用的百分比就越高。
将最小 (Xms) 和最大 (Xmx) 堆分配大小设置为相同的值,以防止堆在 运行 时调整大小,这是一个非常昂贵的过程。
您可以使用随 Java 分发的 jmap 命令行实用程序或使用 VisualVM
更准确地测量 JVM 堆