Loki+Grafana+Promtail 一站式日志解决方案
·

Loki + Grafana + Promtail 日志查看
单机 Docker 日志栈:按项目采集、按级别筛选、网页检索。当前仓库仅保留改进版配置。
| 组件 | 作用 |
|---|---|
| Promtail | 采集宿主机日志文件,推送到 Loki |
| Loki | 存储与检索(含 Compactor,保留策略真正生效) |
| Grafana | Web UI(已自动配置 Loki 数据源) |
github 地址:https://github.com/438083791/log-search/blob/master/loki-log/
一、目录结构
loki-log/
├── docker-compose.yml # 本机 Windows 开发用
├── loki-config.yaml
├── promtail-config.yaml
├── grafana/provisioning/...
├── .env / .env.example
二、部署前必改:Windows / Linux 路径
只改宿主机路径(冒号左边),容器内路径(右边)不要改。
1. docker-compose.yml → promtail.volumes
多项目公共根目录(约定:宿主机日志根/<项目名>/*.log):
| 系统 | 宿主机示例 | 容器内(勿改) |
|---|---|---|
| Windows | D:/app/logs |
/host/logs |
| Linux | /opt/app/logs |
/host/logs |
单项目示例 codoc-ai-service(日志文件直接在目录下):
| 系统 | 宿主机示例 | 容器内(勿改) |
|---|---|---|
| Windows | E:/work/log |
/host/codoc |
| Linux | /opt/log |
/host/codoc |
配置文件中已用注释标出两套写法:启用当前系统的那一行,注释掉另一行。
2. promtail-config.yaml
__path__ 全部是容器内路径,与上面挂载的右边一致,一般 Win/Linux 相同,无需按系统改写。
新增“日志直接在某目录下”的项目时:
- 在
docker-compose.yml增加一条 volume(写好 Win/Linux 注释) - 在
promtail-config.yaml复制codoc-ai-service那段 job,改job_name/project/__path__ docker compose up -d --force-recreate promtail
3. 其余文件
| 文件 | 是否按 OS 修改 |
|---|---|
loki-config.yaml |
否(容器内路径) |
| Grafana provisioning | 否 |
.env |
改密码即可,与 OS 无关 |
4. Windows 额外注意
- Docker Desktop → Settings → Resources → File sharing:放行日志所在盘符(如
D:、E:) - 挂载写法用正斜杠:
D:/app/logs,不要用D:\app\logs
三、启动与访问
cd loki-log
cp .env.example .env # 首次:编辑密码
docker compose --env-file .env up -d
| 服务 | 地址 |
|---|---|
| Grafana | http://服务器IP:3000 |
| Loki API | http://服务器IP:3100 |
账号密码见 .env(GF_SECURITY_ADMIN_USER / GF_SECURITY_ADMIN_PASSWORD)。
数据源已自动配置,无需在 UI 里再手工添加 Loki。
查看状态:
docker compose ps
docker logs loki --tail 50
docker logs promtail --tail 50
四、Grafana 查日志
- 左侧 Explore → 数据源选 Loki
- Label filters 常用:
project:项目名(如demo1、codoc-ai-service)level:ERROR/INFO/DEBUG/WARN…filename:指定某个日志文件
- 也可用 LogQL,例如:
{project="codoc-ai-service", level="ERROR"}
{project="codoc-ai-service", filename="/host/codoc-ai-service/api_2026-07-10.log"}
{project="codoc-ai-service"} |= "timeout"
- 右上角可开自动刷新;新写入日志一般数秒内可见。
主题:左下角头像 → Profile → Theme;默认已设浅色(GF_USERS_DEFAULT_THEME=light)。
五、常用运维
改挂载路径 / 新增项目后
docker compose --env-file .env up -d --force-recreate promtail
改日志保留时长
编辑 loki-config.yaml 中 limits_config.retention_period(如 168h = 7 天),然后:
docker compose restart loki
须已启用 Compactor(当前配置已开启),否则保留不会真正删数据。
停止 / 清空
docker compose down # 停服务,保留 volume
docker compose down -v # 连同 Loki/Grafana 数据一并删除(谨慎)
六、Linux 部署检查清单
- 安装 Docker + Docker Compose 插件
- 把本目录拷到服务器(如
/opt/loki-log) - 改
docker-compose.yml:注释 Windows 挂载,启用 Linux 挂载,路径改成实际日志目录 cp .env.example .env并设置强密码- 确认宿主机日志目录存在且 Docker 可读
docker compose --env-file .env up -d- 防火墙放行
3000(建议仅内网或前面加反向代理 + HTTPS) - 浏览器打开 Grafana → Explore → 确认有
project标签
七、能力与局限
优点: 一键 Docker、比 ELK 轻、按项目/级别/文件筛选、近实时 tail。
局限: 超大规模 TB 检索、复杂聚合弱于 ES/ClickHouse;适合查阅与关键词搜索。
八、配置要点(改进版相对旧方案)
- Loki 开启 Compactor,
retention_period真正生效 - Grafana Provisioning 自动数据源
- Promtail:子目录自动
project;正文提取level;positions 落 volume - healthcheck +
depends_on,避免 Loki 未就绪就起依赖服务 - 密码走
.env,默认浅色主题
更多推荐




所有评论(0)