多集群实现 PLG 日志收集
目录
多集群实现 PLG 日志收集
PLG介绍
快速部署 PLG 环境
-
新建目录保存配置文件
1
mkdir -p /data/loki/config && cd /data/loki/config
-
部署 Loki
1 2
wget https://raw.githubusercontent.com/grafana/loki/v2.6.1/cmd/loki/loki-local-config.yaml -O loki-config.yaml docker run --name loki -d -v /data/loki/config:/mnt/config -p 3100:3100 grafana/loki:2.6.1 -config.file=/mnt/config/loki-config.yaml
-
部署 promtail
1
wget https://raw.githubusercontent.com/grafana/loki/v2.6.1/clients/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// 修改 promtail 配置文件 server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients: - url: http://10.11.44.49:3100/loki/api/v1/push scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: varlogs __path__: /var/lib/docker/containers/**/*.log
1
docker run --name promtail -d -v /data/loki/config:/mnt/config -v /var/log:/var/log --link loki grafana/promtail:2.6.1 -config.file=/mnt/config/promtail-config.yaml
-
部署 grafana
1
docker run -d --name grafana -p 3111:3000 grafana/grafana grafana
标签使用方法
单个标签
|
|
两个标签
|
|
混合标签
|
|
Helm 安装微服务模式的 Loki
Loki 的部署方式有很多种也非常灵活,有微服务部署模式,就是每个组件单独部署,也可以单进程部署。单模块部署相对比较复杂, 每个模块可以单独启动, 不同的模块间通过gRPC服务互相配合提供服务.
-
下载 chart 包,因为网络原因在线 helm 安装会失败,所以先下载下来。
1
helm pull grafana/loki-distributed
-
安装
1
helm install loki ./loki-distributed-0.56.7.tgz
Helm 安装简单可扩展模式的 Loki
-
下载 chart 包
1
helm pull grafana/loki-simple-scalable
-
安装
|
|
Helm 安装 Loki 全家桶
-
下载 chart 包
1 2 3 4 5
helm pull grafana/loki-stack 重装之前,先清理下资源 kubectl delete all --all -n loki kubectl delete ns loki
-
安装
1 2 3 4 5 6
kubectl create namespace loki helm upgrade --install loki --namespace=loki loki-stack-2.8.2.tgz --set grafana.enabled=true // 只安装 Loki 和 promtail helm install loki ./loki-stack --namespace=loki --create-namespace
-
获取密码登录
1
kubectl get secret --namespace loki loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
-
访问
1
kubectl port-forward --address 0.0.0.0 --namespace loki service/loki-grafana 3000:80
检查 loki 的状态
curl -G -s "http://10.101.32.33:30389/loki/api/v1/label" | jq .
多集群 Loki 方案
一主多备
主要思路来自 issue
promtail
不仅向本集群 Loki 发送日志,也向主集群 Loki 发送日志。
单主
所有集群的 promtail 只向主集群发送日志
多主互备
参考文档
- https://github.com/grafana/loki/issues/1866
- https://github.com/grafana/loki/issues/5948
- K8s 日志架构
- PLG 实现 Kubernetes Pod 日志收集和展示
- Loki 使用系列
- Loki生产环境集群方案
遗留问题
-
有些节点的 promtail 健康检查一直失败。
主要原因是,/var/log/pods/ 目录里面的日志 都是软链接,导致 promtail 收集不到日志。
-
微服务和简单可扩展模式中的 Gateway pods 起不来。
修改 kube-dns 为 coredns
-
helm 部署 Loki 怎么增加自定义标签。
在 promtail value.yaml 里面设置
-
主 Loki模式 和 多主模式 那个更优。
建议用 微服务部署主Loki,实现高可用和高性能。