跳转到主要内容

从S3下载云日志并将它们合并成一天的单一日志文件。

项目描述

merges3logs

从S3下载云日志并将它们合并成一天的单一日志文件。

安装

pip install merges3logs

用法

按以下说明设置配置文件。

运行

merges3logs path/to/config.ini

这将获取昨天的日志(UTC)。要运行不同日期,运行

merges3logs path/to/config.ini --date YYYY-MM-DD

运行时间

某些日期的日志行将出现在下一天的日志文件中。这是因为一天的最后部分要直到下一天才会刷新,而写出的文件将带有那天日期。这些日期都在UTC。根据您的日志配置,所有一天的最后日志可能需要数小时才能刷新到S3。

因此,您可能希望在午夜后至少几小时运行此程序。

您下载的下一天的日志将被缓存,并且第二天不会重新下载。

配置

大部分配置通过".ini"风格的配置文件完成。以下是一个示例

[AWS]
AccessKey = XXX
SecretKey = XXX

[S3]
#  Bucket to download log files from
BucketName = mylogsbucket
#  The prefix of the logfiles to download.
#  The "%" must be doubled, strftime format specifiers may be used
Prefix = path/to/logfileprefix_log-%%Y-%%m-%%d-
#  Number of parallel downloads to do
MaxWorkers = 10

[Local]
#  Directory to write files downloaded from S3
CacheDir = /path/to/mylogsbucketcache
#  Directory to write merged logfiles to
DestDir = /path/to/merged-logs
#  .gz is added to this logfile name
#  The "%" must be doubled, strftime format specifiers may be used
DestFilename = webworkers-cloudfront-%%Y-%%m-%%d.log
#  Remove the day's cached logfiles after a successful run?
RemoveFiles = False

详情

  • AWS指定了您的访问和密钥。
  • S3.BucketName是您的存储桶名称。
  • S3.Prefix 是特定日期的日志文件名的“前缀”。S3 前缀是从桶名之后到包括日期在内的所有内容,日期使用 "strftime()" 格式编码,但 "%" 需要加倍(因为 INI 格式否则会解释它们)。
  • S3.MaxWorkers 是运行以获取日志的下载作业数量。根据您在 Cloudfront 中的日志配置以及服务的访问范围,这可能是每天成千上万的日志文件。因此,并行运行下载可以真正加快速度。
  • Local.CacheDir 是存储已下载日志文件的目录路径。此目录需要设置清理作业以防止其无限制增长。另请参阅 "Local.RemoveFiles"。
  • Local.DestDir 是合并日志文件将被写入的目录。
  • Local.DestFilename 是将写入 DestDir 的文件名,使用 "strftime()" 格式指定日期。
  • Local.RemoveFiles,如果为 "True",将在成功运行后将缓存目录中的日期文件删除。如果为 "False",则保留它们,您需要设置 cron 作业或类似作业来删除它们。这可能主要用于测试,因此重复下载是不必要的。默认为 "True"。

清理

merges3logs 将日志文件下载到缓存目录中,然后从该目录中的文件进行处理。您可以在运行后使用 "Local.RemoveFiles" 删除它们,或设置 cron 作业等。

find /path/to/cachedir -type f -mtime +3 -exec rm {} +

无论如何,设置缓存清理是值得的,因为它们可能很大,并且在程序因任何原因失败时可能会积累文件。

您还需要清理目标日志目录,尽管它的增长速度要慢得多(日志被压缩且每天只有一个文件)。例如,可以使用 logrotate 或

find /path/to/merged-logs -type f -mtime +60 -exec rm {} +

作者

由 Sean Reifschneider 编写,2023 年 10 月。

许可证

CC0 1.0 通用,有关更多信息请参阅 LICENSE 文件。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

merges3logs-1.0.1.tar.gz (9.2 kB 查看散列)

上传时间

构建分发

merges3logs-1.0.1-py3-none-any.whl (11.6 kB 查看散列)

上传时间 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面