aws redshift_使用AWS Redshift进行长期日志分析

aws redshift

您将在产品和代码库的整个生命周期中聚集大量日志,因此能够搜索它们非常重要。 在极少数的安全问题中,没有这种功能会带来极大的痛苦。

您也许可以使用允许您快速搜索过去两周日志的服务。 但是,如果您要搜索过去六个月,一年甚至更长时间,该怎么办? 这种可用性可能非常昂贵,甚至根本无法提供现有服务。

许多托管日志服务提供S3归档支持,我们可以使用它们来与AWS Redshift建立长期的日志分析基础架构。 最近,我设置了脚本,以便能够在Codeship上随时创建该基础结构。

“如果出现安全问题,您可以搜索一年的日志吗?” 通过@codeship

点击鸣叫

AWS Redshift

AWS RedshiftAWS的数据仓库解决方案。 它具有简单的群集和提取机制,非常适合加载大型日志文件,然后使用SQL搜索它们。

由于它会自动平衡多台计算机上的日志文件,因此如果需要更高的速度,则可以轻松扩展。 正如我之前所说的,浏览大量日志文件是一种相对罕见的情况。 您不需要一直存在这个基础架构,这使其成为AWS的完美用例。

设置日志分析

让我们看一下驱动长期日志分析基础结构的脚本。 您可以在flomotlik / redshift-logging GitHub存储库中检出它们。

我将逐步指导您配置所需的环境变量的整个设置,以及开始创建集群和搜索日志。

但是首先,在进入所有可以设置的不同选项之前,让我们对设置脚本的工作有一个总体的了解:

  1. 创建一个AWS Redshift集群。 您可以配置服务器的数量以及应使用的服务器类型。
  2. 等待集群准备就绪。
  3. 在Redshift集群内创建一个SQL表以将日志文件加载到其中。
  4. 从AWS S3将所有日志文件提取到Redshift集群中。
  5. 清理数据库并打印psql access命令以连接到集群。

在进入可以通过.env文件设置的所有不同选项之前,请确保在GitHub上签出脚本

设置选项

以下是所有可用选项的列表。 您可以简单地将.env.template文件复制到.env,然后填写所有选项以进行选择。

  • AWS_ACCESS_KEY_ID
    • 应该运行Redshift集群的账户的AWS密钥。
  • AWS_SECRET_ACCESS_KEY
    • 应该运行Redshift集群的账户的AWS密钥。
  • AWS_REGION = us-east-1
    • 群集应在其中运行的AWS区域,默认为us-east-1。
  • REDSHIFT_USERNAME
    • 用psql连接到集群的用户名。
  • REDSHIFT_PASSWORD
    • 与psql连接到集群的密码。
  • S3_AWS_ACCESS_KEY_ID
    • 有权访问您要从中提取日志的S3存储桶的AWS密钥。
  • S3_AWS_SECRET_ACCESS_KEY
    • 有权访问您要从中提取日志的S3存储桶的AWS密钥。
  • 端口= 5439
    • 与psql连接的端口。
  • CLUSTER_TYPE =单节点
    • 群集类型可以是单节点或多节点。
  • NODE_TYPE
    • 用于集群节点的实例类型。
  • NUMBER_OF_NODES = 10
    • 在多模式下运行时的节点数。
  • CLUSTER_IDENTIFIER =日志分析
  • DB_NAME =日志分析
  • S3_PATH = s3:// your_s3_bucket / papertrail / logs / 862693 / dt = 2015
数据库格式和失败的加载

将日志语句吸收到群集中时,请确保检查正在发生的失败负载量。 您可能必须编辑数据库格式以适合您的特定日志输出样式。 您可以通过首先创建一个单节点集群轻松调试此问题,该集群仅加载日志的一小部分,因此非常快。 在扩展到整个群集之前,请确保没有或几乎没有失败的负载。

如果出现问题,请查看copy命令的文档,该命令会将您的日志加载到数据库中,并提供设置脚本中的参数。

示例和基准

设置整个集群并对其运行示例查询是一件快速的事情。 例如,我将过去九个月的所有日志加载到Redshift集群中,并对它运行几个查询。 我没有花时间优化表格,但是如果需要的话,您肯定可以提高整个系统的速度。 开箱即用对我们来说已经足够快了。

查询357

如您所见,在10台计算机的群集上,加载5月份的所有日志(超过6亿条日志行)仅花费了12分钟。 由于有足够的可用存储空间,我们可以轻松地将一个多月的时间加载到该10台机器的群集中,但是对于本帖子来说,一个月就足够了。

之后,我们可以通过SQL搜索所有应用程序和过去服务器的历史记录。 我们与psql客户端连接,并针对“事件”数据库发送SQL查询。

例如,如果我们想知道五月份有多少个构建服务器报告日志,该怎么办:

loganalysis=# select count(distinct(source_name)) from events where source_name LIKE 'i-%';
 count 
-------
   801
(1 row)

因此,在5月,我们为客户运行了801台EC2构建服务器。 该查询大约需要3秒钟才能完成。

或假设我们想知道有多少人访问了我们主存储库的配置页面(项目ID被XXXX隐藏):

loganalysis=# select count(*) from events where source_name = 'mothership' and program LIKE 'app/web%' and message LIKE 'method=GET path=/projects/XXXX/configure_tests%';
 count 
-------
    15
(1 row)

因此,现在我们知道整个五月在该配置页面上有15次访问。 我们还可以获得所有详细信息,包括谁通过日志访问了它。 如果我们需要研究任何安全问题,这可能会有所帮助。 查询花费了大约40秒钟来遍历我们的所有日志,但是可以在Redshift上进行更多优化。

这些只是您可以用来查看日志的一些查询,从而可以更深入地了解客户对系统的使用情况。 您只需花费每小时2.50美元即可安装所有设备,并且可以立即将其关闭,并在需要再次访问该数据时重新创建。

结论

能够搜索历史并从中学习对构建大型基础架构非常重要。 您需要能够轻松查看历史记录,尤其是涉及安全问题时。

借助AWS Redshift,您拥有了一个出色的工具,可让您启动临时分析的快速而廉价的即席分析基础架构。 当然,Redshift还可以做更多的事情。

让我们知道您的日志,存储和搜索过程和工具在注释中。

通过@codeship“使用AWS Redshift进行长期日志分析”

点击鸣叫

翻译自: https://www.javacodegeeks.com/2015/06/long-term-log-analysis-with-aws-redshift.html

aws redshift

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值