Docker部署loki:Docker部署Loki日志系统

用Docker部署Loki,快速搭建轻量日志系统

日常运维中日志集中管理是刚需,但ELK太重量级。
Loki是Grafana出品的日志系统,不全文索引,只压缩并打标签,查询时用标签+时间范围过滤,比ELK省资源。
配合Promtail采集日志、Grafana展示,三件套全跑在Docker里,一台1核2G的小鸡就能跑。
下面按步骤来。

你需要准备什么

  • 一台Linux服务器(CentOS 7+ / Ubuntu 20.04+),已安装Dockerdocker-compose。没装docker的参考:
  curl -fsSL https://get.docker.com | sh
  sudo systemctl enable --now docker
  • 至少 2GB 可用磁盘(用于存储Loki的日志块)
  • 域名或IP(用于访问Grafana,非必须)

编写docker-compose.yml,一键部署Loki + Promtail + Grafana

在服务器上新建目录,比如 /opt/loki-stack,创建 docker-compose.yml

version: '3'

services:
  loki:
    image: grafana/loki:2.9.0
    container_name: loki
    ports:
      - "3100:3100"
    volumes:
      - ./loki-data:/loki
    command: -config.file=/etc/loki/loki-config.yaml
    restart: unless-stopped

  promtail:
    image: grafana/promtail:2.9.0
    container_name: promtail
    volumes:
      - /var/log:/var/log:ro
      - ./promtail-config.yaml:/etc/promtail/promtail-config.yaml
    command: -config.file=/etc/promtail/promtail-config.yaml
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - ./grafana-data:/var/lib/grafana
    restart: unless-stopped

然后创建 Loki 配置文件 loki-local-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: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

再创建 Promtail 配置文件 promtail-config.yaml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/*.log

启动服务并绑定Grafana数据源

docker-compose.yml 所在目录执行:

docker-compose up -d

等1-2分钟,检查所有容器是否Running:

docker ps

访问 http://服务器IP:3000 进入Grafana(默认账号admin/admin,第一次强制改密码)。

添加Loki数据源:

  1. 左侧齿轮 → Data Sources → Add data source
  2. 选择 Loki
  3. URL填 http://loki:3100(因为Grafana和Loki在同一个Docker网络)
  4. 点击 Save & Test,提示成功即可。

常见踩坑与解决办法

  • 端口冲突:如果服务器已有服务占用3000或3100端口,在docker-compose.yml里改映射端口,比如 "3001:3000",Grafana访问地址也跟着改。
  • Promtail抓不到日志:检查挂载卷 /var/log:/var/log:ro 是否正确,以及Promtail容器是否有读权限。可以用 docker logs promtail 查看报错。
  • Loki写大量日志导致磁盘爆满:Loki默认不自动删除。建议在 loki-local-config.yaml 中加上 retention: trueretention_duration: 720h(30天),需要配合 delete_worker_count 等参数,新手可先不管,数据量大时手动清理 loki-data 目录。
  • Grafana查不到日志:确认数据源URL写的是 http://loki:3100 不是IP;再到Explore页面输入 {job="varlogs"} 查询,如果还是空,等几分钟让Promtail推送。

验证日志查询是否正常

在Grafana左侧菜单点击 Explore,Label filters选择 jobvarlogs,然后点击 Run query
如果能出现日志行,说明Docker部署Loki成功。
你还可以手动写一条测试日志:

echo "test log entry $(date)" >> /var/log/syslog

等一会儿就能在Explore里搜到这条。

如果你打算长期使用,建议把挂载目录(loki-data、grafana-data)加入到定时快照,避免日志丢失。
遇到异常先看 docker-compose logs 定位错误,再结合上面的踩坑点排查。

以上就是从零到一用Docker部署Loki日志系统的全过程,跟着步骤走基本不会有问题。
如果还有疑问,欢迎留言交流。

分享到:
上一篇
手把手教你写一个Linux服务器进程监控脚本
下一篇
宝塔面板PHP内存限制设置教程:从查看到修改
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意