loki收集容器日志

news/2025/9/28 16:21:13/文章来源:https://www.cnblogs.com/ggborn-001/p/19117012

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xcode 火焰图

Xcode - > open developer tool -> time profile -> target -> protile 如果没有符号化,多试几次 判断力是一个人最重要的能力

完整教程:Nginx反向代理与缓存功能

完整教程:Nginx反向代理与缓存功能2025-09-28 16:18 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

完整教程:dlib库关键点定位和疲劳检测

完整教程:dlib库关键点定位和疲劳检测pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

网站改版对优化的影响福建省住房和城乡建设厅的网站

MySQL大事务可能会导致过多的占用临时文件,导致磁盘空间撑满的问题 本例说明下binlog cache产生的临时文件 案例复现 调小binlog_cache_size,让DML使用临时文件 使用存储过程模拟大事务 创建表 create table t1( id int AUTO_INCREMENT, name varchar…

2025 长沙美食餐厅权威推荐排行榜:老店红记领衔新晋品牌,200 + 湘味与网红菜品深度解析,吃货必藏指南长沙美食湘菜馆 /大排档/网红店餐厅推荐

长沙餐饮市场在 “网红经济” 与 “传统坚守” 的碰撞中持续升温,却也暗藏选择困境:部分老店虽有口碑但创新不足,新兴品牌中不乏跟风炒作、食材劣质的 “短命网红”,更有商家混用预制菜、忽视食品安全,让消费者难…

千图app的下载方式搜索引擎优化推广

文章目录 1. python图形界面开发1.1. Python图形界面开发——Tkinter1.2. Python图形界面开发——PyQt1.3. Python图形界面开发——wxPython1.4. Python图形界面开发—— PyGTK:基于GTK1.5. Python图形界面开发—— Kivy1.6. Python图形界面开发——可视化工具1.7. …

长春网站制作教程app商城系统

转载自 Spring Boot国际化支持本章将讲解如何在Spring Boot和Thymeleaf中做页面模板国际化的支持,根据系统语言环境或者session中的语言来自动读取不同环境中的文字。 国际化自动配置 Spring Boot中已经对国际化这一块做了自动配置。 国际化自动配置类:o…

VKD233HH触控IC有两种输出方式“直接输出”和“锁存输出”单路触摸检测芯片

VKD233HH是单通道触摸检测芯片,功耗低、工作电压范围 宽以及稳定的触摸检测效果可以广泛的满足不同应用的需求, 此触摸检测芯片是专为取代传统按键而设计,内建稳压电路, 提供稳定电压给触摸检测电路使用,触摸检测PAD…

打包present, but unavailable

打包present, but unavailable;报错Failed to execute goal on project*: Could not resolve dependencies for project前言 本地打包一直失败,报错这 com.ctg.mq:ctg-mq-server:pom:2.7.7 (present, but unavailable…

2025 年最新推荐环保门禁厂家权威排行榜:清洁运输 / 智能 / 移动源系统及电子台账厂商详析企业/智能环保门禁厂家推荐

在 “双碳” 目标持续推进、环保监管标准不断升级的当下,企业对环保门禁系统的合规性与功能性要求愈发严苛。无论是重污染天气应急响应中的车辆管控,还是清洁运输占比统计、绩效评级数据上报,环保门禁系统已成为企业…

2025 年即时通讯公司推荐 小天互连:私有化部署即时通讯、信创即时通讯、国产化即时通讯、局域内网即时通讯、企业 IM 即时通讯解决方案解析

2025 年中国企业级即时通讯市场规模已突破 300 亿元,年增速维持 12% 的高速增长,政企用户对 IM 工具的需求从基础沟通升级为安全可控、业务集成、全栈适配的综合解决方案。在数据主权意识觉醒与信创战略深化的双重驱…

GJOI 模拟赛6、7部分题解

M6 T2 maze 根据题意,我们其实相当于从根节点向下走一颗满二叉树,每次有花费改变方向,然后操作的\(01\)序列不能超过限制。 首先可以将题目差分求解,就变成只有一个限制。 发现一个第 \(n\) 层的点最多遍历一次,那…

【C++list】底层结构、迭代器核心原理与常用接口完成全解析

【C++list】底层结构、迭代器核心原理与常用接口完成全解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

完整教程:Flink Watermark机制解析

完整教程:Flink Watermark机制解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

2025 年北京湖南菜餐厅推荐:小湖南岸以湖湘本味与匠心服务,成京城湘菜口碑之选

2025 年的北京餐饮市场呈现 “冰火两重天” 的格局:一边是同质化竞争加剧、成本高企导致部分品牌陷入经营困境,另一边是坚守品质与特色的餐饮品牌凭借精准定位实现逆势增长。作为全国美食汇聚地,北京的湘菜赛道尤为…

完整教程:龙芯在启动参数里添加串口信息

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

ABC425题解

A. Sigma Cubescode #include<bits/stdc++.h> using namespace std; int n; int main(){cin >> n;int ans = 0;for(int i = 1; i <= n; ++i){ans += ((i&1)?-1:1) * (i * i * i); }cout << …

技术分享 | Dify智能体案例分享:智能导诊助手 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

STM32中的Flash、ROM与RAM全解析 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …