在单节点 Elastic Search 和 logstash 中,我们在不同类型的 AWS 实例(即中型、大型和超大型)上测试了 20mb 和 200mb 文件解析到 Elastic Search。
Logstash 会议
input {
file {
}
}
filter {
mutate
{
gsub => ["message", "\n", " "]
}
mutate
{
gsub => ["message", "\t", " "]
}
multiline
{
pattern => "^ "
what => "previous"
}
grok { match => [ "message", "%{TIME:log_time}\|%{WORD:Message_type}\|%{GREEDYDATA:Component}\|%{NUMBER:line_number}\| %{GREEDYDATA:log_message}"]
match => [ "path" , "%{GREEDYDATA}/%{GREEDYDATA:loccode}/%{GREEDYDATA:_machine}\:%{DATE:logdate}.log"]
break_on_match => false
}
#To check location is S or L
if [loccode] == "S" or [loccode] == "L" {
ruby {
code => " temp = event['_machine'].split('_')
if !temp.nil? || !temp.empty?
event['_machine'] = temp[0]
end"
}
}
mutate {
add_field => ["event_timestamp", "%{@timestamp}" ]
replace => [ "log_time", "%{logdate} %{log_time}" ]
# Remove the 'logdate' field since we don't need it anymore.
lowercase=>["loccode"]
remove => "logdate"
}
# to get all site details (site name, city and co-ordinates)
sitelocator{sitename => "loccode" datafile=>"vendor/sitelocator/SiteDetails.csv"}
date { locale=>"en"
match => [ "log_time", "yyyy-MM-dd HH:mm:ss", "MM-dd-yyyy HH:mm:ss.SSS","ISO8601" ] }
}
output {
elasticsearch{
}
}
环境详情:中型实例 3.75 RAM 1 核 存储:4 GB SSD 64 位 网络性能:中等 运行实例:Logstash、Elastic 搜索
场景:1
**With default settings**
Result :
20mb logfile 23 mins Events Per/second 175
200mb logfile 3 hrs 3 mins Events Per/second 175
Added the following to settings:
Java heap size : 2GB
bootstrap.mlockall: true
indices.fielddata.cache.size: "30%"
indices.cache.filter.size: "30%"
index.translog.flush_threshold_ops: 50000
indices.memory.index_buffer_size: 50%
# Search thread pool
threadpool.search.type: fixed
threadpool.search.size: 20
threadpool.search.queue_size: 100
**With added settings**
Result:
20mb logfile 22 mins Events Per/second 180
200mb logfile 3 hrs 07 mins Events Per/second 180
场景 2
环境详情:R3 Large 15.25 RAM 2 核 存储:32 GB SSD 64 位 网络性能:中等 运行实例:Logstash、Elastic search
**With default settings**
Result :
20mb logfile 7 mins Events Per/second 750
200mb logfile 65 mins Events Per/second 800
Added the following to settings:
Java heap size: 7gb
other parameters same as above
**With added settings**
Result:
20mb logfile 7 mins Events Per/second 800
200mb logfile 55 mins Events Per/second 800
场景 3
环境详情:R3 高内存超大 r3.xlarge 30.5 RAM 4 核 存储:32 GB SSD 64 位 网络性能:中等 运行实例:Logstash、Elastic search
**With default settings**
Result:
20mb logfile 7 mins Events Per/second 1200
200mb logfile 34 mins Events Per/second 1200
Added the following to settings:
Java heap size: 15gb
other parameters same as above
**With added settings**
Result:
20mb logfile 7 mins Events Per/second 1200
200mb logfile 34 mins Events Per/second 1200
我想知道
- 绩效的衡量标准是什么?
- 绩效是否符合基准或低于基准
- 为什么即使我增加了 elasticsearch JVM 之后仍然找不到差异?
- 如何监控 Logstash 并提高其性能?
由于我对 logstash 和 elastic search 还不熟悉,所以非常感谢您的帮助。
答案1
1-如果您想对您的性能发表评论,我们需要查看您的 logstash 过滤器配置。
Logstash 性能是过滤器/输出/工作器设置的混合。
更多过滤器 = 更少事件/秒。
如果您有 logstash 性能问题,一个好主意是扩大规模。更多的工作者和更多的实例可以增加事件/秒的性能。人们与发送者合作到 rabbimq 队列并在后面扩展 logstash 节点。
2-参见1
3- 存在 IO 限制,有时最好有更多节点。Elasticsearch 旨在与分片/节点等配合使用。
4-logstash 监控目前只是进程监控。有一些关于使用 java 调试器执行此操作的线索,但您必须在 logstash 用户组中查找信息。对于 elasticsearch,有奇迹可以监控您的 elasticsearch 集群。
答案2
我们监控logstash的方式:
1)直接监控弹性:对 ES API 进行简单的 about/info 调用(如果 ES 发生故障,您就发生故障)
2) 监控弹性统计数据。取决于您如何使用。您可以查找活动(文档数量、索引大小等)或环境中有意义的其他统计数据。如果您看到统计数据在移动,则表明 logstash 已成功将消息发送到 ES
3) Logstash 本身:只需点击它正在监听的端口即可。如果端口变暗...logstash 已死机/未运行。