如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

StreamAlert:无服务器实时数据分析

  • 2017-08-08
  • 本文字数:2148 字

    阅读完需:约 7 分钟

2017 年 2 月 1 日,Airbnb 安全团队宣布开源框架 StreamAlert 发布了,它是一种实时数据分析框架,附带伴随时间点的报警功能。StreamAlert 属于无服务化开源框架,每小时可以横向扩展到 TB 级别数据支撑力度,自动化的基础设施部署以及默认开启安全保护机制。

下面这张图是 StreamAlert 的功能示意图。

为什么会有 StreamAlert?

Airbnb 公司需要一种产品可以基于它们公司的实际运行环境,强化工程师和管理员的能力,特别是针对实时数据的获取、分析和告警。

当安全团队设计用户用例,并且寻找各种可行性方案之后,团队根据需求进行编码,需要实现的需求包括:

  • 针对任何 AWS 账户的简单、安全、可重复的部署方式
  • 每天轻松从兆扩展为百万兆
  • 最小化基础设施维护,不需要专家级的 devops 人员
  • 默认开启基础设施安全机制,不需要安全专家
  • 支持从不同环境过来的数据(例如 IT、PCI、工程部门)
  • 支持不同的环境类型的数据(例如云、数据中心、办公室)
  • 支持数据的不同类型(例如 JSON、CSV、Key-Value、Syslog)
  • 支持使用类似于安全、基础设施、尊重以及其他方面的测试用例

Airbnb 安全团队因为找不到这样一款适配所有需求的产品,所以他们决定自己构建一个。因为团队需要的产品与环境无关,也就是说具有通用型,自然而然就满足了成为开源项目的基础。

优点

就像上面提到的,StreamAlert 有一些特定的优点:

  • 无服务器:StreamAlert 利用了 AWS 的 Lambda,这种做的好处是你不再需要自己管理服务器,不再需要对服务器打补丁,不再需要了解服务器的硬件配置差别
  • 可扩展性:StreamAlert 利用 AWS 的 Kinesis Streams 特性,这样做的好处是支持“流量每小时从兆扩展为百万兆,每秒的写入记录数从千级扩展到百万级”
  • 自动化:StreamAlert 利用 Terraform,支持基础设施和支持服务以代码的形式呈现出来,并支持自动化部署
  • 安全机制: StreamAlert 使用安全传输(TLS),在容器 / 沙盒内进行数据分析,根据自定义的环境进行数据切分,支持基于角色的访问控制(RBAC)
  • 开放源代码:任何人都可以使用或者贡献 StreamAlert 源代码

用户用例

下面这张图解释了 StreamAlert 可以分析的一些数据集范例:

StreamAlert 的产品目标是尽可能地支撑未知用户需求,也就是说对于数据的分析和告警用户用例,应该支撑得最为广泛。

更高层次来说,StreamAlert 支持如下:

任意源:StreamAlert 可以接收从 S3 的 bucket 过来的数据,也可以接收来自任意支持亚马逊 Kinesis

  • Stream 的第三方服务的数据。例如:fluentd、logstash、aws-kinesis-agent、osquery、Java、JavaScript、Ruby、PHP,以及任何被 AWS SDK 支持的语言。
  • 任何操作系统,StreamAlert 可以接收从任何设备过来的数据,只要它们支持日志转发功能,包括 Linux、MacOS、Windows,等等。
  • 任何环境,StreamAlert 可以接收从任何环境发送过来的数据,只要它们可以连接到互联网,包括云、数据中心、办公室,等等。

从数据的角度考虑,StreamAlert 支持例如 JSON、CSV、Key-Value,以及 Syslog 等多种格式。

如果你是一个 AWS 客户,可以通过 S3 的 bucket 方式压缩数据格式。相应地,StreamAlert 也支持 CloudTrail、AWS Config,以及 S3 服务访问日志。

如果你不是 AWS 客户,StreamAlert 也支持如下数据:

  • 主机日志(例如 Syslog、osquery、auditd)
  • 网络日志(例如 Palo Alto Networks、Cisco)
  • Web 应用日志(例如 Apache、nginx)
  • SaaS 提供者(例如 Box、OneLogin)

需要注意的是,SmartAlert 并不是为了解决分析指标或者时间序列的用户用例设计的,在这个领域已经有很多很棒的开源框架或者商业软件存在了,例如 Prometheus、DataDog,以及 NewRelic。

数据分析

使用 Python 编写的规则包括数据分析和告警逻辑。以下是一段 Python 代码,示范在 PCI 环境下对 sudo 的使用进行告警:

