云原生可观测-日志观测(Loki)最佳实践

一、Loki 简介

云原生可观测三大支柱

支柱工具用途
MetricsPrometheus性能趋势、系统负载
LogsLoki原始事件记录、错误诊断
TracesTempo / Jaeger分布式链路追踪

一、Loki 简介

1.1 Loki 是什么

Loki 是由 Grafana Labs 开发的 日志聚合系统,与 Prometheus 架构一致,主打“标签驱动(label-based)日志管理”,并与 Grafana 紧密集成。

1.2 Loki 的优势

  • 类似 Prometheus 的标签模型。

  • 不做全文索引,成本低。

  • 与 Promtail、Grafana 紧密协作。

  • 支持结构化日志查询与聚合分析。


二、Loki 架构与组件

2.1 架构示例

          +-------------+|   Grafana   | <---> LogQL 查询+------+------+            |                  +-----v-----+   +-----------------+|   Loki     |<--| Object Storage  |+-----+-----+   +-----------------+^+--------+--------+| Promtail / Fluentbit |+--------------------+

2.2 Loki 模块角色

组件说明
Promtail日志收集 Agent,自动附加 Kubernetes 标签
Loki存储、索引日志元数据,只索引 Labels
Grafana可视化查询,支持 Metrics + Logs 联动
Ruler告警规则引擎(LogQL-based alert)

 


三、日志采集与标签管理最佳实践

3.1 推荐采集方式

  • Kubernetes 场景推荐使用 Promtail DaemonSet,读取:

    /var/log/pods/<namespace>_<pod>/*.log

3.2 标签管理策略(重点 🔥)

建议标签选择的三原则

  • 低基数:如 namespace, app, pod, container

  • 稳定性:避免标签频繁变动,如动态 IP。

  • 唯一性避免:不要将 trace_id 作为标签!

配置示例(Promtail):

pipeline_stages:- docker: {}- labels:job: my-appenvironment: production

四、LogQL 查询实践

4.1 基础语法

{job="nginx"} |= "error"

  • {...}:标签过滤(必须)

  • |= "xxx":精确包含

  • |~ "xxx":正则匹配

  • !=, !~:负向过滤

4.2 聚合语法

count_over_time({job="api"} |= "timeout" [5m])

聚合函数列表:

函数说明
count_over_time日志数量统计
rate日志行的变化速率(类似 Prometheus)
avg_over_time提取数字后的平均值(结合 line_format
sum by (...)标签维度聚合

 


4.3 结构化日志解析

{app="svc"} | json | level="ERROR" and request_id!="null"

或者使用正则提取:

{app="svc"} |~ "(?P<status>\\d{3}) (?P<path>/api/[^ ]+)"


五、告警策略与 LogQL

Loki 支持通过 Ruler + Alertmanager 进行日志级别的告警设置。

5.1 规则示例(YAML)

groups:
- name: error-alertsrules:- alert: HighErrorRateexpr: |rate({app="nginx"} |= "error" [5m]) > 10for: 1mlabels:severity: criticalannotations:summary: "High error rate detected"

5.2 告警推荐实践

  • 告警表达式尽量使用 rate,避免瞬时波动。

  • 尽量避免基于高基数字段告警。


六、Grafana 可视化与联动

6.1 日志 → 指标 → Trace 的联动

  • 在日志行中提取 trace_id,实现与 tracing系统 的点击跳转。

  • 通过 Explore 标签页可按 TraceID 聚合多维度观测。

6.2 日志仪表板设计建议

面板类型示例内容
表格面板最近 N 条错误日志
时间序列图error 频次 
直方图各服务日志量分布
链接跳转指向 Trace 或外部监控平台

 


七、性能优化建议

7.1 采集优化

  • 控制 scrape_interval,避免 Promtail 频繁读取。

  • 开启 batchsize, batchwait 进行日志缓冲。

7.2 存储优化

  • 使用 MinIO / S3 存储 Chunk,减少本地磁盘压力。

  • 配置 retention 自动清理历史日志(如 7 天)。

7.3 查询优化

  • 控制查询时间窗口,避免 [1h] 级别的大窗口。

  • 使用 label_valuesmetric name 缩小搜索空间。


八、示例场景汇总(最佳实践)

场景查询语句
统计每分钟内 error 次数rate({app="web"}
查询最近 10 分钟内返回 500 的请求日志{status="500"}
提取 json 字段中 level=ERROR{app="svc"}
按 pod 维度聚合异常日志速率sum by(pod) (rate({app="api"}
trace_id 跳转{job="frontend"}

 


九、总结:Loki + LogQL 的可观测性价值

能力实现
低成本日志存储仅索引标签,不做全文索引
标签驱动的快速查询类似 Prometheus 的语法体验
与指标/链路天然融合与 Prometheus / skywarking等配合打造统一观测平台
结构化日志支持好支持 JSON/正则解析字段
易于扩展与高可用部署Helm + Shipper + ObjectStore 架构可弹性部署

 

资料:

LogQL: Log query language | Grafana Loki documentation

 

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

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

相关文章

Windows Server 2003 R2系统C盘扩容教程

一、PAGreen软件下载 下载地址&#xff1a; ExtPart.zip https://pan.baidu.com/s/1FxK61XNI0t-4JIEWK1QA8Q?pwd8888 提取码: 8888 二、将软件解压缩 (1)、执行步骤一下载的程序 双击下图所示可执行程序 (2)、选择好解压路径&#xff0c;点击「Unzip」进行解压缩 (3)、磁…

Kubernetes配置管理

目录什么是ConfigMap创建ConfigMap1&#xff1a;基于目录创建ConfigMap1.创建conf目录&#xff0c;放置文件2.基于目录下的所有文件创建ConfigMap3.查看当前创建的ConfigMap2&#xff1a;基于文件创建ConfigMap1.单个文件创建ConfigMap2.使用带有key的命令创建ConfigMap3.多个文…

golang怎么实现每秒100万个请求(QPS),相关系统架构设计详解

一.需求 使用Golang,以Gin框架为基础,设计一个能够处理每秒100万请求(QPS 1M)的系统架构 注意:100万QPS是一个很高的数字,单机通常难以处理,所以必须采用分布式架构,并且需要多层次的架构设计和优化 二.搭建步骤 1.系统架构设计 为了实现高并发,需要考虑以下几个方面…

HCIA再复习

第一章.网络基础1.1 网络类型分类网络按照二层链路类型分为以下四种&#xff1a;多点接入网络&#xff08;MA&#xff09;&#xff1a;1&#xff0c;广播型多点接入&#xff08;BMA&#xff09;&#xff1a;如以太网&#xff0c;支持广播&#xff0c;设备通过MAC地址通信&#…

Qt 数据库连接池实现与管理

在 Qt 应用程序中&#xff0c;频繁创建和销毁数据库连接会带来显著的性能开销。数据库连接池通过复用现有连接&#xff0c;避免重复创建和销毁连接的开销&#xff0c;从而提高应用程序的响应速度和吞吐量。本文将详细介绍 Qt 中数据库连接池的实现与管理方法。 一、数据库连接池…

数据采集分析:从信息洪流中掘金的科学与艺术

——如何将原始数据转化为商业决策的黄金&#xff1f;&#x1f310; 引言&#xff1a;我们正淹没在数据的海洋&#xff0c;却渴求着知识的甘泉每天全球产生 2.5万亿字节 数据&#xff08;相当于每秒下载4.5万部高清电影&#xff09;&#xff0c;但未经分析的数据如同未提炼的原…

Oracle国产化替代:一线DBA的技术决策突围战

从“如履薄冰”到“游刃有余”,中国数据库的自主之路正重塑技术人的思维地图。 “凌晨三点的最后一次数据校验通过,割接系统绿灯全亮——**河北移动核心账务系统的Oracle数据库已被GoldenDB完全替代**。”2025年6月底,这场持续两年的攻坚战画上句号。当全省业务流量平稳切…

OS19.【Linux】进程状态(1)

目录 1.情景引入 2.操作系统学科对进程状态的分类 运行状态 基于时间片的轮转调度算法 阻塞状态 等待IO设备的例子 等待其他进程中需要获取的数据 进程唤醒 挂起状态(全称为阻塞挂起状态) 简单谈谈虚拟内存管理 就绪状态 笔面试题 3.Linux对进程状态的分类 R和S状…

Hadoop小文件合并技术深度解析:HAR文件归档、存储代价与索引结构

HDFS小文件问题的背景与挑战在Hadoop分布式文件系统&#xff08;HDFS&#xff09;的设计哲学中&#xff0c;"大文件、流式访问"是核心原则。然而现实场景中&#xff0c;海量小文件&#xff08;通常指远小于HDFS默认块大小128MB的文件&#xff09;的涌入却成为系统性能…

Verilog 提取信号的上升沿或者下降沿

上升沿提取代码&#xff1a;reg [1:0] F1;always (posedge clk)beginif(rst_n 1b0) F1[1:0]<2b00;else F1[1:0]<{F1[0],start_i};endwire start_l2h (F1[1:0]2b01)?1b1:1b0;下降沿提取代码&#xff1a;reg [1:0] F1;always (posedge clk)b…

.Net core 部署到IIS出现500.19Internal Server Error 解决方法

.Net core 部署到IIS&#xff0c;网页出现500.19Internal Server Error 解决方法解决方法 在URL:https://dotnet.microsoft.com/zh-tw/download/dotnet/8.0下载并安装dotnet-hosting-8.0.18-win.exe 重启IIS服务器

Linux 基本命令整理

&#x1f427; Linux 基本命令整理 为了方便初学者快速掌握 Linux 常用命令&#xff0c;以下是经过分类整理的核心命令及用法说明。 &#x1f4c2; 目录操作与文件管理 pwd 核心功能&#xff1a;打印当前工作目录的绝对路径&#xff0c;明确用户所在位置。 实操示例&#x…

牛客周赛 Round 101(题解的token计算, 76修地铁 ,76选数,76构造,qcjj寄快递,幂中幂plus)

A题解的token计算要记住c中的对数函数&#xff1a;log(n) 是自然对数&#xff08;以e为底&#xff09;ln(nlog10(n) 是以10为底的对log1p(n) 是ln(1n)&#xff0c;提供更高的数值精log2(n) 是以2为底的对logl(n) 和 log10l(n) 是long double版#define _CRT_SECURE_NO_WARNINGS …

商场导航软件:3D+AI 基于Deepseek 模型的意图识别技术解析

本文面向室内导航工程师、商场导航系统优化师及LBS 应用开发的技术员&#xff0c;解析商场室内导航系统 3DAI 三大核心技术模块&#xff0c;并提供可直接复用的工程解决方案。如需获取商场导航系统技术方案可前往文章最下方获取&#xff0c;如有项目合作及技术交流欢迎私信作者…

借助Aspose.HTML控件,使用 Python 编程将网页转换为 PDF

使用 Python 将网页转换为 PDF 有时您需要离线访问网页&#xff0c;使其更易于访问。因此&#xff0c;将HTML页面转换为PDF即可满足您的需求。令人惊讶的是&#xff0c;您可以在几秒钟内在 Python 项目中启用 HTML 到 PDF 的转换。本指南将为 Python 开发人员介绍一个功能强大…

数据结构:找出字符串中重复的字符(Finding Duplicates in a String)——使用位运算

目录 预备知识 左移运算&#xff08;<<&#xff09; 位运算 一、从最朴素的方法开始 二、如果只关心“有没有出现过”&#xff0c;不关心“次数”&#xff0c;还能不能更省&#xff1f; 三、有没有一种更“紧凑”的方式表示26个开关&#xff1f; 四、用一个整数的…

DevOps 完整实现指南:从理论到实践

DevOps 是一种集软件开发&#xff08;Dev&#xff09;与 IT 运维&#xff08;Ops&#xff09;于一体的文化、实践和工具链&#xff0c;旨在通过自动化流程、持续集成/持续交付&#xff08;CI/CD&#xff09;、基础设施即代码&#xff08;IaC&#xff09;和跨团队协作&#xff0…

使用 5 种安全解决方案将 Android 短信导出为PDF

想要将安卓手机短信导出为 PDF 格式&#xff0c;用于法律用途、情感表达或仅仅为了记录&#xff1f;总之&#xff0c;您可以保存安卓手机短信并将其转换为 PDF 格式&#xff0c;确保它们井然有序&#xff0c;方便打印。快来获取解决方案吧&#xff01;第 1 部分&#xff1a;如何…

再谈fpga开发(fpga开发的几个差异)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】学习嵌入式的同学都知道&#xff0c;嵌入式一般分成这几种chip&#xff0c;有51&#xff0c;有stm32 mcu&#xff0c;有soc&#xff0c;有dsp&#…

Kafka运维实战 11 - kafka查看消息的具体内容【实战】

目录kafka 消息查看1. 直接查看日志文件内容步骤&#xff1a;2. 使用 Kafka 工具查看日志主要参数说明常用命令&#xff1a;输出说明&#xff1a;3. 注意事项kafka 消息日志文件详解我们有时候遇到这样的需求&#xff0c;需要查看下kafka消息的内容。 kafka 消息查看 查看 Ka…