Logstash和ElasticSearch之间丢失的文档
我正在运行基本的ELK堆栈。在vm中运行的所有三个组件。Logstash正在侦听TCP 9140,以获取其输入通过NxLog代理从大约30个Windows
Server 2008s和30个Windows Server 2003事件(evts)中接收的信息,并将其输出到elasticsearch。
这个已经运行了好几个星期了。我可以看到ElasticSearch每天都在创建索引,并且可以浏览文档,创建图形,这一切都很好。
经过一个周末,我意识到在星期五晚上9点,所有新活动都停止了。 没有网络问题,
所有服务器都在发送日志,我只能看到很多与Watcher(弹性插件)有关的错误/警告,但没有许可,但没什么有趣的事。我什至可以看到与新索引相关的日志已自动创建。
所以我删除了插件,重新启动了弹性,一切都很好。我认为这不是真正的问题,我认为Elasticsearch挂断了。
1)我应该如何解决这些情况。(所有服务都打开,没有索引文件)?
2)如果Logstash处于启动状态并接受输入,而Elastic处于关闭状态,那么从Windows服务器发出的那些事件会如何处理?从Nxlog的角度来看,那些日志已正确发送到logstash,因此没有理由重试并且这些日志将丢失,“永远”?
谢谢!罗德里戈。
回答:
如果ES由于某种原因(忙于GC处理等)而关闭或挂断,则logstash将重试几次,然后放开它,这意味着您将丢失这些事件。
有很多方法可以缓解这种情况,但是一个好的实践是持久地存储事件(在DB或消息队列系统中),并仅在事件成功发送到ES后才弹出它们。这样的消息传递系统包括Redis(使用列表或通道作为队列),Apache
Kafka(分布式日志),Rabbitmq(分布式消息队列)等
有很多方式与logstash一起配置这些技术,一个例子是这一个,显示Logstash正在与卡夫卡使用。在您的情况下,这意味着Nxlog将其日志发送到kafka,而不是直接发送到Logstash。然后Logstash使用来自Kafka主题的日志。
您的里程会有所不同,但是这里的主要思想是,如果您的日志无法发送到Elasticsearch,则不会丢失。这将回答您的第二个问题。
至于您的第一个,我建议您安装其他ES插件,例如bigdesk和HQ和/或官方的Marvel插件,这些插件都可以深入洞悉Elasticsearch内部正在发生的事情。您将能够快速检测出问题所在并采取措施。
以上是 Logstash和ElasticSearch之间丢失的文档 的全部内容, 来源链接: utcz.com/qa/419453.html