多集群实现 PLG 日志收集

2023-11-16 20:06:27 浏览数 (1)

多集群实现 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

标签使用方法

单个标签

1 2 3 4 5 6 7 8 9

scrape_configs: - job_name: system pipeline_stages: static_configs: - targets: - localhost labels: job: syslog __path__: /var/log/syslog

两个标签

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

scrape_configs: - job_name: system pipeline_stages: static_configs: - targets: - localhost labels: job: syslog __path__: /var/log/syslog - job_name: apache pipeline_stages: static_configs: - targets: - localhost labels: job: apache __path__: /var/log/apache.log

混合标签

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

scrape_configs: - job_name: system pipeline_stages: static_configs: - targets: - localhost labels: job: syslog env: dev __path__: /var/log/syslog - job_name: apache pipeline_stages: static_configs: - targets: - localhost labels: job: apache env: dev __path__: /var/log/apache.log

 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

安装

1

helm install loki ./loki-simple-scalable-0.56.7.tgz

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 只向主集群发送日志

多主互备

参考文档

  1. https://github.com/grafana/loki/issues/1866
  2. https://github.com/grafana/loki/issues/5948
  3. K8s 日志架构
  4. PLG 实现 Kubernetes Pod 日志收集和展示
  5. Loki 使用系列
  6. Loki生产环境集群方案

遗留问题

  1. 有些节点的 promtail 健康检查一直失败。 主要原因是,/var/log/pods/ 目录里面的日志 都是软链接,导致 promtail 收集不到日志。
  1. 微服务和简单可扩展模式中的 Gateway pods 起不来。 修改 kube-dns 为 coredns
  1. helm 部署 Loki 怎么增加自定义标签。 在 promtail value.yaml 里面设置
  2. 主 Loki模式 和 多主模式 那个更优。 建议用 微服务部署主Loki,实现高可用和高性能。

0 人点赞