一个可扩展的amazon s3和cloudfront日志解析器。
s3stat的Python项目详细描述
这个python模块使用非常好的goaccess实用程序 为您提供一个令人惊叹的amazon日志文件分析器工具,它相对容易安装,而且非常 易于扩展。 需要goaccess版本:0.8.5(不适用于0.9+)
安装
pip install s3stat
这将在pythonpath中安装s3stat.py,以防您希望从命令行运行它。
快速启动
生成aws用户
首先,您应该创建一个有权读取日志文件的用户,并且您应该准备好它的aws访问密钥。
创建一个新用户并选择为该用户生成访问密钥的选项
保存访问密钥和安全密钥,因为很快就需要它们了
打开用户的permissions选项卡,并附加新的用户策略。选择“自定义策略”,然后复制以下内容:
{ "Statement": [ { "Sid": "Stmt1334764540928", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLogging", "s3:GetObject", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:PutBucketAcl", "s3:PutBucketLogging", "s3:PutObject", "s3:PutObjectAcl" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "Stmt1334764631669", "Action": [ "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:GetStreamingDistribution", "cloudfront:GetStreamingDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListStreamingDistributions", "cloudfront:UpdateDistribution", "cloudfront:UpdateStreamingDistribution" ], "Effect": "Allow", "Resource": [ "*" ] } ] }
设置登录bucket
首先,您应该要求amazon为您的bucket和cloudfront发行版生成日志。
运行此脚本
s3stat.py <aws key> <aws secret> <bucket> <log_path>
这将下载今天的所有日志文件,并在控制台中启动goaccess实例。
有关更多选项,请运行:
s3stat.py -h
延伸
实际上,s3stat被设计成易于添加到pythonic工作流中,因此它定义了 一个可以子类化的类,以json格式处理结果。:
import s3stat class MyS3Stat(s3stat.S3Stat): def process_results(self, json): print json def process_error(self, exception, data=None): print data raise exception mytask = MyS3Stat(bucket, log_path, for_date, (aws_key, aws_secret)) mytask.run()
如果aws\u*参数是可选的,如果缺少,则从boto提供的环境变量中获取。 当前只在json解码失败时调用process_error方法,因此data是不可解码的字符串,而 异常是python引发的valueerror。
待办事项
- 提供一个命令,将日志记录添加到指定的bucket和cloudfront分发版中