‧
4 分钟阅读
为日志分析设置基本管道
Metabase 团队
‧ 4 分钟阅读
分享本文
选择用于清理、解析和构建日志数据的工具可能会令人不知所措(且成本高昂)。但如果您刚开始,可以使用简单的设置进行临时分析,就像使用 Metabase 这样的 BI 工具一样。以下是一些用于设置基本日志分析管道的最佳实践。
使用数据连接器工具作为摄取的快捷方式
像 Airbyte 这样的工具可以快速连接到您的数据库并为您构建日志。选择您的日志源,例如 AWS CloudTrail,并将其连接到数据库,例如 Snowflake(一种相对简单、可扩展、成本合理的解决方案),或 AWS Aurora Serverless Postgres(一种简单、有一定可扩展性、低成本的解决方案)。
其他 ETL 工具,例如 Fivetran 或 Stitch,工作方式类似。它们使用连接器将日志数据从源(如 CloudTrail)移至数据库。您还可以 同时使用 ETL 工具并执行数据建模,以帮助您完成一些繁重的工作。
使用单一云提供商将一切集中管理
Google Cloud Logging 可与 BigQuery 连接,以便您可以将日志自动摄取到您的数据仓库中。AWS 有多种日志记录选项,例如 CloudTrail 或 CloudWatch,您可以将其连接到其中一个数据库选项,例如 Postgres for RDS。Azure Monitor 也具有日志记录和存储功能。
高级用例:将多个 AWS 服务的日志转储到 S3 存储桶,并使用 Athena 查询它们
如果您对云服务(如 AWS)有一定的经验,您可以使用一套完整的云服务来提取多个不同服务的日志,并将它们推送到一个中心位置,以进行分析准备。
例如,将来自 EC2 实例的 Web 服务器或应用程序日志与 CloudTrail 日志一起推送到 S3 存储桶。将您的 S3 存储桶连接到像 Athena 这样的查询工具,以便您可以 创建一些表 用于分析。一旦您有了表,就可以连接到您的分析工具并创建一个故障排除仪表板,例如映射 EC2 事件与 CloudTrail 事件以进行根本原因分析的仪表板。
以下是您可以在 S3 和 Athena 中使用的其他 AWS 日志记录选项
- CloudWatch:存储应用程序、系统或自定义日志
- RDS:存储错误、慢查询或事务日志
- Lambda:存储包含执行详细信息、错误消息和自定义日志语句的 lambda 日志
- Elastic Load Balancer (ELB):存储包含客户端 IP 地址、请求时间、响应状态码的 ELB 日志
如果您想更进一步,可以 将 Athena 连接到 dbt 并学习如何用 SQL 编写自己的数据转换。dbt 简化了版本控制、部署和测试,无需运行单独的工具。但是,我们仅建议在您熟悉数据建模和开发人员工具的情况下使用此设置。
批量加载日志以提高效率
您应该将日志批量加载到数据仓库或 S3 等存储选项中,以避免延迟和资源消耗。大多数云服务都提供 批处理服务,您可以在其中安排和排队作业。请注意,如果您需要为数据库或日志存储付费,请先仔细检查批量加载的价格,因为某些云服务会按批次上传收费。
使用数据库客户端库或连接器进行摄取
没有连接器工具也不成问题,但这可能需要更多的开发工作。使用现有的数据库客户端库或驱动程序可以在日志记录时帮助您直接将日志摄取到存储/数据仓库中。
例如,Postgres 有驱动程序,MySQL 有连接器。使用其中之一来连接到您的数据库,而无需重新发明轮子。
确保您的日志包含时间戳、来源、消息和日志级别
我们建议在日志文件中添加四个区域,以使日志分析更顺畅
- 时间戳:这将更容易确定事件顺序。如果您使用分析工具创建性能监控、审计和合规性仪表板,时间戳尤其重要。
- 来源:例如创建日志的服务,还包括日志来自的哪个位置/文件/子服务。您可以使用服务字段进行故障排除,或仅用于衡量分配给每个服务的资源。
- 日志消息:保持消息清晰简洁,以便您理解每个事件。重用关键字,以便在文本分析期间更容易过滤和查找所需内容。
- 日志级别:您可以按
ALERT和CRITICAL等级别进行过滤,以找出需要立即调查和响应的日志。
其他最佳实践和日志分析思路
如果您需要实时日志分析,或者进行高级或频繁的日志分析,则日志特定工具通常更适合。如果您的团队已在使用 ELK 堆栈,那么像 Grafana 这样的工具可能就足够了。
以下是一些在构建小型日志管道时可以帮助您做出决策的附加资源