问题描述
我们采用 Promtail 来采集日志,Grafana Loki 来存储日志,以对日志进行集中管理(即单个 Grafana Loki 实例);
该笔记将记录:在 Kubernetes Cluster 中,部署 Grafana Loki 的方法,以及相关问题的解决办法;
解决方案
下载 Loki 和 Promtail 程序;
下载两个程序的配置文件;
启动 Loki 服务;
配置 Promtail 文件以抓取日志,并启动 Promtail 服务;
版本选择(⇒ Release notes)
现在(05/20/2022)最新为 2.5 版本,我们首次部署,所以我们并不关心发行说明;
部署模式
如前所述,Loki 的所有模块都在同个二进制程序中。
Monolithic mode
1)-target=all,所有组件在同个进程中运行;
2)可用于测试或小规模使用(<100G);性能取决于节点性能;流量是循环到各节点;
3)通过 memberlist_config 配置,以使多个成员共享同个存储;
Simple scalable deployment mode
1)读写分离:-target=read and -target=write
2)分离读写而带来的高可用、性能提升;
3)需要前端负载均衡,以将 /loki/api/v1/push 推到 wirte node 中;
4)支持 TB 级别日志;若干 TB 级别;
Microservices mode
1)所有组件独立运行:ingester distributor query-frontend query-scheduler querier index-gateway ruler compactor
2)比较复杂(但配置 Kuberntes 比较容易)
3)具有更好的观测性,也是最高效的 Loki 安装;
4)适用于大规模场景以及高可控性;该模式最适合 Kubernetes 部署。有 Jsonnet 和分布式 Helm 图表安装。
安装方法
Installation | Grafana Loki documentation
Install using Tanka (recommended)
# 05/23/2022 我们没有采用该部署方式,原因是:我们的工作需要面对非常多、各种类型的系统,而 Tanka/Jsonnet 并非所有系统都在使用的工具,所以我们暂时不考虑引入该工具(等该工具大面积普及时我们再开始使用);
Simple scalable deployment with Helm
# 05/23/2022 我们暂时不采用该部署方式,所以相关文档不再阅读;
Install through Docker or Docker Compose
# 05/23/2022 我们暂时不采用该部署方式,所以相关文档不再阅读;
Install and run locally
# 05/23/2022 我们暂时不采用该部署方式,所以相关文档不再阅读;
Install from source
# 05/23/2022 我们暂时不采用该部署方式,所以相关文档不再阅读;
Microservices deployment with Helm
Loki cluster
Grafana
Promtail to Loki
Promtail with syslog
Promtail with systemd-journal
服务升级
Upgrading | Grafana Loki documentation
我们现在并不涉及升级的问题,所以暂时并不关注升级相关的内容。
但是从官方文档来开,升级过程长篇大论,可能并非易事;