Z.S.K.'s Records

Grafana学习(Loki踩坑记)

grafana出品的loki日志框架完美地与kubernetes的label理念结合,相对于EFK来说更加轻量级,非常适合不需要日志聚合的场景.目前新上集群考虑都彩loki做为基础工具, 直接在grafana中展示

在这里记录下使用Loki踩过的坑, 不定期更新

Loki: file size too small\nerror creating index client

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

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

protail: context deadline exceeded

原因: promtail无法连接loki所致

promtail cpu使用过高

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

1
2
3
4
5
target_config:
sync_period: 30s
positions:
filename: /run/promtail/positions.yaml
sync_period: 30s

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

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

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

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

Maximum active stream limit exceeded

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

server returned HTTP status 429 Too Many Requests

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

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

Please verify permissions

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

loki: invalid schema config

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

promtail: too many open files

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

解决:

1
2
3
4
5
6
7
8
# 先查看当前机器设置的配置
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

promtail: no such file ro directory

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

未完待续

参考文章:

转载请注明出处https://izsk.me

Z.S.K. wechat
Scan Me To Read on Phone
I know you won't do this,but what if you did?