前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多集群实现 PLG 日志收集

多集群实现 PLG 日志收集

作者头像
operator开发工程师
发布2023-11-16 20:06:27
3360
发布2023-11-16 20:06:27
举报
文章被收录于专栏:云原生民工云原生民工

多集群实现 PLG 日志收集

PLG介绍

https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/logs-loki-diagram.svg
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/logs-loki-diagram.svg

快速部署 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服务互相配合提供服务.

https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220911064555570.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220911064555570.png

下载 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

https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220912085452061.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220912085452061.png

promtail 不仅向本集群 Loki 发送日志,也向主集群 Loki 发送日志。

https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220912085928750.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220912085928750.png

单主

所有集群的 promtail 只向主集群发送日志

https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220912090036641.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220912090036641.png

多主互备

https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220920100311606.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220920100311606.png

参考文档

  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 收集不到日志。
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220912093848062.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220912093848062.png
  1. 微服务和简单可扩展模式中的 Gateway pods 起不来。 修改 kube-dns 为 coredns
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220913104752889.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20220913104752889.png
  1. helm 部署 Loki 怎么增加自定义标签。 在 promtail value.yaml 里面设置
  2. 主 Loki模式 和 多主模式 那个更优。 建议用 微服务部署主Loki,实现高可用和高性能。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多集群实现 PLG 日志收集
    • PLG介绍
      • 快速部署 PLG 环境
        • 标签使用方法
      •  Helm 安装微服务模式的 Loki
        • Helm 安装简单可扩展模式的 Loki
          • Helm 安装 Loki 全家桶
            • 多集群 Loki 方案
              • 一主多备
              • 单主
              • 多主互备
            • 参考文档
              • 遗留问题
              相关产品与服务
              Grafana 服务
              Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档