当前位置: 首页 > news >正文

Docker Compose 一键安装PLG日志系统方案详解

目录

1. 核心组件

1.1 Promtail

1.2 Loki

1.3 Grafana

2. 准备工作

3. 创建 Docker Compose 文件

4. 创建配置文件

4.1 创建 Loki 配置文件

4.2 创建 Promtail 配置文件

5. 启动PLG

6. 验证部署

6.1 文件目录结构

6.2 检查容器状态

6.3 查看容器日志

6.4 验证服务访问

7. 在 Grafana 中配置 Loki 数据源

8. 日志检索


Docker Compose 一键安装 Promtail + Loki + Grafana (PLG) 日志系统的详细教程。这个日志搭建方案非常适合在单机、开发测试环境或小型部署中快速搭建日志系统。

1. 核心组件

1.1 Promtail

  • 作为日志采集代理,负责从应用节点收集原始日志(支持本地文件及systemd日志),并附加标签(如应用名、环境)后传输至Loki。
  • 相比传统方案(如Logstash),资源消耗更低,部署更轻量。

1.2 ​​​​​​​Loki

  • 日志存储与查询引擎,采用 “标签索引 + 原始日志存储” 架构:
    • 仅对日志的元数据标签(非日志内容)建立索引,大幅降低存储开销(比全文索引方案节省30%-50%存储)。
    • 查询时先通过标签筛选数据集,再对原始日志进行逐行扫描(即“硬扫描”),适合高吞吐日志场景。

1.3 Grafana

  • 统一可视化平台,支持日志查询与监控仪表盘集成,消除用户在日志系统(如Kibana)和监控工具间切换的成本。

2. 准备工作

  1. 安装 Docker 和 Docker Compose:

    • 确保你的机器上已安装 Docker 和 Docker Compose。

    • 安装指南: Get Docker | Docker Docs和 Install | Docker Docs

  2. 创建项目目录:

mkdir  -p   /mnt/plg_docker_compose/plg-logging 

3. 创建 Docker Compose 文件

 cat  docker-compose.yml

version: '3.8'services:# --- Loki (日志存储) ---loki:image: grafana/loki:2.8.8 # 使用稳定版本container_name: lokiports:- "3100:3100" # Loki HTTP API 端口command: -config.file=/etc/loki/local-config.yaml # 指定配置文件volumes:- ./config/loki-config.yaml:/etc/loki/local-config.yaml # 挂载配置文件- ./data/loki:/loki # 持久化存储日志数据networks:- plg-networkrestart: unless-stopped# --- Promtail (日志收集器) ---promtail:image: grafana/promtail:2.8.8 # 使用与 Loki 相同的版本container_name: promtailcommand: -config.file=/etc/promtail/config.yml # 指定配置文件volumes:- ./config/promtail-config.yml:/etc/promtail/config.yml # 挂载配置文件- /var/log:/var/log:ro # 挂载宿主机日志目录 (只读)- /var/lib/docker/containers:/var/lib/docker/containers:ro # 挂载 Docker 容器日志networks:- plg-networkdepends_on:- loki # 确保 Loki 先启动restart: unless-stopped# --- Grafana (可视化) ---grafana:image: grafana/grafana:10.1.5 # 使用稳定版本container_name: grafanaports:- "3000:3000" # Grafana Web UI 端口environment:- GF_SECURITY_ADMIN_PASSWORD=Pa880rD@123456 # 设置管理员密码- GF_USERS_ALLOW_SIGN_UP=false # 禁用用户注册 (可选)volumes:- ./data/grafana:/var/lib/grafana # 持久化 Grafana 数据 (用户、仪表盘等)networks:- plg-networkdepends_on:- loki # 确保 Loki 可用restart: unless-stopped# --- 网络 ---
networks:plg-network:driver: bridge# --- 数据卷 (可选,如果不想用 bind mount) ---
# volumes:
#   loki-data:
#   grafana-data:

4. 创建配置文件

4.1 创建 Loki 配置文件

mkdir -p config
vim config/loki-config.yaml

# loki-config.yaml
auth_enabled: false # 单机模式通常禁用认证server:http_listen_port: 3100grpc_listen_port: 9096common:path_prefix: /loki # 数据存储前缀storage:filesystem:chunks_directory: /loki/chunksrules_directory: /loki/rulesreplication_factor: 1 # 单节点ring:instance_addr: 127.0.0.1kvstore:store: inmemory # 单节点用内存存储,生产环境用 etcd/consulschema_config:configs:- from: 2020-10-24store: boltdb-shipperobject_store: filesystemschema: v11index:prefix: index_period: 24hruler:alertmanager_url: http://localhost:9093/alertmanager

4.2 创建 Promtail 配置文件

# promtail-config.yml
server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yaml # 记录日志读取位置clients:- url: http://loki:3100/loki/api/v1/push # 指向 loki 服务 (Docker 网络)scrape_configs:# 收集 Docker 容器日志- job_name: dockerstatic_configs:- targets:- localhostlabels:job: docker__path__: /var/lib/docker/containers/*/*log # Docker 容器日志路径# 收集系统日志 (例如 /var/log/*.log)- job_name: systemstatic_configs:- targets:- localhostlabels:job: system__path__: /var/log/*.log # 系统日志路径# 收集本 PLG 系统自身的日志 (可选)- job_name: plgstatic_configs:- targets:- localhostlabels:job: plg__path__: /var/log/plg/*.log # 自定义路径

5. 启动PLG

cd   /mnt/plg_docker_compose/plg-logging  
docker-compose up -d  

6. 验证部署

6.1 文件目录结构

plg-logging/
├── docker-compose.yml
├── config/
│   ├── loki-config.yaml
│   └── promtail-config.yml
└── data/├── loki/└── grafana/

6.2 检查容器状态

cd   /mnt/plg_docker_compose/plg-logging 
docker-compose ps

正常情况,status应为“UP”。

6.3 查看容器日志

cd   /mnt/plg_docker_compose/plg-logging 
docker-compose logs -f            # 查看所有服务日志
docker-compose logs -f loki       # 只看 Loki 日志
docker-compose logs -f promtail   # 只看 Promtail 日志

6.4 验证服务访问

  • Grafana: 打开浏览器访问http://IP:3000

    • 用户名: admin

    • 密码: your-secure-password (在 docker-compose.yml 中设置)

  • Loki API: 访问 http://<你的服务器IP>:3100/ready 应该返回 ready

7. 在 Grafana 中配置 Loki 数据源

  1. 登录 Grafana。

  2. 点击左侧齿轮图标 (Configuration) -> Data sources -> Add data source

  3. 选择 Loki

  4. 配置:

    • Name: Loki

    • URL: http://loki:3100\ (在 Grafana 容器内部,loki 是服务名)

    • 其他保持默认。

  5. 点击 Save & test。如果显示 "Data source successfully connected.",则配置成功。

8. 日志检索

1. 进入 Explore:

  • 点击左侧放大镜图标 (Explore)。
  • 选择 Loki 数据源。

2. 查询日志

  • 在 Log browser 中,你可以通过 job 标签选择日志流,例如 job="docker"
  • 或者直接输入 LogQL 查询,例如:
    • {job="docker"} - 查看所有 Docker 容器日志。
    • {job="system"} - 查看系统日志。
    • {container="loki"} - 查看名为 "loki" 的容器的日志 (如果标签存在)。


文章转载自:

http://611hcH7F.rqnhf.cn
http://y2TriZmW.rqnhf.cn
http://oR3BOSln.rqnhf.cn
http://oVP9Fkcg.rqnhf.cn
http://idQYGcEf.rqnhf.cn
http://HLfJlQXE.rqnhf.cn
http://PA3pzseM.rqnhf.cn
http://RPGJSbOS.rqnhf.cn
http://YnbiQhQY.rqnhf.cn
http://YscrRIzy.rqnhf.cn
http://K0ALTZxt.rqnhf.cn
http://7fV811lP.rqnhf.cn
http://x6rq7Eu8.rqnhf.cn
http://zcpnYhET.rqnhf.cn
http://beMmpFJ3.rqnhf.cn
http://XWzf9miP.rqnhf.cn
http://8XHLomuu.rqnhf.cn
http://LZSQTPVz.rqnhf.cn
http://CSJv4XTv.rqnhf.cn
http://ONBSwEbs.rqnhf.cn
http://kN9KwXSx.rqnhf.cn
http://L1Ca5327.rqnhf.cn
http://8znghkH1.rqnhf.cn
http://N1g9bqbq.rqnhf.cn
http://meQMei1k.rqnhf.cn
http://vyYQF4rS.rqnhf.cn
http://htn56cZo.rqnhf.cn
http://epjzTYYr.rqnhf.cn
http://7RK78lrS.rqnhf.cn
http://6eAlMX4I.rqnhf.cn
http://www.dtcms.com/a/368856.html

相关文章:

  • 运维安全02 - PAM介绍以及使用
  • 小补充: IPv6 安全RA
  • 企业培训笔记:宠物信息管理--实现宠物信息的删除
  • 燃气安全监测预警平台建设项目
  • 小场景大市场:猫狗识别算法在宠物智能设备中的应用
  • Android 应用进程启动
  • WebSocket:实现实时通信的革命性技术
  • 【Rust 入门】01. 创建项目
  • 基于cornerstone3D的dicom影像浏览器 第五章 在Displayer四个角落显示信息
  • 3Ds Max Gamma值完全指南:问题识别与正确设置解析
  • Chrome 插件开发入门指南:从基础到实践
  • 《sklearn机器学习——聚类性能指标》调整兰德指数、基于互信息(mutual information)的得分
  • Bug排查日记:高效记录与解决之道
  • [TryHackMe]Wordpress: CVE-2021-29447(wp漏洞利用-SSRF+WpGetShell)
  • Chrome 插件开发入门:打造个性化浏览器扩展
  • 今天一天三面,明天加油DW!!!
  • Java基础篇02:基本语法
  • 当前的大部分的AI,可能已经分到了传统那桌了!Causal AI:颠覆传统机器学习的下一代人工智能技术,让AI真正理解“为什么“!
  • Firefox Window 开发流程(二)
  • 树莓派传感器扩展板资料
  • setup函数相关【3】
  • 基于单片机坐姿提醒系统/久坐提醒设计
  • 请求超过Spring线程池的最大线程(处理逻辑)
  • 使用buildroot交叉编译swupdate 记录
  • PyTorch 中的循环神经网络 (RNN/LSTM):时序数据处理实战指南
  • Preprocessing Model in MPC 7 - Matrix Triples and Convolutions Lookup Tables
  • 职场突围:我的转岗反思录
  • Nature Electronics 用于解码疲劳水平的眼睑软体磁弹性传感器
  • 【AI产品思路】AI 原型设计工具横评:产品经理视角下的 v0、Bolt 与 Lovable
  • 如何使用宝塔API批量操作Windows目录文件:从获取文件列表到删除文件的完整示例