Я отправляю 25000 журналов из filebeat наasticsearch и на другой http-сервер (весенняя загрузка), используя filebeat и logstash. Чтобы отправлять журналы в два места, я использую logstash конвейер для связи с конвейером механизм с шаблоном выходного изолятора . Но проблема в том, что filebeat вместо этого отправляет не все журналы, просто отправляет 5000 журналов, и в журнале отладки он показывает, как показано ниже.
Журнал отладки Filebeat
2019-05-29T15:39:46.993+0530 DEBUG [monitoring] memqueue/ackloop.go:160 ackloop: receive ack [295: 0, 1]
2019-05-29T15:39:46.994+0530 DEBUG [monitoring] memqueue/eventloop.go:226 handle ACKs: 1
2019-05-29T15:39:46.994+0530 DEBUG [monitoring] memqueue/eventloop.go:251 try ack index: (idx=0, i=0, seq=296)
2019-05-29T15:39:46.994+0530 DEBUG [monitoring] memqueue/eventloop.go:269 broker ACK events: count=1, start-seq=296, end-seq=296
2019-05-29T15:39:46.994+0530 DEBUG [monitoring] memqueue/eventloop.go:228 handle ACK took: 130.793µs
2019-05-29T15:39:46.994+0530 DEBUG [monitoring] memqueue/ackloop.go:128 ackloop: return ack to broker loop:1
2019-05-29T15:39:46.994+0530 DEBUG [monitoring] memqueue/ackloop.go:131 ackloop: done send ack
2019-05-29T15:39:47.134+0530 DEBUG [input] input/input.go:152 Run input
2019-05-29T15:39:47.134+0530 DEBUG [input] log/input.go:174 Start next scan
2019-05-29T15:39:47.134+0530 DEBUG [input] log/input.go:404 Check file for harvesting: /home/nishan/Documents/input_logs/request-response-logger.log
2019-05-29T15:39:47.134+0530 DEBUG [input] log/input.go:494 Update existing file for harvesting: /home/nishan/Documents/input_logs/request-response-logger.log, offset: 33311469
2019-05-29T15:39:47.134+0530 DEBUG [input] log/input.go:546 Harvester for file is still running: /home/nishan/Documents/input_logs/request-response-logger.log
2019-05-29T15:39:47.134+0530 DEBUG [input] log/input.go:195 input states cleaned up. Before: 1, After: 1, Pending: 0
Ниже приведены конфигурации в filebeat и logstash.
pipeline.yml
- pipeline.id: intake
queue.type: persisted
config.string: |
input { beats { port => 5043 } }
output { pipeline { send_to => [spring, es_out] } }
- pipeline.id: spring
queue.type: persisted
path.config: "/home/nishan/Documents/logstash-config/spring.conf"
queue.max_bytes: 15mb
- pipeline.id: elastic
queue.type: persisted
path.config: "/home/nishan/Documents/json_push/configurations/elastic.conf"
queue.max_bytes: 500mb
filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/nishan/Documents/input_logs/*.log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 3
setup.kibana:
output.logstash:
hosts: ["localhost:5043"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
logstash.yml
pipeline.batch.size: 5
pipeline.batch.delay: 500
path.queue: /home/nishan/Documents/data_files
Если я установлю queue.max_bytes: 1024mb в pipe.yml, он будет работать нормально, и все данные будут отправлены наasticsearch и spring server. Я предполагаю, что это может быть проблемой из-за низкого размера очереди (15 МБ), которую я использовал. Но в logstash reference говорится, что он будет обрабатывать обратное давление путем отклонения соединений, пока очередь заполнена, и он принимает соединения, когда в очередях есть место. В чем может быть причина?
Примечание:
Я использую logstash и filebeat версии 6.7 в Ubuntu 18.04.