如何查看Logstash同步Elasticsearch时处理的记录数量?
如何查看Logstash处理的记录数
针对你同步300万份文档、只能看到启动/停止日志的情况,这里有几个实用的方案来跟踪处理进度和记录数:
1. 用Metrics插件实时输出统计
这是最直观的方式,只需在你的Logstash配置里添加metrics过滤器,它会定期打印累计处理的事件数。比如在filter段加入:
filter { metrics { meter => "processed_events" add_tag => "metric" flush_interval => 30 # 每30秒输出一次,可按需调整 } } output { # 输出统计信息到控制台或日志文件 if "metric" in [tags] { stdout { codec => line { format => "已处理 %{[processed_events][count]} 条记录,最近1分钟速率:%{[processed_events][rate_1m]} 条/分钟" } } } # 保留你原有的Elasticsearch输出配置 elasticsearch { hosts => ["your-es-host:9200"] index => "your-target-index" # ... 其他配置 } }
修改后重启Logstash,就能每隔30秒看到实时的处理进度了。
2. 调用Logstash监控API获取精准数据
Logstash默认开启了监控API(默认端口9600),通过HTTP请求就能拿到管道的实时统计:
curl http://your-logstash-host:9600/_node/stats/pipeline
返回的JSON里,events.in是进入管道的总记录数,events.out是成功输出到Elasticsearch的记录数,这两个数值能帮你判断同步的完成度。
3. 调整Logstash日志级别输出统计
如果不想修改配置文件,你可以调高Logstash的日志级别到info,它会自动定期输出管道的处理统计。找到Logstash安装目录下的config/log4j2.properties,修改:
logger.logstash.level = info
重启后,日志里会出现类似[INFO ][logstash.pipeline ] Pipeline processed 12345 events的条目,虽然不如metrics插件频繁,但也能跟踪进度。
4. 同步完成后用Elasticsearch验证总数
如果只是想确认最终同步的文档数,直接在Elasticsearch里执行计数查询就行:
curl -X GET "your-es-host:9200/your-index/_count"
返回的count字段就是目标索引的文档总数,和你预期的300万对比就能验证同步是否完整。
内容的提问来源于stack exchange,提问作者Manikandan
相关产品推荐
相关产品推荐