复制代码
@rule('production_sudo',
logs=['osquery'],
matchers=['pci'],
outputs=['s3', 'pagerduty', 'slack'])
def production_sudo(record):
table_name = record['name']
tag = record['columns']['tag']
return (
table_name == 'linux_syslog_auth' and
fnmatch(tag, 'sudo*')
)

告警

如上图可见,StreamAlert 配置了灵活的告警框架,可以和全新的或者已经存在的故障管理工具集成在一起使用。StreamAlert 可以启用规则,实现发送给多个告警输出。

架构

StreamAlert 使用如下的设备:

  • AWS Kinesis Streams:数据流、AWS Lambda 流(基于流的模型)
  • AWS Kinesis Firehose:加载流数据到 S3 数据存储层
  • AWS Lambda (Python):数据分析和告警
  • AWS SNS:告警队列
  • AWS S3:可选的数据源、长期数据存储层、长期告警存储层
  • AWS Cloudwatch:基础设施指标
  • AWS KMS:应用密码的加密和解密
  • AWS IAM:基于规则的访问控制(RBAC)

下一步计划

在 2017 年的 Q2,Airbnb 的安全团队预计会加强 StreamAlert 的分散流量处理能力,进一步提升告警的上下文关联度。

对于历史数据的检索,StreamAlert 预计在 2017 年年底实现功能,通过使用 AWS Athena(一种 S3 提供的无服务器交互式查询服务),这种方式将会允许用户使用 SQL 语句进行实时和定时的分析数据查询。


感谢丁晓昀对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-08-08 19:002103
用户头像

发布了 50 篇内容, 共 31.1 次阅读, 收获喜欢 40 次。

关注

评论

发布
暂无评论
发现更多内容

【Go】go build失败,报方法undefined

非晓为骁

Go 编译 go build

女生参加java培训前景如何

小谷哥

Java培训可以从事哪些工作

小谷哥

21个大厂Offer?这份“Java核心技能精讲”轻松收割

收到请回复

Java 云计算 开源 架构 编程语言

LED显示屏人屏互动未来已来

Dylan

户外LED显示屏 led显示屏厂家

经典面试题-定位不到元素

霍格沃兹测试开发学社

经典面试题-Appium原理

霍格沃兹测试开发学社

京东云无线宝产品部负责人张晓东 : 京东云无线宝与开源的亲密关系 | 《大神详解开源 BUFF 增益攻略》讲座回顾

Apache IoTDB

物联网 京东云 企业号九月金秋榜

深入浅出用户态协议栈

C++后台开发

后台开发 TCP/IP 网络协议栈 C++开发 用户态协议栈

如何通过C#/VB.NET在Excel中隐藏或显示网格线

在下毛毛雨

C# .net Excel

技术分享 | web前端的HTML浅析

霍格沃兹测试开发学社

大数据培训机构如何选择

小谷哥

字节二面:Redis 的大 Key 对持久化有什么影响?

程序知音

Java 数据库 redis 字节跳动 面试

快速构建基本的SpringCloud微服务

Java-fenn

Java

技术分享 | 黑盒测试方法论—因果图

霍格沃兹测试开发学社

技术分享 | Bug定位方法

霍格沃兹测试开发学社

【CSM认证】11月1-4日在线工作日班 | 全国招生

ShineScrum

项目管理 Scrum Scrum Master 敏捷项目管理

技术分享 | 白盒测试方法论

霍格沃兹测试开发学社

技术分享 | 什么是软件缺陷

霍格沃兹测试开发学社

C++ 左值引用与 const 关键字

Java-fenn

Java

深圳web前端培训费用多少?

小谷哥

如何快速开发灵活自定义报表

力软低代码开发平台

如何成为一个好的设计师 or 程序员?

宇宙之一粟

读书笔记 设计 技巧 知识 9月月更

技术分享 | 测试环境搭建

霍格沃兹测试开发学社

在武汉Java培训费用多少

小谷哥

6个月我从小厂逆袭,薪资上涨70%,坐上美团L8技术专家!

收到请回复

Java 云计算 开源 架构 编程语言

技术分享 | 常用测试策略与测试手段

霍格沃兹测试开发学社

史上最全大厂面试题复盘总结,全会进大厂拿35K没问题(Java岗)

收到请回复

Java 云计算 开源 架构 编程语言

与未来对话:PingCAP 用户峰会亮点全放送

PingCAP

#TiDB

拼多多、蚂蚁、字节2022届(大三)后端研发暑期实习

Java-fenn

Java

阿里分布式全栈手册,整整1000页,太顶了

程序知音

Java 架构 分布式 阿里 后端技术

StreamAlert:无服务器实时数据分析_语言 & 开发_麦克周_InfoQ精选文章