用Docker快速搭建Grafana Loki日志系统实战

Grafana Loki 是一套轻量级日志聚合系统,和 Grafana 配合使用,可以像查指标一样查日志。
如果你想在单台服务器上快速看到日志效果,用 Docker Compose 部署是最省事的方式。
本文按零基础路径,从准备环境到采集 Nginx 日志、再到查询验证,一步步执行即可。

准备条件与部署前确认

先确认服务器已安装 Docker 和 Docker Compose,并放行后续需要访问的端口。
建议使用一台 Linux 服务器,内存不低于 2GB,磁盘预留 20GB 以上,因为日志会持续写入。

执行以下命令检查环境:

docker -v
docker compose version

如果 docker compose version 报错,说明 Compose 插件未安装,需要先补装。
确认无误后,创建部署目录:

mkdir -p /opt/loki-demo && cd /opt/loki-demo

编写 Loki 与 Grafana 的 Compose 配置

Loki 需要一份配置文件,定义监听地址和存储路径。
先写 loki-config.yaml:

auth_enabled: false
server:
  http_listen_port: 3100
common:
  path_prefix: /loki
  storage:
    filesystem:
      chunks_directory: /loki/chunks
      rules_directory: /loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory
schema_config:
  configs:
    - from: 2024-01-01
      store: tsdb
      object_store: filesystem
      schema: v13
      index:
        prefix: index_
        period: 24h

再写 docker-compose.yml,把 Loki 和 Grafana 放到同一网络:

services:
  loki:
    image: grafana/loki:latest
    container_name: loki
    ports:
      - "3100:3100"
    volumes:
      - ./loki-config.yaml:/etc/loki/local-config.yaml
      - ./loki-data:/loki
    command: -config.file=/etc/loki/local-config.yaml
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin123
    depends_on:
      - loki

启动服务:

docker compose up -d
docker compose ps

两个容器状态为 running 即表示启动成功。
浏览器访问 http://服务器IP:3000,默认用户名 admin,密码为上面配置的 admin123。

在 Grafana 中添加 Loki 数据源

登录后进入左侧菜单,点击 Connections,搜索 Loki,选择 Add new data source。
在 Connection 一栏填写 http://loki:3100,因为两个容器在同一 Compose 网络内,用服务名即可互通。
点击 Save & test,出现成功提示说明数据源已通。

如果这一步报错,先检查 Loki 容器日志:

docker logs loki --tail 50

常见原因是配置文件路径写错或端口被占用,按日志提示修正后重启即可。

采集 Nginx 日志并查询验证

Loki 本身不采集日志,需要配合 Promtail 或 Alloy 把日志推送给它。
这里用 Promtail 采集本机 Nginx 的 access.log。
先在 docker-compose.yml 中追加一个服务:

  promtail:
    image: grafana/promtail:latest
    container_name: promtail
    volumes:
      - /var/log/nginx:/var/log/nginx:ro
      - ./promtail-config.yaml:/etc/promtail/config.yaml
    command: -config.file=/etc/promtail/config.yaml
    depends_on:
      - loki

再写 promtail-config.yaml:

server:
  http_listen_port: 9080
positions:
  filename: /tmp/positions.yaml
clients:
  - url: http://loki:3100/loki/api/v1/push
scrape_configs:
  - job_name: nginx
    static_configs:
      - targets:
          - localhost
        labels:
          job: nginx
          __path__: /var/log/nginx/*.log

重新启动:

docker compose up -d

访问一次你的 Nginx 站点产生新日志,然后在 Grafana 中进入 Explore,数据源选 Loki,查询框输入:

{job="nginx"}

点击 Run query,能看到日志行即表示采集链路正常。
想按关键字过滤,可以写成:

{job="nginx"} |= "404"

容易踩的坑和排查顺序

权限问题:Promtail 读取 /var/log/nginx 时可能因为容器内用户权限不足而读不到文件,表现为查询无结果。
可以先确认宿主机上该目录是否对运行容器的用户可读,必要时调整目录权限或改用 root 运行做验证,生产环境再收紧。

时间不同步:Loki 按时间戳存储日志,服务器时间偏差过大时,Grafana 里可能查不到刚产生的日志。
执行 date 确认时间,必要时同步系统时间。

标签基数过高:不要把请求 ID、用户 IP 这类高基数字段放进标签,否则会拖慢查询并占用大量内存。
需要筛选时用 LogQL 过滤表达式,而不是做成标签。

数据盘写满:Loki 默认不自动清理旧日志,长期运行要配置保留周期或定期清理 loki-data 目录,避免磁盘被写满导致服务异常。

验证与后续调整

完成以上步骤后,用三个动作确认整套系统可用:一是 docker compose ps 三个容器都在运行;
二是在 Grafana Explore 中用 {job="nginx"} 能查到实时日志;
三是用 |= 关键字过滤能缩小结果范围。

单机小规模场景下,这套 Docker 方案足够跑通 Grafana Loki 实战流程。
后续如果日志量增大,可以再考虑接入对象存储、增加副本或拆分读写组件,但不必一开始就上复杂架构。

常见疑问

Loki 和 Elasticsearch 有什么区别? Loki 只对标签建索引,日志正文不建全文索引,因此资源占用更低,适合按标签快速定位;
需要复杂全文检索时 Elasticsearch 更合适。

必须用 Promtail 采集吗? 不是。
Grafana 生态里也可以用 Alloy,或通过 HTTP 接口直接推送日志,选择取决于你的采集环境和维护习惯。

Grafana 打不开怎么查? 先执行 docker logs grafana --tail 50 看启动日志,再确认 3000 端口是否被占用或防火墙是否放行。

分享到:
上一篇
Loki日志收集配置:从零搭建Promtail采集与查询链路
下一篇
监控告警接入企业微信:群机器人 Webhook 配置与排错
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意