尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

loki收集容器日志

loki收集容器日志
📅 发布时间:2026/6/19 4:20:39

Loki介绍

Loki 是 Grafana Labs 开源的日志聚合系统,常被称为 “日志界的 Prometheus”。它的设计理念是只索引元数据,不索引完整日志内容,结合 Promtail 和 Grafana,就能实现高效的日志采集、存储与可视化。与传统的 ELK(Elasticsearch + Logstash + Kibana)方案相比,Loki 部署更轻量、存储成本更低,对资源要求小,非常适合与容器和 Kubernetes 环境结合使用。同时,Loki 在查询时依赖标签(labels)过滤,再结合 Grafana 强大的可视化能力,让日志分析更直观灵活。

部署步骤

部署目录

root@test-midware-0001:/data/grafana# ls -l
total 12
-rw-r--r-- 1 root root 1614 Sep 23 15:45 docker-compose.yaml
-rw-r--r-- 1 root root  424 Sep 23 15:37 loki-config.yaml
-rw-r--r-- 1 root root 1508 Sep 23 15:53 promtail-config.yaml
drwxr-xr-x 2 root root    6 Sep 28 16:02 promtail-data

 

本次采用docker-compose的方式部署loki及其相关的组件。以下是详细的docker-compose.yaml文件内容:

version: '3.8'services:loki:image: grafana/loki:2.9.8container_name: lokiports:- "32100:3100"volumes:- ./loki-config.yaml:/etc/loki/local-config.yaml:ro    # 配置挂载- loki_data:/loki                                      # 存储日志/chunks/index 数据- /etc/localtime:/etc/localtime:ro- /etc/timezone:/etc/timezone:rocommand: -config.file=/etc/loki/local-config.yamlrestart: unless-stoppednetworks:- grafana-netpromtail:image: grafana/promtail:2.9.8  # 最近 stable 的带安全补丁版本container_name: promtaildepends_on:- lokicommand: -config.file=/etc/promtail/config.yaml -log.level=infovolumes:- /var/run/docker.sock:/var/run/docker.sock:ro               # promtail需要使用docker API- /data/docker/containers:/var/lib/docker/containers:ro      # 日志目录挂载- ./promtail-config.yaml:/etc/promtail/config.yaml:ro        # 配置文件挂载
      - ./promtail-data:/tmp                                       # 临时文件挂载,记录日志位置- /etc/localtime:/etc/localtime:ro                           # 时区- /etc/timezone:/etc/timezone:rouser: rootrestart: unless-stoppednetworks:- grafana-netgrafana:image: grafana/grafanacontainer_name: grafanadepends_on:- loki- promtailenvironment:- GF_SECURITY_ADMIN_PASSWORD=*******  #这里设置自己的密码 - GF_AUTH_ANONYMOUS_ENABLED=false# 其他环境变量配置你自己的需求ports:- "23100:3000"volumes:- grafana_data:/var/lib/grafana- /etc/localtime:/etc/localtime:ro- /etc/timezone:/etc/timezone:rorestart: unless-stoppednetworks:- grafana-netvolumes:loki_data:grafana_data:networks:grafana-net:external: true

 这里有一个需要注意的点是,容器网络需要提前创建好

$ docker network create grafana-net

上面的docker-compose.yaml中有三个容器,分别是grafana,日志展示的UI。Loki日志存储服务端和promtail日志收集端。后面两个需要挂载配置文件,这也得提前编辑好。

root@test-midware-0001:/data/grafana# cat loki-config.yaml
auth_enabled: falseserver:http_listen_port: 3100common:path_prefix: /lokistorage:filesystem:chunks_directory: /loki/chunksrules_directory: /loki/rulesreplication_factor: 1ring:kvstore:store: inmemoryschema_config:configs:- from: 2020-10-24store: tsdbobject_store: filesystemschema: v13index:prefix: index_period: 24h
root@test-midware-0001:/data/grafana# cat promtail-config.yaml 
server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yamlclients:- url: http://loki:3100/loki/api/v1/push

scrape_configs:# -------------------------------# 1. Docker 容器日志# -------------------------------- job_name: docker-logsdocker_sd_configs:- host: unix:///var/run/docker.sock
        refresh_interval: 5srelabel_configs:# 容器名称(去掉开头的 /)- source_labels: [__meta_docker_container_name]target_label: container_nameregex: '/(.*)'replacement: '$1'# 给特定容器(比如名字里包含 ls-device)加标签 project_name=ls-device- source_labels: [__meta_docker_container_name]regex: .*ls-device.*target_label: project_namereplacement: ls-device# 容器 ID- source_labels: [__meta_docker_container_id]target_label: container_id# 镜像名称- source_labels: [__meta_docker_image]target_label: image# 日志路径- source_labels: [__meta_docker_container_id]target_label: __path__replacement: /var/lib/docker/containers/$1/*.logpipeline_stages:# 解析 Docker json-file 日志格式- docker: {}# 将日志的 time 字段作为 timestamp- timestamp:source: timeformat: RFC3339Nano# 丢弃超过 7 天的旧日志- drop:older_than: 168h  

启动容器

docker-compose up -d 

登录grafana

配置Loki数据源,并保存。

image

 再次点击探索就可以查看到我们添加的Loki数据源了

image

 我们可以点击标签过滤,按容器名或者项目名来查找特定的日志。

 

相关新闻

  • 完整教程:dlib库关键点定位和疲劳检测
  • VKD233HH触控IC有两种输出方式“直接输出”和“锁存输出”单路触摸检测芯片
  • C# Avalonia 15- Animation- CachingTest

最新新闻

  • 5步掌握FitGirl游戏启动器:高效管理压缩游戏的终极工具
  • 2026年西安评价高的玻璃门生产厂家哪家强 - 品牌鉴赏官2026
  • 江门报名 CPPM 注册采购经理哪家靠谱?机构选择避坑指南 - 众智商学院课程中心
  • 如何在OBS直播中添加实时语音识别字幕:免费开源插件终极指南
  • 如何快速掌握跨设备控制:终极多平台键鼠共享方案
  • 2026年台州市PMP培训机构哪家好?官方授权R.E.P.报考指南 - 众智商学院课程中心

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号