【译】Loki 故障排除

鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)

“loki:网关故障。502”

当 Loki 添加为数据源时,Grafana 中会出现此错误,表明 Grafana 无法连接到 Loki。可能存在以下根本原因:

  • 如果 Loki 使用 Docker 部署,并且 Grafana 和 Loki 不在同一节点运行,请检查防火墙以确保节点可以连接。
  • 如果 Loki 与 Kubernetes 一起部署:
    • 如果 Grafana 和 Loki 位于同一命名空间中,请将 Loki URL 设置为http://$LOKI_SERVICE_NAME:$LOKI_PORT
    • 否则,将 Loki URL 设置为http://$LOKI_SERVICE_NAME.$LOKI_NAMESPACE:$LOKI_PORT

“数据源已连接,但未收到标签。请验证 Loki 和 Promtail 是否配置正确。”

当 Loki 作为数据源添加时,Grafana 中可能会出现此错误,表明尽管 Grafana 已连接到 Loki,但 Loki 尚未收到来自 Promtail 的任何日志。可能存在以下根本原因之一:

  • Promtail 正在运行并收集日志,但无法连接到 Loki 发送日志。检查 Promtail 的输出。
  • Promtail 在 Loki 准备就绪之前就开始向 Loki 发送日志。这种情况可能发生在测试环境中,因为 Promtail 已经读取了所有日志并将其发送出去。您可以执行以下操作:
    • 在 Loki 之后启动 Promtail,例如 60 秒后。
    • 要强制 Promtail 重新发送日志消息,请删除位置文件(默认位置/tmp/positions.yaml)。
  • 由于配置问题,Promtail 正在忽略目标并且没有读取任何日志。
    • 可以通过打开 Promtail 中的调试日志并查找消息来检测到这dropping target, no labels一点ignoring target
  • Promtail 找不到您的日志文件的位置。请检查是否scrape_configs包含用于查找工作节点上的日志的有效路径设置。
  • 您的 pod 运行时所用的标签与 Promtail 配置读取的标签不同。请检查scrape_configs以验证。

故障排除目标

Promtail 公开了两个网页,可用于了解其服务发现的工作原理。

服务发现页面(/service-discovery)显示所有已发现的目标及其重新标记前后的标签以及目标被删除的原因。

目标页面(/targets)仅显示正在主动抓取的目标及其各自的标签、文件和位置。

在 Kubernetes 上,你可以通过本地端口转发 Promtailport(9080或者3101使用 Helm)来访问这两个页面:

 
  1. $ kubectl port-forward loki-promtail-jrfg7 9080
  2. # Then, in a web browser, visit http://localhost:9080/service-discovery

调试输出

loki和都promtail支持命令行上的日志级别标志:

 
  1. $ loki log.level=debug
  2. $ promtail -log.level=debug

无法创建目标,ioutil.ReadDir: readdirent: not a directory

Promtail 配置包含__path__Promtail 无法找到的目录条目。

连接到 Promtail pod 进行故障排除

首先检查上面的故障排除目标部分。如果这不能帮助回答您的问题,您可以连接到 Promtail pod 进行进一步调查。

如果你在集群中将 Promtail 作为 DaemonSet 运行,则每个节点上都会有一个 Promtail pod,因此请先确定你需要调试哪个 Promtail:

 
  1. $ kubectl get pods --all-namespaces -o wide
  2. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
  3. ...
  4. nginx-7b6fb56fb8-cw2cm 1/1 Running 0 41d 10.56.4.12 node-ckgc <none>
  5. ...
  6. promtail-bth9q 1/1 Running 0 3h 10.56.4.217 node-ckgc <none>

该输出被截断以仅突出显示我们感兴趣的两个 pod,您可以通过标志查看-o wide它们正在运行的 NODE。

您需要将您感兴趣的 pod 的节点(在此示例中为 NGINX)与在同一节点上运行的 Promtail 进行匹配。

要进行调试,您可以连接到 Promtail pod:

 
  1. kubectl exec -it promtail-bth9q -- /bin/sh

一旦连接,请验证配置中/etc/promtail/promtail.yml是否有您期望的内容。

还要检查/var/log/positions.yaml/run/promtail/positions.yaml由 Helm 部署时或为其指定的任何值positions.file)并确保 Promtail 正在跟踪您期望的日志。

/var/log/containers您可以通过查看Promtail 容器日志来检查Promtail 日志。

启用 Loki 追踪

可以通过将环境变量设置为运行 Loki 的主机名和端口来使用Jaeger来跟踪 Loki 。JAEGER_AGENT_HOST

如果使用 Helm 部署,请使用以下命令:

$ helm upgrade --install loki loki/loki --set "loki.tracing.jaegerAgentHost=YOUR_JAEGER_AGENT_HOST"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值