为什么让移动应用程序向 ELK 发送崩溃日志不流行

Why is it not popular to have a mobile application send crash log to ELK

我正在 IOS 和 Android 上开发移动应用程序。目前我使用 Firebase Crashlytic 来跟踪应用程序崩溃日志。

我对 Crashlytic 的功能不太满意。例如,当用户报告问题并在特定时间录制了应用程序崩溃的视频时,我想查看当时设备的日志,但使用 Crashlytic 并不容易。

我脑海中弹出一个解决方案,让移动应用程序将崩溃日志发送到我的 AWS SQS 队列,并以某种方式将其传递给 Elasticsearch,以便我可以使用 Kibana 过滤日志。

我想实现这样的东西

  1. 移动应用程序将所有内容记录在可旋转的临时文件中。
  2. 当满足以下条件时,将日志从文件发送到SQS队列。
  1. 如果在2.发送日志的过程中发现任何错误,在内存中设置标志retry_send_error=true
  2. 在任何可能的应用程序事件中,如果发现 retry_send_error==true 在内存中,请尝试再次发送日志。
  3. 创建一个监听 SQS 队列的 lambda 并将日志发送到 LogStash 或 Elasticsearch。

我在网上找了一些参考例子,没找到好的。所以我怀疑我的解决方案可能有问题。

如果您知道一些与此架构类似的好例子,或者您知道此解决方案不那么受欢迎的原因,请帮忙提出建议。

你想解决这个问题的方法基本不错。 但在我看来 ELK 并不是你想要的。

SQS + Lambda 是聚合和过滤大量 public 请求的好主意,但在安全性或效率(或者可能是成本)方面存在一些问题). 而且那个架构一点都不简单

但是,如果我可以推荐 sentry.io,这正是您需要的工具,因为我理解正确。

哨兵也有 mobile, android and iOS 的解决方案。

我确实将 sentry 用于不同的事情,并且有一个清晰易读的界面可供使用。使用最少的代码分配,您可以标记事件,抛出良好的异常以进行过滤,哨兵解决其余的问题。

Here 一篇很好的文章,解释了为移动应用程序进行远程日志记录的许多解决方案。

将日志发送到 Elastic Stack 的最佳方法是使用 Hyperlog.

Hyperlog is a free and open source library to send your logs to ELK or RequestBin, service for inspecting HTTP payloads.

ELK goes for Elasticsearch, Logstash, Kibana - services for storing, collecting and monitoring logs. Despite they are mostly used for web apps, we can send logs from our apps to ELK as well. Deployment and configuring of the ELK stack is out of scope of this article, but you can find details here. You can also choose one of the ELK stack providers, there are quite a lot of them.

您还可以查看 Bugfender and Loggly,它不需要整个弹性堆栈来监控您的应用程序并对其进行故障排除。