‧
阅读时间: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,您可以将它们连接到他们的数据库选项之一,如 RDS 的 Postgres。 Azure Monitor 也具有日志和存储功能。
高级用例:将多个 AWS 服务的日志存入 S3 桶中,并使用 Athena 进行查询
如果您有一些云服务(如 AWS)的经验,您可以使用整个云服务套件从多个不同的服务中提取日志,并将它们推送到一个中心位置以准备分析。
例如,将您的 EC2 实例中的 Web 服务器或应用程序日志以及您的 CloudTrail 日志推送到 S3 桶中。将您的 S3 桶连接到查询工具,如 Athena,以便您可以 创建几个表 用于分析。一旦有了表,您就可以连接到您的分析工具并创建一个故障排除仪表板,例如将 EC2 事件映射到 CloudTrail 事件的根本原因分析。
以下是一些您可以使用 S3 和 Athena 的 AWS 日志选项
- CloudWatch:存储应用程序、系统或自定义日志
- RDS:存储错误、慢查询或事务日志
- Lambda:存储包含执行细节、错误消息和自定义日志语句的 Lambda 日志
- 弹性负载均衡器(ELB):存储包含客户端 IP 地址、请求时间和响应状态码的 ELB 日志
如果您想更进一步,您可以将 Athena 连接到 dbt 并学习如何在 SQL 中编写自己的数据转换。dbt 简化了版本控制、部署和测试,而无需运行单个工具。然而,我们仅建议熟悉数据建模和开发工具的用户使用此配置。
批量加载数据以提高效率
您应直接将日志批量加载到您的数据仓库中,或像 S3 这样的存储选项中,以避免延迟和资源消耗。大多数云服务提供了一种 批量服务,您可以在其中安排和排队作业。注意,如果您支付数据库或日志存储费用,请首先检查批量加载的价格,因为一些云服务按批量上传收费。
使用数据库客户端库或连接器进行摄入
没有访问连接器工具不是问题,但可能需要更多开发工作。使用现有的数据库客户端库或驱动程序可以帮助您在日志时间直接将日志摄入存储/数据仓库。
例如,Postgres 有驱动程序,MySQL 有连接器。使用其中一个将数据库连接起来,而无需重新发明轮子。
确保您的日志包含时间戳、来源、消息和日志级别
我们建议您将以下四个区域添加到日志文件中,以使日志分析更加顺畅
- 时间戳:这将更容易建立事件序列。如果使用分析工具创建用于性能监控、审计和合规的仪表板,时间戳尤其重要。
- 来源:与创建日志的服务相同,还包括日志来自哪个位置/文件/子服务。您可以使用服务字段进行故障排除,或者只是为了了解分配给每个服务的资源。
- 日志消息:保持消息清晰简洁,以便您可以理解每个事件。重复使用关键词,以便在文本分析期间更容易过滤和找到所需内容。
- 日志级别:您可以按级别过滤,如
ALERT
和CRITICAL
,以便深入了解哪些日志需要立即调查和响应。
日志分析的额外最佳实践和想法
如果您正在寻求实时日志分析、高级或频繁的日志分析,日志专用工具通常更合适。如果您团队已经使用ELK堆栈,则像Grafana这样的工具可能适合您的需求。
以下是一些您可以在构建小型日志管道时使用的额外资源以供决策。