Grafana Loki 学习之踩坑记
转发自: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/
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 学习之踩坑记的更多相关文章
- Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记
前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...
- [技术博客] 敏捷软工——JavaScript踩坑记
[技术博客] 敏捷软工--JavaScript踩坑记 一.一个令人影响深刻的坑 1.脚本语言的面向对象 面向对象特性是现代编程语言的基本特性,JavaScript中当然集成了面向对象特性.但是Java ...
- Spark踩坑记——Spark Streaming+Kafka
[TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...
- Spark踩坑记——数据库(Hbase+Mysql)
[TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...
- 【踩坑记】从HybridApp到ReactNative
前言 随着移动互联网的兴起,Webapp开始大行其道.大概在15年下半年的时候我接触到了HybridApp.因为当时还没毕业嘛,所以并不清楚自己未来的方向,所以就投入了HybridApp的怀抱. Hy ...
- Spark踩坑记——共享变量
[TOC] 前言 Spark踩坑记--初试 Spark踩坑记--数据库(Hbase+Mysql) Spark踩坑记--Spark Streaming+kafka应用及调优 在前面总结的几篇spark踩 ...
- Spark踩坑记——从RDD看集群调度
[TOC] 前言 在Spark的使用中,性能的调优配置过程中,查阅了很多资料,之前自己总结过两篇小博文Spark踩坑记--初试和Spark踩坑记--数据库(Hbase+Mysql),第一篇概况的归纳了 ...
- djangorestframework+vue-cli+axios,为axios添加token作为headers踩坑记
情况是这样的,项目用的restful规范,后端用的django+djangorestframework,前端用的vue-cli框架+webpack,前端与后端交互用的axios,然后再用户登录之后,a ...
- HttpWebRequest 改为 HttpClient 踩坑记-请求头设置
HttpWebRequest 改为 HttpClient 踩坑记-请求头设置 Intro 这两天改了一个项目,原来的项目是.net framework 项目,里面处理 HTTP 请求使用的是 WebR ...
随机推荐
- idea插件和springboot镜像
主题 https://blog.csdn.net/zyx1260168395/article/details/102928172 springboot镜像 http://start.springboo ...
- Mybatis源码解读-插件
插件允许对Mybatis的四大对象(Executor.ParameterHandler.ResultSetHandler.StatementHandler)进行拦截 问题 Mybatis插件的注册顺序 ...
- Go语言基础四:数组和指针
GO语言中数组和指针 数组 Go语言提供了数组类型的数据结构. 数组是同一数据类型元素的集合.这里的数据类型可以是整型.字符串等任意原始的数据类型.数组中不允许混合不同类型的元素.(当然,如果是int ...
- 叫高二上一调?简要题解 (ACD)
A. 电压机制 题意转换为所有奇环的并排除掉所有偶环留下的边的个数 . 建出 DFS 树,然后只有返祖边可能构成环 . 于是类似树上差分,\(odd_u\) 统计奇环,\(even_u\) 统计偶环 ...
- Pref 社论
目录 题面 题解 算法 1 算法 2 算法 3(标答) 代码 算法 1 20pts(by jijidawang) 40pts(by Rolling_Star) 算法 2 算法 3 题面 一个长度为 \ ...
- 基于WPF重复造轮子,写一款数据库文档管理工具(一)
项目背景 公司业务历史悠久且复杂,数据库的表更是多而繁杂,每次基于老业务做功能开发都需要去翻以前的表和业务代码.需要理解旧的表的用途以及包含的字段的含义,表少还好说,但是表一多这就很浪费时间,而且留下 ...
- 利用基于Python的Pelican打造一个自己的个人纯静态网站
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_100 其实呢这么多年以来我一直建议每个有技术追求的开发者都要有写技术博客记笔记的良好习惯,一来可以积累知识,二来可以帮助别人,三来 ...
- 基于 Next.js实现在线Excel
如果要从头开始使用 React 构建一个完整的 Web 应用程序,需要哪些步骤? 这当然不像把大象装进冰箱那么简单,只需要分成三步:打开冰箱,拿起大象,塞进冰箱就好. 我们需要考虑细节有很多,比如: ...
- 从零开始Blazor Server(8)--增加菜单以及调整位置
这篇干啥 这篇文章主要是把前面的一些东西稍微调整一下,使其更适合后面的内容. 主要是两个事,一个是把原来的PermissionEntity直接变成MenuEntity,直接让最后一级是菜单,这样后面就 ...
- 活动回顾|Apache DolphinScheduler x Pulsar 在线 Meetup
关于 Apache DolphinScheduler: " Apache DolphinScheduler(Incubating) 是一个分布式去中心化.易扩展的可视化工作流任务调度系统,致 ...