繁体   English   中英

实现日志记录和监控的正确工具

[英]Right tools to implement logging and monitoring

我和我的团队最近开始着手一个新项目。 我们的项目分为 3 层 - 客户端(Winforms 应用程序)、中间件(.NET Core 3.0 Web API)、数据库(PostgreSQL)。 我被指派寻找实现日志记录和监控系统的最佳方法。

我们需要的是记录每个异常(当然),以及我们的中间件对数据库执行的每个查询以及一些审计日志。 请记住,这些日志会经常出现,因为用户同时超过 200 个。

起初我的搜索是从 noSQL 数据库开始的。 我正在考虑选择 MongoDb、Cassandra 或 ElasticSearch,因为它们速度很快,不需要特定的模式并在那里记录所有内容。 但后来我偶然发现了 Nick Craver 的这篇很棒的博客文章——Stack Exchange 的架构负责人。 在那里他提到了StackExchange.Exceptional的使用,我认为这是我们真正需要的。 我不确定如何实际使用它,以及尼克为我的用例提供的所有出色解决方案中的哪一个。

所以我问:

  1. 如果您曾经使用过 Exceptional,请告诉我它的用途
  2. 我是否也需要 OPServer 来监控日志?
  3. 我还是只使用 Mongo 更好吗?

如果你问我,我将使用 ELKB 堆栈。 我没有使用过OPServer。 所以我不打算对此发表评论。 但我想分享一下我对 elasticsearch 如何实现您的用例的看法。

据我了解,您需要记录两件事:

  1. 每个异常/错误
  2. 中间件查询日志

ELKB 堆栈仅针对这些用例而设计。 那里会有河流般的流动。 您的日志将继续存储在 Elasticsearch 中。

以下是如何实现用例的几个步骤:

第 1 步:设置 Elasticsearch。 为此,您无需成为任何专业人士。 只需按照他们拥有的精彩文档即可。
第 2 步:设置 Logstash / Filebeat,它将实时读取您的日志文件并继续插入 Elasticsearch。
第 3 步:在 elasticsearch 上设置 Kibana。 您将获得数据日志的完整视图。
第 4 步:只需在您的应用程序中添加日志点,您将在其中获得异常或您想要记录其他内容。

优点

  1. 所有工具都是现成的,并被许多其他具有大量用例的组织使用。 所以它也适合你的用例。
  2. 非常好的文档和社区支持。
  3. kibana 提供的出色数据视图。 您可以创建自己的仪表板。 它就像您的整个系统日志的一个视图。
  4. 已经有一些可用的节拍,如 MySQL 节拍,Nginx 节拍,Apache 节拍,Mongo DB 等。在这里你只需插入并开始使用。
  5. 每当您想添加一些新类型的日志时,它将成为您的集中式架构,您只需开始写入同一个日志文件,它就会开始记录。

您可以在 Internet 上找到很多 pron。

缺点

  1. 您可以使用付费的“观察者”设置警报。
  2. 如果你想设置开源警报,你可以 go 与 alertmanager (Prometheus) 在你需要做一些额外的集成。

以下是我想分享的几个用例。 我相信它会帮助你理解:

Dream11https://medium.com/@D11Engg/elasticsearch-dream11-30328d913cd5
优步https://eng.uber.com/elk/
易趣https://www.elastic.co/blog/monitoring-petabytes-of-logs-at-ebay-with-beats

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM