Windows Docker 部署 Loki + Promtail + Grafana 完整教程
适用环境:Windows 10/11 + Docker Desktop 最终效果:通过 Docker Compose 一键部署完整的日志采集(Promtail)、存储查询(Loki)、可视化展示(Grafana)系统
📁 一、准备工作
1.1 确认 Docker Desktop 正常运行
- 系统托盘看到 🐳 鲸鱼图标,且状态为绿色
- 打开 PowerShell,执行以下命令验证:
docker --version
docker-compose --version正常输出类似:
Docker version 24.0.6, build ed223bc
Docker Compose version v2.20.21.2 分配足够资源
- 打开 Docker Desktop
- 点击右上角 Settings(⚙️)
- 选择 Resources → Advanced
- 确保 Memory 至少 4.00 GiB
- 点击 Apply & Restart
1.3 创建工作目录
# 进入你的数据目录(可自行修改路径)
cd D:\dockerData
# 创建 loki-stack 项目目录
mkdir loki-stack
cd loki-stack📄 二、创建配置文件
在 D:\dockerData\loki-stack\ 目录下,依次创建以下三个文件。
2.1 创建 docker-compose.yml
# 用记事本创建(或 VS Code)
notepad docker-compose.yml将以下内容完整复制进去并保存:
services:
loki:
image: grafana/loki:latest
container_name: loki
ports:
- "3100:3100"
volumes:
- loki-data:/loki
command: -config.file=/etc/loki/local-config.yaml
restart: unless-stopped
promtail:
image: grafana/promtail:latest
container_name: promtail
volumes:
- /var/log:/var/log
- ./promtail-config.yaml:/etc/promtail/config.yml
command: -config.file=/etc/promtail/config.yml
depends_on:
- loki
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
environment:
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
volumes:
- ./grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml
depends_on:
- loki
restart: unless-stopped
volumes:
loki-data:💡 说明:
loki-data卷用于持久化存储日志数据,重启容器不会丢失restart: unless-stopped保证容器异常退出后自动重启GF_AUTH_ANONYMOUS_ENABLED=true允许免密登录,方便测试
2.2 创建 promtail-config.yaml
notepad promtail-config.yaml复制以下内容并保存:
client:
url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
host: windows-docker
__path__: /var/log/*log💡 说明:
http://loki:3100是 Docker Compose 内部网络中的服务名地址job: varlogs是日志流的标签,后续查询时用{job="varlogs"}即可过滤__path__指向容器内的/var/log目录
2.3 创建 grafana-datasources.yaml
notepad grafana-datasources.yaml复制以下内容并保存:
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
url: http://loki:3100
isDefault: true
version: 1
editable: true💡 说明:这个配置文件会让 Grafana 启动时自动添加 Loki 数据源,省去手动配置的步骤。
2.4 检查文件是否齐全
dir *.yaml应该看到三个文件:
docker-compose.yml
grafana-datasources.yaml
promtail-config.yaml🚀 三、启动服务
3.1 启动所有容器
在 D:\dockerData\loki-stack\ 目录下执行:
docker-compose up -d
-d表示后台运行(detach 模式)
3.2 查看启动状态
docker-compose ps预期输出:
NAME IMAGE STATUS
grafana grafana/grafana:latest Up About a minute
loki grafana/loki:latest Up About a minute
promtail grafana/promtail:latest Up About a minute3.3 验证各服务是否正常
| 服务 | 检查地址 | 预期结果 |
|---|---|---|
| Loki | http://localhost:3100/ready | 返回 ready |
| Grafana | http://localhost:3000 | 显示登录页面 |
🔍 四、查看日志
4.1 通过 Grafana Web 界面
浏览器访问:
http://localhost:3000登录:
- 用户名:
admin - 密码:
admin - 首次登录可点击 Skip 跳过修改密码
- 用户名:
左侧菜单点击 Explore(🧭 探索)
左上角确认数据源已自动选择为 Loki
查询框输入:
text{job="varlogs"}点击右上角 Run query 或按
Shift + Enter在时间范围选择器中选择 Last 1 hour 或 Last 6 hours
4.2 通过命令行查看容器日志
# 查看 Loki 日志
docker logs loki
# 查看 Promtail 日志
docker logs promtail
# 查看 Grafana 日志
docker logs grafana4.3 通过 Loki API 查询(可选)
curl -G 'http://localhost:3100/loki/api/v1/query_range' `
--data-urlencode 'query={job="varlogs"}' `
--data-urlencode 'limit=10'🛠️ 五、常用管理命令
| 操作 | 命令 |
|---|---|
| 启动所有服务 | docker-compose up -d |
| 停止所有服务 | docker-compose down |
| 重启所有服务 | docker-compose restart |
| 重启单个服务 | docker-compose restart grafana |
| 查看服务状态 | docker-compose ps |
| 查看实时日志 | docker-compose logs -f |
| 停止并删除数据卷 | docker-compose down -v |
🐛 六、常见问题排查
Q1:Grafana 无法访问 http://localhost:3000
检查方法:
docker logs grafana常见原因与解决:
- 端口被占用:修改
docker-compose.yml中端口映射"3001:3000",然后访问http://localhost:3001 - 配置文件缺失:确认
grafana-datasources.yaml文件存在且不是文件夹
Q2:Loki 数据源连接失败(红色报错)
检查方法:
# 测试 Loki 是否正常
curl http://localhost:3100/ready常见原因:
- Loki 容器未启动:
docker restart loki - 网络问题:重新部署
docker-compose down && docker-compose up -d
Q3:查询不到任何日志
检查方法:
# 查看 Promtail 是否在采集日志
docker logs promtail --tail 20可能原因:
/var/log目录下没有日志文件(容器内系统日志较少)- 时间范围选择不对,尝试选择 Last 6 hours 或 Last 24 hours
- 查询语句错误,先用
{}查询所有日志测试
Q4:容器启动后马上退出
# 查看退出原因
docker logs <容器名>常见于配置文件格式错误或挂载路径问题,检查 yaml 文件的缩进和路径。
📚 七、文件清单总览
D:\dockerData\loki-stack\
├── docker-compose.yml # 主编排文件
├── promtail-config.yaml # Promtail 采集配置
└── grafana-datasources.yaml # Grafana 数据源自动配置✅ 八、验证清单
部署完成后,逐项确认:
□
http://localhost:3100/ready返回ready□
http://localhost:3000能打开 Grafana 登录页□
登录后 Explore 中能选到 Loki 数据源
□
执行
{job="varlogs"}能返回日志条目(哪怕只有几条)
全部打钩 ✅ 说明你的 Loki 日志系统已经部署成功了!
💬 九、下一步建议
- 学习 LogQL 查询语法,更灵活地检索日志
- 配置采集 Windows 本地应用程序日志(Event Log)
- 配置 Grafana Dashboard 做日志监控面板
- 生产环境部署时,将 Loki 数据存储到 S3 或 MinIO
📝 文档版本:1.0 📅 更新日期:2026-09-09 🖥️ 测试环境:Windows 11 + Docker Desktop 4.24+