在搭建 Grafana 全家桶集群时,进行日志收集的主要步骤和注意事项如下:
选择日志收集框架:
- Loki:作为自定义日志收集解决方案,Loki要求日志结构化,仅索引标签而非任意文本,避免了存储膨胀问题。
- 微服务架构:Loki采用微服务架构,如写服务与读服务分离,支持按需扩展,尤其是对写入操作。
- 外部存储:Loki将数据存储交由外部服务,降低了对状态的依赖,具备更好的水平扩展能力。
部署Loki:
- 使用Helm:通过Helm部署Loki,但需注意官方文档可能更新滞后。
- 配置MinIO存储桶:创建必要的MinIO存储桶,用于存储Loki的日志数据。
- 配置访问凭据:配置Loki与MinIO的访问凭据,确保Loki能够正常访问和存储数据。
添加日志数据源:
- Grafana内置支持:Grafana内置了对Loki的支持,可以通过HTTP URL连接Loki。
- K8S日志导入:通过FluentBit将K8S日志导入到Loki,以持续提供数据。FluentBit的配置可以基于官方示例,并根据实际需求进行额外功能的添加。
创建日志仪表板:
- 自定义仪表板:由于日志的灵活性,Loki需要自定义较多的仪表板。官方提供的仪表板较少,因此需要根据实际需求创建基础仪表板来监控服务错误和告警。
- 标签的重要性:在创建仪表板时,需要强调使用正确标签的重要性。因为只有写入的标签才能被Loki快速检索,因此标签的选择和使用对于日志的检索和分析至关重要。
架构设计评价:
- 分工明确:Loki采取了清晰的分工,收集层负责简单分类,存储层进行复杂的搜索优化。这种分工在处理日志格式多样且实时性要求高的场景中,提供了性能与存储成本的平衡。
- 推荐Tempo:对于需要复杂搜索的场景,Loki推荐使用Tempo进行进一步的优化和处理。
综上所述,在搭建Grafana全家桶集群时,日志收集是一个复杂但重要的环节。通过选择合适的日志收集框架、正确部署和配置Loki、添加日志数据源、创建自定义仪表板以及优化架构设计,可以有效地实现日志的收集、存储和分析。