我有一份用户列表,.passwd
正在access_log
上传到 Cloudwatch。我需要每周报告这份列表中哪些人访问了服务器。
有没有办法可以自动完成这个,而不是手动检查每个用户的日志?有几十种方法。
答案1
要自动执行这样的任务,您有几个选择。
批量处理-从 CloudWatch 下载日志,然后解析它们,正在寻找您的用户。
您可以使用它
aws logs describe-log-streams
来查找日志流名称,并按时间戳进行过滤,以确保只处理最近的日志流。对于每个日志流调用
aws logs get-log-events
,它将为您提供实际的日志消息,然后解析它们,例如使用grep
。您可能不想使用
aws
,而是grep
想编写一个小型下载器/解析器,例如,用python
您选择的其他语言,并使用以下之一AWS 开发工具包用于访问日志的库。在线处理- 捕获并处理匹配的日志记录一旦它们被写入 CloudWatch Logs。您可以设置CloudWatch Logs 过滤器模式并将匹配的
access_log
记录提供给Lambda 函数这将跟踪访问您网站的用户。例如,您可以将结果保存在DynamoDB,每个用户一个对象。去重量并使用ElasticSearch 服务或者格雷洛格或者Splunk或类似的东西日志处理服务。但这很可能超出您的使用情况。
希望有帮助:)
答案2
NXLog 可以使用 CloudWatch API 从 Amazon Cloudwatch 中提取日志,并且还有一个可用的 Python 脚本这里。