Loki使用指南

转载至我的博客 https://www.infrastack.cn ,公众号:架构成长指南

与其他日志系统相比, Loki 的使用方式是有一定差异性的,需要用不同的思维方式。本文分享一下这些差异以及我们应该如何使用

作为 Loki 用户或操作人员,我们目标应该是使用尽可能少的标签来存储日志。

更少的标签则意味着更小的索引,从而能带来更好的性能。

以上这些话听起来可能觉得有问题。因为在我们以往工作中比如使用 elk、数据库的经验告诉我们,如果想让它更快,需要对其建立索引。而Loki 是以完全相反的方式构建和优化的, Loki 的设计目标是保持较低的运营成本和复杂性,这是通过保持非常小的索引并利用商用硬件性能和并行化查询来实现的。

因此,作为 Loki 的用户或操作员,在添加标签之前我一定要三思而后行。

如何查询给定traceID 的所有日志?
ts=2020-08-25T16:55:42.986960888Z caller=spanlogger.go:53 org_id=29 traceID=2612c3ff044b7d02 method=Store.lookupIdsByMetricNameMatcher level=debug matcher="pod=\"loki-canary-25f2k\"" queries=16

我们可能会想,应该提取traceID作为标签,然后可以这样查询:

{cluster="ops-cluster-1",namespace="loki-dev", traceID=”2612c3ff044b7d02”}

但不建议这么做,这种方式会导致Loki 查询效率很低,因为它的值就是个无界的,每次请求都会产生新的traceID,这种情况属于典型无界的动态标签值,在Loki里面用Cardinality来表示,Cardinality值越高,Loki的查询效率越低。如果想在日志中查找高基数数据,请使用如下过滤表达式:

{cluster="ops-cluster-1",namespace="loki-dev"} |= “traceID=2612c3ff044b7d02”
提取的内容基数低,能否提取到标签中?

比如日志级别,只有几个固定值

{cluster="ops-cluster-1",namespace="loki-dev", level=”debug”}

这里也要注意!因为标签对索引和存储具有倍增效应,刚开始的一个日志流,如果使用日志级别标签后,现在已变成4个日志流,所以在我们添加标签时要考虑这些,以下是一个示意图

尽量使用静态标签

静态标签开销更小,在发送到Loki之前,就会获取相关 lablel,在k8s 中通过 helm 部署,默认采集以下静态标签

  • 应用名:__meta_kubernetes_pod_label_app
  • 命名空间:__meta_kubernetes_namespace
  • 节点名称:__meta_kubernetes_pod_node_name
  • pod名称:__meta_kubernetes_pod_name
  • 容器名称:__meta_kubernetes_pod_container_name

使用并行化来提高Loki 性能

使用大量数值的标签是不好的,那么我们如何查询日志?如果没有日志没有索引,查询能快吗?

在我们使用ELK 或者其他日志系统时,我们会创建大量的索引来提高查询速度,但是在 loki 中我们需要忘记这些东西

因为loki 是通过并行化的方式来提交查询速度的。

Loki 的超能力是将查询分解成小块,并将其并行调度,这样就可以在小时间内查询大量的日志数据,最后在进行汇总返回

总结

Loki 利用水平扩展和查询时间来查询我们的数据。这与使用多索引的解决方案一样快吗?可能不是!但它运行和部署要容易很多,而且还省资源。

Grafana Lab 的 Loki 部分集群的数据,在过去 7 天内,它摄入了 14TB 的数据。该时间段对应的索引使用量约为500MB; 14TB 日志的索引可以放入树莓派的内存中。

这就是为什么Loki专注于保持标签集较小的原因。也许标签只能将搜索范围缩小到 100GB 的日志数据 —但是运行 20 个查询器(可以以 30GB/s 的速度并行搜索 100GB 数据)比维护一个 14TB 索引要便宜得多,尤其是当我们使用不了几次的时候。

因此,更少的标签 = 更好的性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode—37. 解数独【困难】

2024每日刷题&#xff08;111&#xff09; Leetcode—37. 解数独 实现代码 class Solution { public:bool isValid(vector<vector<char>>& board, int row, int col, char c) {for(int i 0; i < 9; i) {if(board[row][i] c || board[i][col] c || boar…

最新GPT4.0使用教程,AI绘画,GPT语音对话使用,DALL-E3文生图

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;文档对话总结DALL-E3文生图&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和…

界面控件DevExpress ASP.NET Spreadsheet组件 - 轻松集成电子表格功能!(一)

DevExpress ASP. NET Spreadsheet组件允许您轻松地将电子表格功能合并到任意ASP. NET应用程序&#xff0c;它可以加载、转换和保存工作簿到XLS-XLSx二进制文件格式&#xff0c;还可以导出和导入XLSX、CSV和TXT文件。 P.S&#xff1a;DevExpress ASP.NET Web Forms Controls拥有…

STM32--SPI通信协议(1)SPI基础知识总结

前言 I2C (Inter-Integrated Circuit)和SPI (Serial Peripheral Interface)是两种常见的串行通信协议&#xff0c;用于连接集成电路芯片之间的通信&#xff0c;选择I2C或SPI取决于具体的应用需求。如果需要较高的传输速度和简单的接口&#xff0c;可以选择SPI。如果需要连接多…

开关电源学习之Buck电路

一、引言 观察上方的电路&#xff0c;当开关闭合到A点时&#xff0c;电流流过电感线圈&#xff0c;形成阻碍电流流过的磁场&#xff0c;即产生相反的电动势&#xff1b;电感L被充磁&#xff0c;流经电感的电流线性增加&#xff0c;在电感未饱和前&#xff0c;电流线性增加&…

零基础Vue框架上手;git,node,yarn安装

项目搭建环境&#xff1a; git安装&#xff1a;Git - 安装 Git (git-scm.com)&#xff08;官网&#xff09; 下载路径&#xff1a;Git - Downloading Package (git-scm.com)&#xff1b;根据自己电脑下载相对应的安装包 ​ 点next ​ 点next&#xff0c;点到最后安装就行。…

航母编队反无人机蜂群作战能力需求分析

源自&#xff1a;指挥控制与仿真 作者&#xff1a;樊辉锦、巫银花、毕月、苏泽亚 “人工智能技术与咨询” 发布 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨&#xff0c;并不意味着支持其观点或证实其内容的真实性。版权归原作者所有&#xf…

【DBF格式转换器.exe】

一、概要 DBF文件是一种数据库文件格式&#xff0c;通常用于存储表格数据。这种文件格式曾经被广泛使用&#xff0c;尤其是在一些较旧的数据库系统中。然而&#xff0c;随着时间的推移&#xff0c;其他更现代的文件格式&#xff0c;如XLS&#xff08;Excel&#xff09;、CSV、D…

红日靶场1搭建渗透

环境搭建 下载好镜像文件并解压&#xff0c;启动vmware 这里我用自己的win7 sp1虚拟机作为攻击机&#xff0c;设置为双网卡NAT&#xff0c;vm2 其中用ipconfig查看攻击机ip地址 设置win7 x64为双网卡&#xff0c;vm1&#xff0c;vm2 设置win08单网卡vm1&#xff0c;win2k3为单…

Leetcode—32. 最长有效括号【困难】(动态规划及ranges::max()使用)

2024每日刷题&#xff08;110&#xff09; Leetcode—32. 最长有效括号 栈实现代码 class Solution { public:int longestValidParentheses(string s) {stack<int> st;st.push(-1);int n s.size();int maxn 0;for(int i 0; i < n; i) {if(s[i] () {st.push(i);}…

《幻兽帕鲁》好玩吗?幻兽帕鲁能在Mac上运行吗?

最近一款叫做《幻兽帕鲁》的新游戏走红&#xff0c;成为了Steam游戏平台上&#xff0c;连续3周的销量冠军&#xff0c;有不少Mac电脑用户&#xff0c;利用Crossover成功玩上了《幻兽帕鲁》&#xff0c;其实Crossover已经支持很多3A游戏&#xff0c;包括《赛博朋克2077》《博德之…

XUbuntu22.04之两款实用画笔工具(二百一十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

开发智能化企业培训平台:教育系统源码的创新方法

在传统的企业培训模式中&#xff0c;往往面临着效率低下、内容过时以及难以个性化的问题。为了解决这些挑战&#xff0c;采用智能化技术成为了企业培训领域的热门趋势。通过开发智能化企业培训平台&#xff0c;可以提高培训效果、降低成本&#xff0c;并更好地满足员工多样化的…

【漏洞复现】MDVR数字视频录像机认证绕过漏洞

Nx01 产品简介 MDVR&#xff08;Mobile Digital Video Recorders&#xff09;硬盘录像机是一种使用先进的视音频编解码技术将车内外的视频进行数模转换&#xff0c;进行压缩存储的设备。 Nx02 漏洞描述 阿根廷研究员发现&#xff0c;通过使用“Cookie&#xff1a; uid admin”…

红队渗透靶机:TIKI: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录探测 1、dirsearch 2、gobuster WEB web信息收集 searchsploit cms信息收集 ssh登录 提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:2…

基于Springboot开发的物品捎带系统[附源码]

基于Springboot开发的物品捎带系统[附源码] &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &#x1f…

Transformer实战-系列教程3:Vision Transformer 源码解读1

&#x1f6a9;&#x1f6a9;&#x1f6a9;Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 1、整体解读 在文本任务中大量使用了Transformer 架构&#xff0c;因为文本数据是一个序列非常好…

2、安全开发-Python-Socket编程端口探针域名爆破反弹Shell编码免杀

用途&#xff1a;个人学习笔记&#xff0c;欢迎指正&#xff01; 目录 主要内容&#xff1a; 一、端口扫描(未开防火墙情况) 1、Python关键代码: 2、完整代码&#xff1a;多线程配合Queue进行全端口扫描 二、子域名扫描 三、客户端&#xff0c;服务端Socket编程通信cmd命…

vue中使用html2canvas配合jspdf导出pdf(以及在导出时遇到的导出样式问题)

指定页面中导出为pdf格式并打包&#xff0c;使用html2canvas先转为图片格式&#xff0c;在利用jspdf转为pdf&#xff0c;最后下载打包为本地压缩包 yarn add html2canvas yarn add jspdf1. 注册一个插件并挂载 import html2Canvas from html2canvas import JsPDF from jspdf …

90.网游逆向分析与插件开发-游戏窗口化助手-项目需求与需求拆解

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;实现物品使用策略的功能-CSDN博客 项目需求&#xff1a; 在游戏窗口化时&#xff0c;可以在游戏之外弹出一个窗口&#xff0c;可以隐藏或者显示游戏窗口&#xff0c;显示游戏人物的基本状态&#xff…