Docker Compose 一键安装PLG日志系统方案详解
Docker Compose 一键安装 Promtail + Loki + Grafana (PLG) 日志系统的详细教程。这个日志搭建方案非常适合在单机、开发测试环境或小型部署中快速搭建日志系统。
目录
Docker Compose 一键安装 Promtail + Loki + Grafana (PLG) 日志系统的详细教程。这个日志搭建方案非常适合在单机、开发测试环境或小型部署中快速搭建日志系统。
1. 核心组件
1.1 Promtail
- 作为日志采集代理,负责从应用节点收集原始日志(支持本地文件及systemd日志),并附加标签(如应用名、环境)后传输至Loki。
- 相比传统方案(如Logstash),资源消耗更低,部署更轻量。
1.2 Loki
- 日志存储与查询引擎,采用 “标签索引 + 原始日志存储” 架构:
- 仅对日志的元数据标签(非日志内容)建立索引,大幅降低存储开销(比全文索引方案节省30%-50%存储)。
- 查询时先通过标签筛选数据集,再对原始日志进行逐行扫描(即“硬扫描”),适合高吞吐日志场景。
1.3 Grafana
- 统一可视化平台,支持日志查询与监控仪表盘集成,消除用户在日志系统(如Kibana)和监控工具间切换的成本。
2. 准备工作
-
安装 Docker 和 Docker Compose:
-
确保你的机器上已安装 Docker 和 Docker Compose。
-
-
创建项目目录:
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: loki
ports:
- "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-network
restart: unless-stopped
# --- Promtail (日志收集器) ---
promtail:
image: grafana/promtail:2.8.8 # 使用与 Loki 相同的版本
container_name: promtail
command: -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-network
depends_on:
- loki # 确保 Loki 先启动
restart: unless-stopped
# --- Grafana (可视化) ---
grafana:
image: grafana/grafana:10.1.5 # 使用稳定版本
container_name: grafana
ports:
- "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-network
depends_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: 3100
grpc_listen_port: 9096
common:
path_prefix: /loki # 数据存储前缀
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1 # 单节点
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory # 单节点用内存存储,生产环境用 etcd/consul
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
ruler:
alertmanager_url: http://localhost:9093/alertmanager
4.2 创建 Promtail 配置文件
# promtail-config.yml
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml # 记录日志读取位置
clients:
- url: http://loki:3100/loki/api/v1/push # 指向 loki 服务 (Docker 网络)
scrape_configs:
# 收集 Docker 容器日志
- job_name: docker
static_configs:
- targets:
- localhost
labels:
job: docker
__path__: /var/lib/docker/containers/*/*log # Docker 容器日志路径
# 收集系统日志 (例如 /var/log/*.log)
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: system
__path__: /var/log/*.log # 系统日志路径
# 收集本 PLG 系统自身的日志 (可选)
- job_name: plg
static_configs:
- targets:
- localhost
labels:
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 数据源
登录 Grafana。
点击左侧齿轮图标 (Configuration) ->
Data sources
->Add data source
。选择
Loki
。配置:
Name:
Loki
URL:
http://loki:3100\
(在 Grafana 容器内部,loki
是服务名)其他保持默认。
点击
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" 的容器的日志 (如果标签存在)。
更多推荐
所有评论(0)