我有一个相对复杂的logstash管道设置,其中一些管道会馈入其他管道,拆分事件,对外部服务进行http调用,有时还会将事件反馈回它来自的管道。 (有防止无限循环的逻辑。
我正在尝试编写一些集成测试,以将测试事件输入正在运行的逻辑记录中,等待逻辑记录完成对它们的完全处理(包括它们产生的任何其他事件),然后检查结果是否符合预期。
此logstash实例不应从其他地方接收到任何其他输入,因此我认为只需检查它是否为“空闲”即可(忽略与xpack监视有关的任何事件)。
我认为pipleine stats监视API可能是我想使用的-https://www.elastic.co/guide/en/logstash/current/node-stats-api.html#pipeline-stats-但我不确定。如果每个管道的“入”和“出”值相等,是否意味着我可以确定“飞行中”就没有其他东西了?或者这些计数器由于某些其他原因而可能不同步,例如事件拆分,事件过滤?
在https://discuss.elastic.co/t/pipeline-stats-api-in-out-filtered/163742(和链接处)的讨论似乎表明“ in”和“ out”将始终同步出现,并有一个错误提示情况并非如此-https://github.com/elastic/logstash/issues/8752 -并且一个相关的错误显示了进出不同的情况-https://github.com/elastic/logstash/issues/8753
答案 0 :(得分:0)
大多数时候,我发现使用事件统计API https://www.elastic.co/guide/en/logstash/current/node-stats-api.html#event-stats并等待“出”等于“入”即可达到我想要的目的。
但是,有时我会看到“出”比“入”高-我无法追踪到这一点,但是我认为这是在其他地方出现错误时发生的。
因此,当您以后要再次删除logtash时,此检查对于集成测试可能已经足够好了-但我不想在生产中依赖它。
遗憾的是,我无法找到有关这些数字含义的任何正式定义。