Loki分布式存储及过期策略实现

在项目启动初期,考虑到 ELK 的资源消耗较重,我们选用了更为轻量的 Loki 作为分布式日志存储方案。默认设置下,Loki 并未启用日志过期策略,这意味着数据会持续累积而不会被删除。若采用本地存储方式,磁盘空间将极易被占满。Loki 支持使用 filesystem 本地文件系统进行存储,也可对接第三方对象存储服务,如亚马逊 S3、谷歌 GCS 以及阿里云 OSS 等。本文将仅针对使用 filesystem 存储时的过期策略配置。

Loki Memberlist - Ring 采用类似 Gossip 协议的去中心化集群状态管理机制,用以替代 Consul 或 etcd 这类传统的 KV 存储,实现服务发现与组件状态同步。这一特性很适合中小型企业在日志存储方面的需求 。

loki配置说明(基于v2.9.1):

auth_enabled: false

server:
  http_listen_port: 3100
  # 用于组件间通信
  grpc_listen_port: 9096

common:
  # 是当前节点的IP地址,确保集群通信正确 ,这里如果设置成127.0.0.1可能会有问题
  instance_addr: 172.31.0.10
  path_prefix: /tmp/loki
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    kvstore:
      # 基于 gossip 协议的kv存储
      store: memberlist
memberlist:
  join_members:
    - 172.31.0.10:7946
    - 172.31.0.11:7946 

query_range:
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

#table_manager:
#  retention_deletes_enabled: true
#  retention_period: 48h
limits_config:
  # 数据保留周期
  retention_period: 6480h

compactor:
  working_directory: /tmp/loki/retention
  compaction_interval: 30m
  retention_enabled: true
  retention_delete_delay: 1h
  retention_delete_worker_count: 150

ruler:
  alertmanager_url: http://localhost:9093

一开始开启了table_manager,发现没有生效,后面开启compactor才生效,具体原因没有深究。

最后,访问 http://172.31.0.10:3100/ring 可以看到返回的两个节点示例。现在配置任意一个节点,另外一个节点都可以访问到数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值