当前位置:首页 > 技术分析 > 正文内容

实践中总结Loki实用查询优化方式(查询优化的目的和方法)

ruisui883个月前 (02-03)技术分析15

Loki是一个基于日志的分布式系统,它提供了一个简单而有效的方式来收集、聚合和查询日志数据。然而,在处理大量日志数据时,性能和稳定性问题可能会成为一个瓶颈。在这篇文章中,我们将介绍一些优化Loki服务的方式,以提高性能和可靠性。

1. 配置Loki实例

1.1 调整GOMAXPROCS

GOMAXPROCS是Golang的环境变量,用于控制可以同时执行的最大线程数。将它设置为CPU核心数可以最大程度地利用CPU资源。对于Loki服务而言,建议将其设置为物理核心数的2倍。

export GOMAXPROCS=16

1.2 调整块大小

Loki将日志数据存储在一系列的块中,每个块包含一定时间范围内的日志数据。块的大小对查询性能和存储效率都有影响。如果块太小,查询时需要扫描更多的块,从而影响查询性能。如果块太大,可能会浪费存储空间。

建议将块大小设置为10-50MB之间。可以使用以下配置修改块大小:

ingester:
  chunk_idle_period: 10m
  max_chunk_age: 1h
  chunk_target_size: 20M  # 修改块大小
  chunk_retain_period: 30d
  chunk_encoding: snappy # 高效压缩

2. 使用索引

2.1 索引生命周期

索引是一种用于加速查询的数据结构。Loki使用基于时间的索引来快速定位日志数据。索引数据会占用一定的磁盘空间,因此需要对索引的生命周期进行管理,以保证性能和存储效率。

建议对索引的生命周期进行定期维护,删除过期的索引数据。可以使用以下命令删除过期索引:

loki index delete --config.file=loki.yaml --delete-older-than=48h

3 使用 Loki 的聚合功能

Loki 支持对查询结果进行聚合,从而减少返回数据的大小。聚合操作可以通过 sum, avg, min, max, count 等函数实现。

3.1. 使用 sum 函数

使用 sum 函数可以将查询结果中的某个标签的值相加。例如,查询某个服务的请求数:

sum(request_count{service="myservice"})

3.2. 使用 count 函数

使用 count 函数可以统计查询结果中标签的数量。例如,查询某个服务的请求数量:

count(request_count{service="myservice"})

3.3. 使用 topk 函数

使用 topk 函数可以查询某个标签的前 k 个值。例如,查询某个服务访问次数最多的前 10 个 IP:

topk(10, sum(request_count) by (service, ip))

4 使用缓存

Loki支持使用缓存(内存缓存,Redis,memcache),加速查询速度

query_range:
  results_cache:
    cache:
      redis:
        endpoint: loki-redis:6379
        expiration: 24h
        db: 4
        pool_size: 10
        password: abc
  align_queries_with_step: true
  max_retries: 5 //最大重试次数
  parallelise_shardable_queries: true // 并行查询
  cache_results: true // 缓存查询结果
chunk_store_config:
  chunk_cache_config: // 写入块存储
    redis:
      endpoint: loki-redis:6379
      expiration: 2h
      db: 1
      pool_size: 10
      password: 123
  write_dedupe_cache_config:
    redis:
      endpoint: loki-redis:6379
      expiration: 2h
      db: 2
      pool_size: 10
      password: 123
querier:
  query_timeout: 5m
  query_ingesters_within: 2h
  max_concurrent: 20 # 并发查询
  engine:
      timeout: 5m

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1044.html

标签: 查询优化
分享给朋友:

“实践中总结Loki实用查询优化方式(查询优化的目的和方法)” 的相关文章

Linux发行版Debian推出12.2及11.8版本,修复多个安全问题

IT之家 10 月 9 日消息,Debian 是最古老的 GNU / Linux 发行版之一,也是许多其他基于 Linux 的操作系统的基础,包括 Ubuntu、Kali、MX 和树莓派 OS 等,近日 Debian 推出了 12.2 和 11.8 版本,主要修复了多个安全问题。▲ 图源 Debia...

Deepin Linux正式引入AI功能,成为第一个正式加入AI潮流的Linux发行版

Deepin Linux是一个基于Debian的Linux发行版,以美观和实用性而闻名。现在为了达到人工智能发展趋势的前沿,Deepin Linux的开发人员宣布,他们已经开始将AI功能集成到桌面环境及其随附的应用程序中。AI集成包含了两种风格——AI驱动的图像编辑插件和AI编码助手。其中图像编辑插...

vue3中父子组件之间传值的详解

首先我们回顾一下vue2中父子组件是怎么传值的,然后对比vue3进行详解。一、vue2中父子组件传值<!-- 父组件 --> <template> <div> // name:父组件把值传给子组件test-child // childFn:...

带你五步学会Vue SSR

作者:liuxuan 前端名狮转发链接:https://mp.weixin.qq.com/s/6K6GUHcLwLG4mzfaYtVMBQ前言SSR大家肯定都不陌生,通过服务端渲染,可以优化SEO抓取,提升首页加载速度等,我在学习SSR的时候,看过很多文章,有些对我有很大的启发作用,有些就只是照搬官...

VIM配置整理

一、基本配色set number set showcmd set incsearch set expandtab set showcmd set history=400 set autoread set ffs=unix,mac,dos set hlsearch set shiftwidth=2 s...

vue v-html动态生成的html怎么加样式/事件

1、动态生成的html,样式不生效//html 布局 <view v-html="html"> {{html}} </view> //动态生成的元素 <view class="btngo" @tap="handleLink...