Loki 部署

概述

参考:

使用 docker 运行 Loki

docker run -d --rm --name loki \
  --network host \
  -v /opt/loki/config:/etc/loki \
  -v /opt/loki/data:/loki \
  -v /etc/localtime:/etc/localtime:ro \
  grafana/loki

注意:与 Prometheus 类似,需要修改 /opt/loki 目录权限为 777,否则 pod 内进程对该目录无操作权限

在 Kubernets 集群中部署

添加 loki 的 helm chart 仓库

Helm 部署 Loki 套件

参考:

部署 Loki 栈

  • kubectl create ns loki # 创建名称空间
  • helm pull grafana/loki-stack # 获取 loki-stack 的 charts 压缩包
  • tar -zxvf loki-stack-X.XX.X.tgz # 解压 charts
  • cd loki-stack # 进入目录,根据需求修改模板或 values.yaml 文件
  • helm upgrade –install loki –namespace=loki . # 使用默认配置在 loki 名称空间中部署 loki 栈 。该方式会部署 loki 与 promtail

在 grafana 中添加 loki 数据源,如图所示

Helm 部署 Simple scalable 架构 Loki

部署 Loki

  • helm install -n logging loki –create-namespace grafana/loki-simple-scalable

注意:可扩展模式会部署 loki-gateway 用以接收请求,并分离 读/写 请求,所有 Promtail 用来向 Loki 发起写请求的采集客户端和 Grafana 这种用来向 Loki 发起读请求的展示客户端,指定 Loki 端点时,都要指定 loki-gateway

这里为什么要自带 grafana-agent?这个 grafana-agent 是通过 grafana/agent-operator 拉起来的。

Helm 部署 Microservices 架构 Loki

部署 Loki

  • helm install -n logging loki –create-namespace grafana/loki-distributed

日志测试容器

这俩容器会频繁刷新各种类型日志

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dummylogs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: dummylogs
  template:
    metadata:
      labels:
        app: dummylogs
        logging: "true" # 要采集日志需要加上该标签
    spec:
      containers:
        - name: dummy
          image: cnych/dummylogs:latest
          args:
            - msg-processor
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dummylogs2
spec:
  replicas: 3
  selector:
    matchLabels:
      app: dummylogs2
  template:
    metadata:
      labels:
        app: dummylogs2
        logging: "true" # 要采集日志需要加上该标签
    spec:
      containers:
        - name: dummy
          image: cnych/dummylogs:latest
          args:
            - msg-receiver-api

其他

参考;


最后修改 July 23, 2024: clearup observability (4b9f5578)