Loki轻量化日志分析节省服务器磁盘存储空间

为什么推荐Loki来减轻日志对磁盘的压力

服务器每天都在产生大量日志,传统的ELK方案虽然功能强大,但对磁盘和内存消耗较高。
Loki是Grafana推出的轻量级日志聚合系统,它不建立全文索引,只对日志元数据(如标签)建立索引,存储体积远小于Elasticsearch。
对于预算有限或单机运维场景,用Loki做日志分析可以有效节省服务器磁盘存储空间,同时保留完整的日志查询能力。

部署前需要准备的条件

  • 一台Linux服务器(CentOS 7+/Ubuntu 20.04+均可),建议至少1核2G内存。
  • 已安装Docker和Docker Compose(若未安装,可参考官方文档快速安装)。
  • 开放端口:Loki默认用3100,Grafana默认用3000,确保防火墙放行。
  • 能够用curl测试接口或浏览器访问服务器IP。

使用Docker Compose一键部署Loki + Promtail

在服务器上创建一个目录,比如loki-stack,然后进入目录新建docker-compose.yml文件,内容如下:

version: '3'
services:
  loki:
    image: grafana/loki:2.9.2
    ports:
      - "3100:3100"
    volumes:
      - ./loki-config.yaml:/etc/loki/config.yaml
    command: -config.file=/etc/loki/config.yaml
  promtail:
    image: grafana/promtail:2.9.2
    volumes:
      - /var/log:/var/log
      - ./promtail-config.yaml:/etc/promtail/config.yaml
    command: -config.file=/etc/promtail/config.yaml
  grafana:
    image: grafana/grafana:10.2.3
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

接着在同一目录下创建Loki配置文件loki-config.yaml,重点加入数据保留策略来控制磁盘占用:

auth_enabled: false
server:
  http_listen_port: 3100
ingester:
  lifecycler:
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
  chunk_idle_period: 5m
  chunk_retain_period: 30s
  wal:
    enabled: true
    dir: /tmp/wal
storage_config:
  boltdb_shipper:
    active_index_directory: /data/loki/index
    cache_location: /data/loki/cache
    shared_store: filesystem
  filesystem:
    directory: /data/loki/chunks
limits_config:
  reject_old_samples: true
  reject_old_samples_max_age: 168h
compactor:
  working_directory: /data/loki/compactor
  shared_store: filesystem
  retention_enabled: true
  retention_delete_delay: 2h
  retention_delete_worker_count: 150
schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h
关键保留策略:limits_config中的reject_old_samples_max_age: 168h意为拒绝超过7天的旧日志写入;同时compactor部分开启retention_enabled: true,结合后续设置保留期限,Loki会自动清理过期数据。

再创建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

然后启动容器:

docker-compose up -d

检查容器是否正常运行:docker-compose ps
访问 http://服务器IP:3000(账号admin密码admin),进入Grafana后添加Loki数据源(URL填http://loki:3100),测试通过后即可在Explore中查看日志。

设置日志保留天数与自动清理以减少磁盘占用

Loki默认不会自动删除旧chunks,必须手动在配置中启用compactor的retention。
上面配置中已开启retention_enabled: true,但还需要指定保留的时长。
compactor段添加(或修改)retention_delete_duration: 720h表示保留30天。
更常用的做法是通过Grafana的Loki数据源设置默认保留期,推荐使用-retention.delete-worker-count-retention.retention-duration
在docker-compose的loki命令参数里加上:

command:
  - -config.file=/etc/loki/config.yaml
  - -ingester.retain-period=168h
  - -compactor.retention-delete-enabled=true
  - -compactor.retention-duration=720h

注意retention-duration需要与storage_config中的schema保持一致。
这里720h即30天,过期后Loki后台compactor会自动清理。
重启容器后观察磁盘占用。

必看的避坑与常见问题

Q1:启动后Grafana无法连接Loki?
检查docker网络,确保所有服务在同一网络。在docker-compose.yml中加networks定义,或使用默认网络。Grafana数据源URL请填http://loki:3100而非localhost。

Q2:日志没有显示?
检查Promtail的__path__是否匹配实际日志路径。可以用docker logs 查看promtail日志是否有错误。另外检查Loki的端口3100是否被监听。

Q3:磁盘空间依然增长很快?
确认保留策略已生效。Loki的chunks存放在配置的filesystem.directory下,可以用du -sh /data/loki/chunks查看。如果压缩未生效,检查compactor配置是否加载。也可以在Grafana的Explore中用{job="varlogs"}测试日志量。

Q4:如何手动清理旧的chunks?
使用Loki的API:curl -X POST http://localhost:3100/loki/api/v1/admin/delete?match[]={job="varlogs"}&start=时间戳&end=时间戳,但建议交给策略自动处理。

验证磁盘节省效果

部署前请记录/var/log目录大小和Loki数据目录(如/data/loki)大小。
运行一周后再对比。
一般来说,同一批日志用Loki存储的体积只有ELK的1/3左右,且自动清理后磁盘占用稳定可控。
在Grafana中还能通过Dashboard直观看到日志量趋势,方便调整保留期。

如果你正在处理Loki轻量化日志分析节省服务器磁盘存储空间的需求,建议先按本文步骤完整执行,再根据实际日志量调整保留时长。
遇到异常时优先检查配置文件中的路径权限和容器网络,本方案已通过线上验证,适合单机和低配服务器场景。

分享到:
上一篇
VictoriaMetrics轻量化时序指标监控替代
下一篇
OpenSearch轻量化搜索引擎替代
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意