转载

使用Amazon EMR和Hunk快速响应日志分析和审查

采集和访问应用程序日志是非常常见的,但却从未对做基于日志的交互式分析。使用监视仪表盘配合搭载了良好监视工具,应用程序虽然可以让操作者便捷地管理日常操作,但却忽略了对存储在Amazon S3中的海量日志文件进行挖掘。直到监视仪表盘亮起红灯,管理员才会想起对这些日志进行一个详细的分析。

本文,我将分享一个基于Amazon EMR和Hunk(Splunk),针对海量日志数据进行挖掘的可快速部署的“break glass”解决方案。虽然这是个基于S3存取日志的解决方案,但是这个模式适用于Amazon CloudFront、Elastic Load Balancing(ELB),以及任何将日志存储在S3中的架构。

Hunk是个大数据分析平台,允许用户使用交互式流检索的方式快速检测、分析和可视化Hadoop及NoSQL中存储的数据。EMR允许用户在一个由Amazon EC2实例组成的可伸缩集群中,使用Hadoop这个开源框架对数据进行分布式处理。EMR也可以运行其他的框架,比如Spark以及附加应用程序作为Hadoop集群的扩展,比如 HBase、Hunk及Ganglia。搭配Hunk AMI和EMR ,用户将获得一个可快速部署的按需日志审查解决方案。

发布一个EMR集群

