问题标签 [grafana-loki]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 监控 Kubernetes pod 健康事件
目前我已经设置了 kubernetes,包括 kube-state-metrics、prometheus 和 loki。对于大多数事情来说,这确实很好,但我正在努力解决的一件事是找到容器可能重新启动的确切原因。
对于正在运行的 pod,很容易看到,kubectl describe pod
例如,使用 ,我得到以下事件:
这对于排查为什么容器有很多重启非常有用,尤其是在使用探针的情况下。但也有其他有用的事件。
但是,我看不到任何方法可以在 loki 或 prometheus 中保存此类事件。但也许我错过了一些东西。我曾期望kube-state-metrics
包含此类信息,但似乎并非如此,我也没有在 Loki 的任何地方看到它。
关于如何保存此类事件的任何提示?
grafana - 是否可以在 LogQL 中将字符串值转换为数字?
我正在关注文档| line_format
,并且感谢regexReplaceAll
我能够从一行中获取一些子字符串。
假设现在我有这些列:
有了这个,我想执行一些转换操作,ex sum,或转换操作,分组并取总数。它不起作用,因为我怀疑这些值不是数字,而只是字符串。是否可以将其转换为数字?
我正在尝试使用unwrap
,但没有奏效:
结果是
管道错误:系列的“SampleExtractionErr”:
当我过滤掉错误时,没有结果。
logging - Loki/Promtail - 如何设置自己的 scrape_configs?
我刚刚使用 helm 安装了 Loki/Promtail,如下所示:
现在我想设置我自己的 scrape_configs 来聚合来自我自己的应用程序 pod 的日志,但我不确定如何完成这个(对 helm 不太熟悉):
显示当前作为默认加载的 scrape_configs,这实际上只是 K8s/docker 生成的东西,但我的应用程序日志丢失了,因为它们不是默认配置的一部分......
如何将我自己的 scrape_configs 添加到上面显示的这个 helm 设置中?
提前致谢
prometheus - 如何在 Grafana 中组合多个数据源
我们有多个部署(例如 QA 和 Prod)。在我们介绍 Loki 之前,我们的每个 Grafana 仪表板都有一个数据源变量,您可以在其中选择是否要查看来自 QA 或 Prod Prometheus 的指标。
现在,由于我们引入了 Loki,并且我们希望面板显示来自同一环境的 Prometheus 指标和 Loki 日志。现在有了 Loki,我需要两个变量,一个用于选择 Prometheus 实例,一个用于 Loki 实例。
现在的问题是,
- 我需要两次选择环境
- 我可以从不同的环境中选择 Promethes 和 Loki(例如 Prometheus QA 和 Loki Prod)
我试图使 Loki 实例依赖于 Prometheus 实例(或相反),尝试从先前选择的数据源的名称中提取部署后缀以选择另一个。
我发现的唯一方法是使用值“QA”和“Prod”对“自定义”变量中的环境进行硬编码,它们使 Prometheus 数据源选择依赖于该选择,请参见此处 和此处。由于只剩下一个 Prometheus 和 Loki 实例,我完全隐藏了变量以减少混淆。
这是要走的路还是有另一种动态的路要走?
linux - 配置 promtail 2.0 读取文件 .log
由于我已经更新到 promtail 2.0,我无法在 loki 中读取日志文件的内容。
配置-promtail.yml
我也尝试在抓取配置中使用不同的配置,但没有运气:
error.log 不为空:
Promtail 版本 - 2.0
有什么线索吗?我做错什么了吗?
非常感谢,
docker - 为什么 Loki 的 Docker 驱动程序客户端在一段时间后停止登录?
我想将 Docker 容器的日志发送到Grafana Loki。因此,我安装了 Loki 的Docker Driver Client并用它启动了我的容器。首先我可以看到日志,但一段时间后我看不到更多日志。
安装
我在我的 Docker 引擎(版本20.10.2 )上安装了 Loki 的 Docker Driver Client 作为Docker 插件:
我没有使用标签lastest
,因为错误Unable to connect to logging plugin in Swarm
配置
我使用 Loki 的 Docker Driver Client 作为日志驱动程序启动了我的 Docker 容器:
我还添加了 json-log 驱动程序max-size
并max-file
限制磁盘空间,请参阅配置 Docker 驱动程序。
问题
首先,我可以在Grafana和命令行中看到日志docker container logs
,但一段时间后不再显示日志。如果我尝试查看 Docker 主机上的日志并看到一个错误:
研究
我查看了容器的目录(请参阅Where is a log file with logs from a container?),但我看不到任何日志文件:
我还检查了日志路径(请参阅Get an instance's log path),但它是空的:
我在插件目录中找到了容器的日志(请参阅Loki 日志驱动程序不将日志作为文件存储在磁盘上,即使使用 keep-file: true),但日志文件不再更改:
我查看了 Docker 守护程序的日志(请参阅阅读日志)并发现错误和警告(同时记录停止):
我做错了什么?
kubernetes - Rancher 2.5+ 日志记录是否支持 Grafana Loki?
我正在尝试使用新的 rancher 2.5 日志系统设置日志记录,该系统使用 Banzai 运算符。我正在考虑使用 Banzai Operator 进行摄取并推送到 Grafana Loki 输出。
问题是我在 loki 方面遇到了一些“乱序输入”错误,我不确定这是否是由于牧场主默认不支持 loki 造成的,或者这是否是一些与配置相关的问题洛基这边。
文档令人困惑:
- 一方面,在 banzai cloud one-eye logging operator 文档中,loki 被支持作为输出 https://banzaicloud.com/docs/one-eye/logging-operator/configuration/plugins/outputs/loki/
- 另一方面,牧场主文档中有一个关于如何通过部署另一个 fluentbit 容器来处理“不支持”输出的示例。 https://rancher.com/docs/rancher/v2.x/en/logging/v2.5/
我的问题是:
- 有谁知道在这种情况下“支持”或“不支持”是什么意思?它只是指牧场主中的UI支持吗?
- 牧场主是否使用了不同版本的万岁云运营商,该运营商已缩小规模且不具备所有功能?
- “乱序输入”可能是由 fluentbit 配置引起的,还是 loki 方面的问题?
我的集群输出如下所示(取自 banzaicloud 文档):
amazon-ec2 - Docker 容器未使用 loki 日志驱动程序记录到 loki
我正在尝试在 AWS ec2 主机上的 docker 容器中使用 loki 日志驱动程序。下面的配置在我自己的 ubuntu 20.04 机器上运行良好,但在 ubuntu 16.04 ec2 主机上运行良好。iptables 有一个环回规则和 loki 的相应 docker 端口:3100。我什至在安全组中打开了那个端口。码头工人版本是 20.10.2。
我尝试使用 localhost:3100,主机名:3100,也是 docker 容器名称。我有一个桥接网络,不想使用主机网络。我也不想使用容器 IP 地址。
这个 SO 问题中的任何内容都不适合我。如何从 docker 容器访问主机端口
这是我的docker-compose.yaml
,它适用于我的本地机器,但不适用于 ec2。
工具容器是一个 go html 服务器。工具和 loki 容器位于同一主机上。
我可以使用 curl 将日志从 alpine 容器发布到 URL http://loki:3100/loki/api/v1/push,但不能从我的工具容器中发布。我可以用 telnet 连接,但 curl 超时。
这是我的洛基docker-compose.yaml
安装了 docker 插件
sudo journalctl -u docker.service | grep loki
给我这个错误。
jenkins - Loki 不收集短寿命 pod 的日志
我正在 k8s 集群中试验 jenkins。我的环境是 minikube。
我在 ubuntu 中设置了一个独立的 jenkins 服务器,然后我使用k8s 插件来启动从属 pod 以进行作业。有时当我配置错误时,pod 的寿命很短。这些 pod 只存在几秒钟,有日志,但是当 pod 消失时它们就会消失。
我尝试使用 loki grafana收集日志进行分析。我使用loki-stack在 k8s 集群中安装了 loki 。通过一些调整,loki-grafana 可以工作。我可以看到 grafana 中大多数 pod 的日志,除了由 jenkins 启动的那些。
我的问题是,是否可以收集那些短命豆荚的日志?有什么我需要配置的吗?还是根本不可能?
prometheus - 如何在 Grafana 仪表板上显示标签值?
我正在使用 Loki (Promtail) 来收集日志。我需要的信息按每三行分组(它们的时间戳相同)。
日志示例: 2021 年 1 月 1 日上午
10:01:23 内存2021 年 1 月 1 日
上午 10:01:23 2300 Mb
2021 年 1 月 1 日上午 10:01:23 23% 2021 年 1 月 1 日
10:01:上午 13 点内存2021 年 1 月 1 日上午
10:01:13 2310 Mb
...
我已经可以捕获这些标签的值:timestamp、metric、available_memory_mb 和 available_memory_percent - 我可以从第一行获取 timestamp 和 metric,从第二行获取 timestamp 和 available_memory_mb,并从第三行获取 timestamp 和 available_memory_percent。
有没有办法让我在 Grafana 仪表板上使用相同的时间戳(如图例)放置指标、available_memory_mb 和 available_memory_percent?谢谢!