转发自:https://mp.weixin.qq.com/s/zfXNEkdDC9Vqd9lh1ptC1g

Grafana 出品的 loki 日志框架完美地与 kubernetes 的 label 理念结合,相对于 EFK 来说更加轻量级,非常适合不需要日志聚合的场景。目前新上集群考虑都采用 loki 做为基础工具,直接在 grafana 中展示,在这里记录下使用 Loki 踩过的一些坑。

1.LOKI 启动时提示 panic: invalid page type: 11:10

原因: 对应的 index table 文件已经损坏

解决: 删除相应的 index 文件即可解决

2.日志的 label 不对

原因: promtail 中的 scrape_config 存在问题.

参考: https://izsk.me/2022/05/15/Loki-log-with-wrong-labels/

3.grafana 中开启实时日志时提示 Query error

原因: 官方的解释是 Note that live tailing relies on two websocket connections: one between the browser and the Grafana server, and another between the Grafana server and the Loki server. If you run any reverse proxies, please configure them accordingly.

也就是说,如果在 web 与 grafana,grafana 与 loki 之间存在如 nginx 类的 proxy,则需要开启 websocket 特性,恰好作者的 grafana 是在 nginx 后的

解决: nginx 添加 websocket 配置, [详见] https://www.nginx.com/blog/websocket-nginx/

参考: https://github.com/grafana/grafana/blob/b5d8cb25e18fc73f37b3546246363464c9298684/docs/sources/features/datasources/loki.md

4.Loki: file size too small\nerror creating index client

解决: 删除 loki 的持久化目录下的 boltdb-shipper-active/index_18xxx 目录

参考: https://github.com/grafana/loki/issues/3219

5.protail: context deadline exceeded

原因: promtail 无法连接 loki 所致

6.promtail cpu 使用过高

原因: 由于集群中存在大量的 job 类 pod,这会对 loki 的服务发现会有很大的压力,需要调整 promtail 的配置,查看官方的 issue,后续可能会将 ds 由 promtail 转到服务端来做,promtail 需要调整的配置主要为

将 sync_period 由默认的 10s 换成 30s

target_config:
sync_period: 30s
positions:
filename: /run/promtail/positions.yaml
sync_period: 30s

可以使用以下的命令获取到 pprof 文件分析性能

curl localhost:3100/debug/pprof/profile\?seconds\=20

参考: https://github.com/grafana/loki/issues/1315

7.Maximum active stream limit exceeded

原因:同下,需要调整 limit config 中的 max_streams_per_user, 设置为 0 即可

8.server returned HTTP status 429 Too Many Requests

原因: limit config 中的参数: ingestion_burst_size 默认值太小,调整即可

参考: https://github.com/grafana/loki/issues/1923

9.Please verify permissions

原因: 这条其实是 warn,不影响 promtail 的正常工作,如果调整过日志的路径的话要确认 promtail 挂载的路径是否正常

10.loki: invalid schema config

原因: loki 的配置文件格式错误.

11.promtail: too many open files

原因: /var/log/pods 下面的文件数量太多,导致超过内核参数(fs.inotify.max_user_instances)设置配置.

解决

# 先查看当前机器设置的配置
cat /proc/sys/fs/inotify/max_user_instances
# 再查看promtail启动时watch的文件数
cat /run/promtail/positions.yaml | wc -l
# 如果这个值比max_user_instances要大,则会出现上面的错误,可以通过修改内核参数进行调整
sysctl -w fs.inotify.max_user_instances=1024
# 生效
sysctl -p

参考: https://github.com/grafana/loki/issues/1153

12.promtail: no such file ro directory

原因:promtail daemonset 启动时会自动挂载好几个 hostpath,如果 docker containers 的配置调整过,则需要 volume 跟 volumemount 都需要对应上。

