用于存档ISO8601日志文件的简单工具
项目描述
logjam 0.0.4
发布时间:2015-05-14
Logjam处理压缩和存档ISO8601日志文件(相对简单)的问题。它的工作方式如下
将所有日志写入以ISO8601为文件名的每小时文件。
在您的日志目录上运行
logjam-compress
和logjam-upload
,通过cron或作为守护进程。您的完成日志文件将自动压缩并上传到S3。
如何使用它
日志文件格式
您的日志文件需要两件事
它们必须包含一个 UTC ISO8601时间戳。例如,在
haproxy-20130704T0000Z-us-west-2-i-ae23fega.log
中,时间戳是20130704T0000Z
。它们需要每小时或更频繁地写入。不是每天。
如果您使用rsyslog或syslog-ng,那么您可能已经使用每小时文件了。如果没有,配置起来非常简单。
logjam-compress
在/etc/cron.d/中的示例条目
10 * * * * * root logjam-compress --once /var/log/my-log-dir/
放入upstart配置文件或runit运行脚本的示例命令
logjam-compress /var/log/my-log-dir
logjam-upload
在/etc/cron.d/中的示例条目
10 * * * * * root logjam-upload --once /var/log/my-log-dir/archive/ s3://YOUR_BUCKET/{prefix}/{year}/{month}{/{day}/{filename}
放入upstart配置文件或runit运行脚本的示例命令
logjam-upload /var/log/my-log-dir/archive/ s3://YOUR_BUCKET/{prefix}/{year}/{month}{/{day}/{filename}
关于认证的说明 logjam-upload寻找标准的boto环境变量 $AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY以及$AWS_DEFAULT_REGION
以确定要使用哪个S3区域以及连接时使用哪些凭据。
如果这些变量不存在,并且您正在从具有IAM角色的实例中运行logjam-upload
,则logjam-upload
将解析其AWS凭证并连接到本地S3区域,除非您使用$AWS_DEFAULT_REGION
告诉它否则。
开始所需的东西
只需boto和一个S3存储桶。
这有什么用?
你可能认为不需要这个,因为如果你有任何大量的日志,你将需要一个在线日志聚合系统,比如Logstash。
而且如果你有非常大量的日志,你需要一个真正强大的、分布式的日志收集和存储系统,比如Scribe。
如果你需要后者,那么这个工具不适合你。
但是,如果你规模足够小,不需要维护自己的分布式日志存储系统,那么你有两个选择
实现在线日志聚合解决方案,然后处理日志持久化,可能是在你的日志聚合服务器上设置某种S3输出。这会工作,尽管你将有一个单点故障,你可能会在某个时间段内丢失所有日志。
实现一个以解耦你的日志聚合解决方案为主要机制的日志持久化解决方案。
在第二种情况下,你不再有单点故障,可能会在某个时间段内丢失所有日志,尽管当你丢失一个服务器时,你将失去它最后、部分小时的日志。
我对第二种情况非常满意,实际上,当我必须选择先有哪个时,我总是选择持久化而不是聚合。不幸的是,我总是在写代码来处理持久化——即压缩和上传日志文件。所以,最后,这里有一个小型、开源的工具。
运行测试
单元测试使用
python setup.py test
集成测试使用
export SENTRY_DSN="SOME SENTRY DSN" python tests/integration/test_all.py
或者运行所有测试
./test_all.sh
项目详情
logjam-0.0.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e36da378e6d050d48d6c20d3bb2c17b58c9f24dc1c14c3b83c553b9a1763603e |
|
MD5 | 693f7af4a9c42c7f163217a57832713f |
|
BLAKE2b-256 | e0fb725f666a6203b233b26fc0847eb9528ee8cee3c1f86e9c43e1c9bdcb9182 |