logstash에서 성능이 매우 이상한 것으로 나타났습니다. 설정 파일을 다음과 같이 설정하면 :logstash 성능 저하
input {
kafka {
topics => ["kafka-jmx"]
bootstrap_servers => "kafka1.com:9092"
consumer_threads => 1
}
}
output {
stdout {}
}
내 소비는 kafka에서 약 20k 메시지/초입니다. RMI 리스너와 함께 logstash를 시작했기 때문에 jconsole을 통해 JVM에서 무슨 일이 벌어지는 지 알 수 있습니다.
마자이 같은 필터에 추가로 :
filter {
json {
source => "message"
}
grok {
patterns_dir => "/home/ec2-user/logstash-5.2.0/bin/patterns/"
match => {"metric_path" => [
"%{DATA:kafka_host}\.%{DATA:kafka_metric_group}:type=%{DATA:kafka_metric_type},name=%{WORD:kafka_metric_name},topic=%{KTOPIC:kafka_topic},partition=%{KPARTITION:topic_partition}\.%{GREEDYDATA:attr_type}",
"%{DATA:kafka_host}\.%{DATA:kafka_metric_group}:type=%{DATA:kafka_metric_type},name=%{WORD:kafka_metric_name},topic=%{KTOPIC:kafka_topic}\.%{GREEDYDATA:attr_type}",
"%{DATA:kafka_host}\.%{DATA:kafka_metric_group}:type=%{DATA:kafka_metric_type},name=%{GREEDYDATA:kafka_metric_name}\.%{GREEDYDATA:attr_type}"
]
}
}
ruby {
code => "event.set('time', event.get('@timestamp').to_f * 1000)"
}
mutate {
remove_field => ["message"]
convert => {"time" => "integer"
"metric_value_number" => "integer"
}
}
}
그것은 약 1,500 /에 20K/초에서
그리고 나는이 같은에서 출력을 추가 할 초
간다 :output {
influxdb {
host => "10.204.95.88"
db => "monitoring"
measurement => "BrokerMetrics"
retention_policy => "one_week"
allow_time_override => "true"
exclude_fields => ["@timestamp", "@version", "path"]
data_points => {
"time" => "%{time}"
"cluster_field" => "%{cluster}"
"kafka_host_field" => "%{kafka_host}"
"kafka_metric_group_field" => "%{kafka_metric_group}"
"kafka_metric_type_field" => "%{kafka_metric_type}"
"kafka_metric_name_field" => "%{kafka_metric_name}"
"kafka_topic_field" => "%{kafka_topic}"
"attr_type_field" => "%{attr_type}"
"cluster" => "%{[cluster]}"
"kafka_host" => "%{[kafka_host]}"
"kafka_metric_group" => "%{[kafka_metric_group]}"
"kafka_metric_type" => "%{[kafka_metric_type]}"
"kafka_metric_name" => "%{[kafka_metric_name]}"
"kafka_topic" => "%{[kafka_topic]}"
"attr_type" => "%{[attr_type]}"
"metric_value_number" => "%{metric_value_number}"
"metric_value_string" => "%{metric_value_string}"
"topic_partition_field" => "%{topic_partition}"
"topic_partition" => "%{[topic_partition]}"
}
coerce_values => {"metric_value_number" => "integer"}
send_as_tags => [ "kafka_host", "kafka_metric_group","cluster", "kafka_metric_type", "kafka_metric_name", "attr_type", "kafka_topic", "topic_partition" ]
}
}
소비가 1,500/초에서 약 300/초로 떨어진다. 그래서 결국 내 요금은 20,000/초에서 300/초로 떨어집니다.
logstash.yml 파일에 설정이 없으므로 heap_size를 2g로 설정했습니다. jvm은 많은 힙 공간을 가지고 있습니다. 나는 또한 약 60 %의 CPU 사용량만을 사용하고 있습니다 ...
왜 이런 일이 발생합니까? 나는 또한 -w 2
와 함께 시도하고 logstash를 시작했을 때 최대 4까지는 아무런 영향을 미치지 않는 것 같았습니다 ....