Grafana Loki 学习之踩坑记的更多相关文章

  1. Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记

    前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...

  2. [技术博客] 敏捷软工——JavaScript踩坑记

    [技术博客] 敏捷软工--JavaScript踩坑记 一.一个令人影响深刻的坑 1.脚本语言的面向对象 面向对象特性是现代编程语言的基本特性,JavaScript中当然集成了面向对象特性.但是Java ...

  3. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  4. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  5. 【踩坑记】从HybridApp到ReactNative

    前言 随着移动互联网的兴起,Webapp开始大行其道.大概在15年下半年的时候我接触到了HybridApp.因为当时还没毕业嘛,所以并不清楚自己未来的方向,所以就投入了HybridApp的怀抱. Hy ...

  6. Spark踩坑记——共享变量

    [TOC] 前言 Spark踩坑记--初试 Spark踩坑记--数据库(Hbase+Mysql) Spark踩坑记--Spark Streaming+kafka应用及调优 在前面总结的几篇spark踩 ...

  7. Spark踩坑记——从RDD看集群调度

    [TOC] 前言 在Spark的使用中,性能的调优配置过程中,查阅了很多资料,之前自己总结过两篇小博文Spark踩坑记--初试和Spark踩坑记--数据库(Hbase+Mysql),第一篇概况的归纳了 ...

  8. djangorestframework+vue-cli+axios,为axios添加token作为headers踩坑记

    情况是这样的,项目用的restful规范,后端用的django+djangorestframework,前端用的vue-cli框架+webpack,前端与后端交互用的axios,然后再用户登录之后,a ...

  9. HttpWebRequest 改为 HttpClient 踩坑记-请求头设置

    HttpWebRequest 改为 HttpClient 踩坑记-请求头设置 Intro 这两天改了一个项目,原来的项目是.net framework 项目,里面处理 HTTP 请求使用的是 WebR ...

随机推荐

  1. AspectJ和AOP细节

    AspectJ1. 简介 AspectJ:Java社区里最完整最流行的AOP框架.(在Spring中AOP是一种思想,而AspectJ是一种AOP的更明确具体实现) 在Spring2.0以上版本中,可 ...

  2. List集合_介绍&常用方法和ArrayList集合

    List集合 我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢? 接下来,我们一起学习Collection中的常用几个子类(java.util ...

  3. c# SerialPort HEX there is no data received

    C#窗口程序进行串口通信,按照串口通信协议,设置com口,波特率,停止位,校验位,数据位,本地虚拟串口调试ok,但是和外设调试时,发送HEX模式数据命令,没有数据返回, 所以关键问题在于HEX模式,发 ...

  4. Idea Maven调试properties 找不到报错

    问题:maven执行package命令打包时,src/main/java路径下的properties文件偶尔丢失 解决方式:pom.xml中加入resources配置 <build> &l ...

  5. 2022-7-9 html 第七组 刘昀航

    ​ 一.基础认知 1.1 认识网页 网页的组成: 文字.图片.音频.视频.超链接 网页背后的本质:前端程序员写的代码 前端的代码通过什么软件转换成用户眼中的页面:浏览器转化(解析和渲染) 1.2 5大 ...

  6. 平衡树——splay 三

    前文链接: 平衡树--splay 一 - yi_fan0305 - 博客园 (cnblogs.com) 平衡树--splay 二 - yi_fan0305 - 博客园 (cnblogs.com) 再补 ...

  7. linux学习(小白篇)

    当前服务器:centos 7 shell命令框:xshell 文件预览及上传:xftp (界面化软件,非常好用) 数据库连接:navicat 此文是在学习linux时做一个指令合集,方便自己查阅 进文 ...

  8. md文档使用小技巧

    简介 在日常写readme文档中,可能会遇到一些小问题,此处记录一下md文档编写过程中的一些小技巧. 插入图片 在md文档中插入图片,目前有三种方式,本地导入.网络导入.base64导入. 本地导入 ...

  9. 业务可视化-让你的流程图"Run"起来(4.实际业务场景测试)

    前言 首先,感谢大家对上一篇文章[业务可视化-让你的流程图"Run"起来(3.分支选择&跨语言分布式运行节点)]的支持. 下面我以实际业务场景为例,来介绍一下ladybug ...

  10. 学习nginx的一点记录

    一.nginx定义 Nginx是一款轻量级的.高性能的,具备HTTP.反向代理.负载均衡的web服务器,同时还提供IMAP/POP3/SMTP服务,其特点是占用内存少,并发能力强. 二.nginx基本 ...