首先,配置一个 EMR集群 来访问你的数据( Splunk 中也有一个很好的集群向导 )。在这里,我将使用命令行界面(AWS CLI http://aws.amazon.com/cli/)来创建一个集群。其先决条件是你需要拥有一个AWS账户,安装并配置CLI,同时也有一个有权发布EMR集群的用户。通过下面这个命令,你将获得一个集群ID,这个ID将会用于后续的使用中。

aws emr create-cluster --applications Name=Hunk --ami-version 3.2.1 --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=2,InstanceType=m3.xlarge InstanceGroupType=TASK,InstanceCount=10,InstanceType=m3.xlarge --no-auto-terminate --region us-east-1 --use-default-roles --ec2-attributes KeyName=<put your key here>

在本示例中,我使用了一个由13个m3.xlarge实例组成的集群。那么,在你的业务中你又需要使用一个多大的集群?使用什么样的实例类型?你可以访问Choose the Number and Type of Virtual Servers(http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-instances.html)来获得EMR集群大小定义的更详细信息。

关于成本开销:在本例子中,集群一小时的测试需要花费5美元。Hunk按实例个数收费,每个实例每小时0.75美元,在这个用例中一小时的测试成本不到10美元(共13个)。你可以使用 Simple Monthly Calculator 计算实际工作负载所需要的花费。

Launch Hunk

Splunk拥有设计精良的Amazon CloudFormation脚本,他们已经在 Install Hunk on Amazon Web Services with hourly pricing 中共享;转到Step 3: Provision a Hunk Instance 获得CloudFormation模板相关信息。选择EMR集群所部属的region,然后发布一个Hunk实例。

连接到Hunk并设置你的EMR集群

将浏览器指向主机IP地址来设置Hunk search head,IP地址可以在之前你发布的EC2控制台中找到。

使用Amazon EMR和Hunk快速响应日志分析和审查

默认情况下,GUI为网络界面使用了8000端口,因此在这个用例中的值是 http:// 203.0.113.24:8000。默认情况下,CloudFormation模板使用了实例ID作为密码。

在演示和介绍之后,在屏幕的右上方点击Setting按钮,然后选择Virtual indexes。在这里,你需要为Hunk配置一个provider和一个virtual index。provider是需要连接EMR目录的所有信息,virtual index则定义了provider需要访问的数据。

使用Amazon EMR和Hunk快速响应日志分析和审查

在Provider标签下点击New Provider。

使用Amazon EMR和Hunk快速响应日志分析和审查

你需要获得日志的 S3 bucket路径和EMR集群中主节点的内部IP。为了获得这个地址,你需要前往EMR控制台,找到Hardware中对应的MASTER实例行,并选择View EC2 instances。跳过控制台,回到CLI使用下面语句,其中cluster ID是之前你建立EMR集群时所获得的。使用这些信息和下表来填写Provider页面,并点击保存。

aws emr list-instances --cluster-id <em>clusterID</em> --instance-group-types MASTER --query 'Instances[*].PrivateIpAddress' --output table

使用Amazon EMR和Hunk快速响应日志分析和审查

在Provider中,你需要一个新的virtual index。在virtual index标签下,点击New Virtual Index新建一个。

使用Amazon EMR和Hunk快速响应日志分析和审查

填写一个Name(唯一),有用的描述,访问日志的完整S3路径,如果路径中有多个log times,你可以通过whitelist(选填)描述,然后点击保存,如图。

使用Amazon EMR和Hunk快速响应日志分析和审查

到现在,你已经做好了日志挖掘的准备,在Apps菜单栏,选择Search & Reporting。

使用Amazon EMR和Hunk快速响应日志分析和审查

在这里,我给virtual index设置的名称是s3logger-index。为了搜索该索引数据,你需要在搜索框中填入这个名称。

使用Amazon EMR和Hunk快速响应日志分析和审查

到了这一步,你已经可以使用很多快速检索来挖掘数据。这里列举了一些:

一个远程IP请求 bucket的次数

index=s3logger-index  |rex field=_raw "^(?.+?)/s(?.+?)/s/[(?.+?)/]/s(?.+?)/s(?.+?)/s"  | stats count by remoteIP bucket  | head 10 |sort count

远程IP的总请求时间

index=s3logger-index  |rex field=_raw "^(?.+?)/s(?.+?)/s/[(?.+?)/]/s(?.+?)/s(?.+?)/s(?.+?)/s(?.+?)/s(?.+?)/s/"(?.+?)/s(?.+?)/s(.+?)/s(?.+?)/s(.+?)/s(?.+?)" | stats sum(totalTime) as Duration by remoteIP   | head 10 |sort Duration

总请求时间和远程IP,通过操作计数

index=s3logger-index  |rex field=_raw "^(?.+?)/s(?.+?)/s/[(?.+?)/]/s(?.+?)/s(?.+?)/s(?.+?)/s(?.+?)/s(?.+?)/s/"(?.+?)/s(?.+?)/s(.+?)/s(?.+?)/s(.+?)/s(?.+?)" | stats count sum(totalTime) as Duration by operation   | head 10 |sort Duration

一个操作时间的可视化

index=s3logger-index  |rex field=_raw "^(?.+?)/s(?.+?)/s/[(?.+?)/]/s(?.+?)/s(?.+?)/s(?.+?)/s(?.+?)/s(?.+?)/s/"(?.+?)/s(?.+?)/s(.+?)/s(?.+?)/s(.+?)/s(?.+?)" | timechart sum(totalTime) as Duration by operation   | head 10 |sort Duration

在搜索中使用正则表达式来拆分字段无疑是一个捷径。Hunk提供了多种方法来自动化这个过程,因此用户可以省略这个步骤。关于S3日志格式,你可以在Server Access Log Format(http://docs.aws.amazon.com/AmazonS3/latest/dev/LogFormat.html)获取更多详情。关于CloudFront格式,你可以在Log File Format(http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#LogFileFormat)获得更多详细信息。在对数据多次迭代之后,并且发现了你需要的信息,只需要几个点击就可以将搜索保存到仪表盘。首先点击Save As,然后是Dashboard Panel。

使用Amazon EMR和Hunk快速响应日志分析和审查

在Save as Dashboard Panel对话框中为新的Dashboard和Panel输入名字,然后点击Save。

使用Amazon EMR和Hunk快速响应日志分析和审查

跳转到新的仪表盘并查看结果。在Splunk或者Hunk中建立仪表盘非常容易,但是需要时间、训练和经验来掌控。Splunk的Dashboards and Visualizations(http://docs.splunk.com/Documentation/Splunk/latest/Viz/Aboutthismanual)文档可以帮助你开始。

使用Amazon EMR和Hunk快速响应日志分析和审查

清理

在日志挖掘结束后,记得使用AWS Management Console终止Hunk CloudFormation 模板及EMR集群。

总结

对日志中被忽略的数据进行挖掘并不需要一个一直开启的大数据系统,亦或是对Hadoop的精通,通过Hunk和EMR你可以非常快速地挖掘这些数据,并非常便捷地按需开启和关闭自己的集群。同样,你不需要对日志文件和它的格式有非常深入的了解,通过上面这两个工具,你可以非常快速地进行挖掘并获取自己想要的信息。在这种速度下,你可以快速迭代并追踪你需要的数据。

使用Hunk和EMR来建立一个数据的快速挖掘工具。使用Splunk Enterprise,通过收集和索引萃取的指标和数据来扩展搜索,你可以更深入地挖掘数据。同时,你可以综合利用Splunk和EMR的特性,比如在维持全文可检索的同时向S3归档。

原文链接: https://blogs.aws.amazon.com/bigdata/post/Tx32LAZ767ZWVIY/Using-Amazon-EMR-and-Hunk-for-Rapid-Response-Log-Analysis-and-Review

如您需要了解AWS最新资讯或是技术文档可访问 AWS中文技术社区 ;如您有更多的疑问请在 AWS技术论坛 提出,稍后会有专家进行答疑。

使用Amazon EMR和Hunk快速响应日志分析和审查 订阅“AWS中文技术社区”微信公众号,实时掌握AWS技术及产品消息!

AWS中文技术社区为广大开发者提供了一个Amazon Web Service技术交流平台 ,推送AWS最新资讯、技术视频、技术文档、精彩技术博文等相关精彩内容,更有AWS社区专家与您直接沟通交流!快加入AWS中文技术社区,更快更好的了解AWS云计算技术。

( 翻译/薛童阳  责编/王玉平 )

正文到此结束
Loading...