Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

serverless log analysis solution

基于 Amazon Athena + Amazon S3 构建低成本高性能的无服务日志分析工具

方案初衷

海量日志数据就像一座矿山,如果不去挖掘,您永远无法知道您错过了多少价值。现代企业也越来越重视日志数据的应用,常常利用日志数据进行:故障排查、合规审计、安全监控、 智能运维等等。

海量的日志数据,其存储、探索、分析、应用本来就具有昂贵的成本。由于较高的门槛,让很多企业难以迈入,这座矿山形同鸡肋。目前市面虽然已经有许多优秀的日志分析工具,但是并没有很好的解决上述问题。例如 Elastic Stack,然而这类工具选择独立部署,前期成本投入巨大,面对突增业务流量缺乏弹性,运维成本高。云厂商为了解决这些问题,提供了基于云的日志分析服务。这些服务解决了 Elastic Stack 缺乏弹性,前期成本高,运维成本高等问题,但是依旧有较高的使用成本!例如某云厂商的日志分析服务,以10T的原始数据量,并建全文索引,一年的费用大概是十万零七千多元,并且这些成本,你用还是不用它都在哪里,需要你付费!

本方案使用Amazon Athena和 Amazon S3构建一套低成本高性能的无服务器日志分析工具,能很好的解决上述问题,帮助企业探索海量日志这座宝库

方案优势

  1. 低成本。使用 Amazon Athena,您只需为执行的查询付费,另外你可以优化你的查询SQL,充分利用分区键,减少扫描量,优化查询成本。另外我们使用了基于S3的存储,本身存储成本就低于传统日志分析工具,另外借助S3对象生命周期管理功能,可以轻松的进行冷热数据管理,进一步降低成本
  2. 高性能。借助 Amazon Athena 提供快速的交互式查询性能,无需担心自己没有足够的计算资源。Amazon Athena 将自动并行执行查询,因此在数秒内可返回最多的结果。另外基于建模期,我们有效的对日志数据进行分区存储,可以进一步加速查询执行速度
  3. 成本可控。使用 Amazon Athena, 你可以针对不同的工作组,设置数据查询最大数据扫描量,超过该扫描量的查询将被熔断,保证没有超出预期的查询费用。你也可以对这类查询设置告警,帮助你优化你的查询语句
  4. 整个架构均采用无服务器架构,高弹性,低运维成本。数据团队只需要关注业务,无需管理底层基础设施
  5. 数据开发成本低。日志数据清洗建模使用 SQL 语句即可完成,无需复杂的技术栈
  6. 可控的数据延迟。您可以平衡数据延迟和计算资源成本之间的关系,保证数据延迟符合业务需求并具有比较经济的成本

方案架构

架构

部署方式

手动模式

  1. 使用file_listener.py中的代码创建一个 Amazon Lambda函数,注意,修改代码中注释提及的变量 Lambda
  2. 配置监听存放原始日志文件的S3,请参考如下图进行配置 触发器
  3. 配置 Amazon Lambda函数关联的角色,赋予相关的权限。在正式环境,请配置最低可适用权限 权限
  4. 创建一个 Amazon SQS 标准队列,更新Lambda函数中的SQS配置
  5. 创建一个 Amazon DyanmoDB, 更新Lambda函数中的 DynamoDB 配置
  6. 参考demo_etl.py, 根据自己日志的schema, 更改提取日志关键信息的逻辑
  7. 在 Amazon Athena 上创建目标表,并根据前面的提取日志逻辑,给目标表添加分区
  8. 用修改后的demo_etl.py 和 etl.py 创建一个Amazon Fargate 应用

Couldformation 部署

进行中

About

基于 Amazon Athena + Amazon S3 构建低成本高性能的无服务日志分析工具

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages