架构成长指南

  • 首页
  • prometheus
  • 云原生
  • 关于
不积跬步,无以至千里
  1. 首页
  2. 云原生
  3. 正文

Loki使用指南

2024年2月4日 1727点热度 0人点赞 0条评论

与其他日志系统相比, 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使用指南插图

尽量使用静态标签

静态标签开销更小,在发送到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使用指南插图1

使用并行化来提高Loki 性能

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

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

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

Loki使用指南插图2

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

总结

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

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

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

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

扫描下面的二维码关注我们的微信公众帐号,在微信公众帐号中回复◉加群◉即可加入到我们的技术讨论群里面共同学习。

Loki使用指南插图3

累计浏览量: 1,738
标签: loki 云原生 可观测性
最后更新:2024年2月4日

蜗牛

大家好,我是蜗牛哥,工作11年的老司机,目前在某头部跨国外企担任基础架构负责人,除了正常工作外,写写技术文章把遇到的一些坑和一些经验分享出来,主要语言JAVA,擅长基础架构与中间件开发,目前主攻方向云原生

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
我的公众号
文章目录
  • 总结
标签聚合
java 云原生 大数据 可观测性 分布式 loki prometheus k8s
浏览最多的文章
  • 关于 (10,791)
  • 10 分钟在K8s中部署轻量级日志系统 Loki (2,995)
  • 从零开始:使用Prometheus与Grafana搭建监控系统 (2,753)
  • 阿里开源的数据同步利器DataX介绍 (2,710)
  • 什么是 doris,为什么几乎国内大厂都会使用它? (2,574)

COPYRIGHT © 2023 架构成长指南. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备2023043681号-1