ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

grafana loki alloy轻量级日志采集

grafana loki alloy轻量级日志采集

grafana loki alloy 部署轻量级日志采集部署

我的方案如下

  • grafana docker部署版本 11.1.0
  • loki docker部署版本 3.7.4
  • alloy 实体机命令行启动推送给loki 直接下载最新版

loki.yaml 配置文件

# 第1行:禁用多租户认证。false 表示单租户模式,所有日志属于默认租户,无需在请求中携带租户ID。auth_enabled:false# 第2-5行:HTTP 服务器配置server:http_listen_port:3100# Loki 服务监听的 HTTP 端口,用于接收日志推送和查询请求# 第6-12行:通用配置,用于多个内部组件(如 ingester、querier)共享common:ring:# 分布式一致性哈希环,用于服务发现和故障转移instance_addr:127.0.0.1# 本实例的地址,单机模式用 127.0.0.1kvstore:store:inmemory# 环的状态存储方式,inmemory 表示存在内存中(单机适用)replication_factor:1# 数据副本数,单节点设为 1 即可path_prefix:/loki# 所有数据文件(索引、块)的根目录,容器内路径# 第13-21行:存储模式(Schema)配置,定义索引和块(chunk)的存储方式schema_config:configs:-from:2020-05-15# 从此日期开始应用该 schema,可以用于 schema 升级store:tsdb# 索引存储引擎,tsdb 是 Loki 最新推荐的生产级存储object_store:filesystem# 块数据存储方式,filesystem 表示本地文件系统schema:v13# Loki 内部存储模式的版本号,当前推荐 v13index:prefix:index_# 索引表名前缀,实际表名会按天追加日期period:24h# 索引表按天(24小时)分割,便于过期清理# 第22-25行:存储后端详细配置storage_config:filesystem:directory:/loki/chunks# 块数据存储的具体目录(在 path_prefix 下)# 第26-29行:表管理(用于索引表的生命周期)table_manager:retention_deletes_enabled:true# 开启过期删除功能,必须设为 true 否则数据不会自动清理retention_period:1440h# 数据保留时长:1440 小时 = 60 天(符合你的需求)

docker启动loki 这里挂载了2个文件夹目录一定要给权限

# 配置文件放在config_loki下chmod777/home/docker_data/loki/config_lokichmod777/home/docker_data/loki/data_lokidockerrun-d--nameloki--restartalways--memory2g --memory-swap 2g-p3100:3100-v /home/docker_data/loki/config_loki:/etc/loki-v/home/docker_data/loki/data_loki:/loki grafana/loki:3.7.4-config.file=/etc/loki/loki.yaml

grafana启动

#挂载数据chmod777/home/docker_data/loki/data_grafanadockerrun-d--namegrafana--restartalways--memory=1G --memory-swap=1G-p3000:3000-v/home//docker_data/loki/data_grafana:/var/lib/grafana grafana/grafana:11.1.0

config.alloy 配置文件

logging{level = "info"}// ================================================================ // 1. 日志采集:使用一个组件采集多个服务(通过多个 targets) // positions_file 统一管理,避免每个服务单独维护 // ================================================================ loki.source.file "logs"{file_match{enabled = true}targets =[{__path__ = "/home/java/Aservice/logs/*.log",service = "Aservice"},{__path__ = "/home/java/Bservice/logs/*.log",service = "Bservice"},{__path__ = "/home/java/Cservice/logs/*.log",service = "Cservice"},]forward_to =[loki.process.log_pipeline.receiver]}// ================================================================ // 2. 日志处理流水线 // ================================================================ loki.process "log_pipeline"{forward_to =[loki.write.loki_server.receiver]// 静态标签(全局固定) stage.static_labels{values ={env = "production",source = "alloy",}}// 从 targets 中已有的 service 标签传递到最终日志 // 注意:loki.source.file 的每个 target 中可以自定义标签 // 这里不需要额外正则提取,直接用 stage.labels 透传 stage.labels{values ={service = "",}}}// ================================================================ // 3. 推送至 Loki // ================================================================ loki.write "loki_server"{endpoint{url = "http://目标机器loki:3100/loki/api/v1/push" batch_wait = "2s"}}

alloy 启动命令

nohup./alloy-linux-amd64 run--storage.path=/home/loki/data-alloy ./config.alloy>alloy.log2>&1&

添加数据源

http://grafanaIp:3000 默认用户名密码 admin/admin



查询日志

返回列表