从 AWS Spark 通过电子邮件发送错误日志
Emailing error logs from AWS Spark
我有一个使用 AWS EMR 到 运行 pispark 集群的进程。
我有一个存储所有进程日志的 S3 位置。
我想知道有什么方法可以过滤掉错误日志并将它们邮寄到我的 inbox.I 我不想在我的系统上保存任何日志文件。
有没有python库可以帮助我监控实时日志。我看过 boto3 和 EMR 库,但我无法从那里找到问题的答案。
在写入 S3 之前,EMR 日志可能会被缓冲成几分钟或一定大小的块(但完全公开,这是基于其他 AWS S3 日志系统的经验,而不是 EMR 本身)。
如果我试图解决这个问题,我会使用 AWS Lambda 函数来执行 python,它将逐行读取 S3 日志并过滤匹配 ERROR
的行,然后使用 SNS 将日志发送到您的电子邮件地址。当对象写入 EMR 的 S3 日志记录位置时,您可以使用 S3 事件自动触发 Lambda,因此这将尽可能接近实时。
我建议的架构看起来像这样
EMR -> S3 -> Lambda -> SNS -> email inbox
将每个 EMR 日志写入使用 boto3 的 s3 triggers a lambda
过滤日志中的错误消息,将警报发送到 SNS 主题以分发给用户。
它可能看起来像很多活动部件,但不需要太多维护,而且每月只需比 S3 存储已经花费的成本多几美分。整个事情的努力实际上很小。
此外,您不需要:
- 执行代码、管理服务器等的地方
- 您项目的重要部署模型
- 以上未显示的任何部分,就此而言
您将免费获得:
监控形式
- lambda 的 cloudwatch 指标,
- s3 日志(你应该启用它们)
- 存储函数执行的 cloudwatch 日志 windows 和标准输出。
通过 cloudwatch 警报轻松集成到警报中(这些通常与 Pager Duty 等很好地集成)
- 极其简单的可扩展性,例如
- SNS 可以发送短信到您的 phone
- 在 lambda 中添加更多解析选项并重新部署
- 公开 cloudwatch 指标并添加阈值警报
- 将摘要写入 S3 以获得预签名的电子邮件或短信链接,或者现在或以后进一步处理
您可以通过 SES 自己发送电子邮件,也可以使用 python 手动发送电子邮件,但我宁愿使用 SNS,这样主题的订阅可以独立于 python 代码。
Lambda 开始时有点吓人,但默认情况下它们会包含 boto3 sdk(这应该避免对具有 pip 依赖项的 zip 文件的需要),这将简化创建。
就此而言,如果您喜欢通过拖动鼠标指针来做事,或者只打算做几次,或者您可以在 cloudformation 中表达所有这些,您可以在 AWS 控制台中设置所有这些东西如果您需要可重复的东西。
http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html
http://docs.aws.amazon.com/lambda/latest/dg/python-programming-model-handler-types.html
http://docs.aws.amazon.com/sns/latest/dg/welcome.html
我有一个使用 AWS EMR 到 运行 pispark 集群的进程。
我有一个存储所有进程日志的 S3 位置。
我想知道有什么方法可以过滤掉错误日志并将它们邮寄到我的 inbox.I 我不想在我的系统上保存任何日志文件。
有没有python库可以帮助我监控实时日志。我看过 boto3 和 EMR 库,但我无法从那里找到问题的答案。
在写入 S3 之前,EMR 日志可能会被缓冲成几分钟或一定大小的块(但完全公开,这是基于其他 AWS S3 日志系统的经验,而不是 EMR 本身)。
如果我试图解决这个问题,我会使用 AWS Lambda 函数来执行 python,它将逐行读取 S3 日志并过滤匹配 ERROR
的行,然后使用 SNS 将日志发送到您的电子邮件地址。当对象写入 EMR 的 S3 日志记录位置时,您可以使用 S3 事件自动触发 Lambda,因此这将尽可能接近实时。
我建议的架构看起来像这样
EMR -> S3 -> Lambda -> SNS -> email inbox
将每个 EMR 日志写入使用 boto3 的 s3 triggers a lambda 过滤日志中的错误消息,将警报发送到 SNS 主题以分发给用户。
它可能看起来像很多活动部件,但不需要太多维护,而且每月只需比 S3 存储已经花费的成本多几美分。整个事情的努力实际上很小。
此外,您不需要:
- 执行代码、管理服务器等的地方
- 您项目的重要部署模型
- 以上未显示的任何部分,就此而言
您将免费获得:
监控形式
- lambda 的 cloudwatch 指标,
- s3 日志(你应该启用它们)
- 存储函数执行的 cloudwatch 日志 windows 和标准输出。
通过 cloudwatch 警报轻松集成到警报中(这些通常与 Pager Duty 等很好地集成)
- 极其简单的可扩展性,例如
- SNS 可以发送短信到您的 phone
- 在 lambda 中添加更多解析选项并重新部署
- 公开 cloudwatch 指标并添加阈值警报
- 将摘要写入 S3 以获得预签名的电子邮件或短信链接,或者现在或以后进一步处理
您可以通过 SES 自己发送电子邮件,也可以使用 python 手动发送电子邮件,但我宁愿使用 SNS,这样主题的订阅可以独立于 python 代码。
Lambda 开始时有点吓人,但默认情况下它们会包含 boto3 sdk(这应该避免对具有 pip 依赖项的 zip 文件的需要),这将简化创建。
就此而言,如果您喜欢通过拖动鼠标指针来做事,或者只打算做几次,或者您可以在 cloudformation 中表达所有这些,您可以在 AWS 控制台中设置所有这些东西如果您需要可重复的东西。
http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html http://docs.aws.amazon.com/lambda/latest/dg/python-programming-model-handler-types.html http://docs.aws.amazon.com/sns/latest/dg/welcome.html