【发布时间】:2016-02-25 09:30:21
【问题描述】:
Node JS 或 Javascript 中是否有任何库可用于从 cloudwatch 检索日志并发送到 http 端点?
【问题讨论】:
标签: javascript node.js amazon-web-services
Node JS 或 Javascript 中是否有任何库可用于从 cloudwatch 检索日志并发送到 http 端点?
【问题讨论】:
标签: javascript node.js amazon-web-services
您不应该像其他人建议的那样为此使用 AWS sdk。您应该使用 Cloudwatch Logs 订阅功能来执行此操作。
仅通过 API 获取日志数据的唯一方法是 GetLogEvents。这显然是为了获取少量数据而设计的,它在整个帐户中的每秒查询次数上限约为 10 次。
相反,该服务包含订阅功能,其中日志组中的日志数据被传送到可扩展的服务,例如 Kinesis、Firehose,或用于您的用例 Lambda
使用 cloudwatch 日志的 lambda 蓝图,您可以获得实时使用数据的内容,因为这些数据可从 cloudwatch 日志中获得,并解压缩包含日志事件的压缩 JSON 文档。然后只需将内容发布到您的端点。
您不需要自己运行任何额外的进程,它可以任意缩放到您的数据大小。 Lambda 也有一个限制 - 一次运行 100 个并发函数,我估计这相当于每秒 300 个 GetLogEvents - 但是如果你填写 lambda 限制增加,他们非常渴望为你解除它。
另一种选择是使用 Kinesis 和 Lambda。如果您的函数由于 lambda 的工作方式而引发异常,则将日志直接集成到 lambda 将丢弃数据。但是,如果您将 Kinesis 放在中间,您将获得长达 7 天的持久重试队列,该队列只会在您的函数成功时检查点。此外,您可以调整批处理以减少喋喋不休。
由于成本原因,人们通常不愿意使用 Kinesis,但它非常便宜。只需 14 美元/月/分片,您就可以通过它抽取大量数据,而且它可以正常工作。唯一需要注意的是,您需要在大约 700kb/s 的 Kinesis 流吞吐量上发出警报,才能知道拆分 Kinesis 分片。
但是,如果持久交付对您来说并不重要,那就直接使用 lambda。
【讨论】:
我猜你正在寻找AWS SDK。只是出于好奇,您为什么要从 CloudWatch 获取日志并发送到 HTTP 端点?对于您的应用程序来说,自己执行此操作听起来更有效和合乎逻辑。
【讨论】: