2016-11-15 27 views
0

我正在用Django + Celery开发一个Web应用程序,并且我希望添加一个简单的堆栈来让我跟踪事件并获取统计信息。我的第一个想法是Elasticsearch + Kibana,但我不想让我的部署复杂化(我已经在使用AWS Elasticsearch)。所以我想知道为什么当我可以直接将事件发送到Elasticsearch(在Celery的背景下)时,我需要Logstash之类的东西。使用芹菜作为Logstash的简单替代方案

例如,如果我必须设置Redis或RabbitMQ将消息发送到Logstash,以便它可以发送到Elasticsearch,那么我可以对我已经运行的Celery执行相同的操作。

我的计划是从Django调用一个Celery任务,并将一系列事件发送给Elasticsearch。我正在使用AWS SQS连接Celery。

我明白,用Logstash我可以合并不同的来源,但这不是我现在的问题。实际上,我已经在使用AWS CloudWatch集中日志,这可以完成与Logstash相同的工作,但将JSON事件直接发送到Elasticsearch更容易。

当然,我错过了一些东西,因为我没有发现任何人使用芹菜。但我想知道原因。

我的网络现在非常小,我应该专注于其他领域,如果没有必要,我的部署会变得非常复杂。

回答

0

根据消息来源的不同,您不需要设置为像redis或rabbitmq这样的代理来使用logstash。例如,Filebeat - > Logstash - > Elasticsearch在没有代理的情况下运行良好。

如果你有干净的JSON事件,直接写入Elasticsearch是一个好主意。 logstash的威力在于获取非结构化数据,并从中制作出漂亮的结构化事件。

如果芹菜可以发送你的事件,这听起来像一个很好的解决方案,如果你不需要什么logstash提供。

+0

让我明白,我的问题是不与经纪人的设置,因为我已经使用一个芹菜。在那一点上我没有解释清楚。我担心为什么发送统计信息到Logstash,我可以用同样的方式发送到我正在使用的Celery。 您的回答证实了我的怀疑:当存在异构数据源时,Logstash更有用。 –