Promtail 代理未拾取(应用)自定义管道阶段

问题描述 投票:0回答:1

通过 Helm Chart 部署在本地 minikube 集群上的 Promtail 不应用 value.yaml 文件的配置部分中定义的自定义管道阶段。

我有一个简单的 loki 堆栈设置(loki + promtail + grafana),用于监控部署在本地 minikube 集群上。我通过每个组件的独立 helm 图表(loki + promtail + grafana)而不是通过专用的 locki-stack 图表来做到这一点,但我认为这对我的问题并不重要。

我有几个 .NET API 在同一个 minikube 集群中的不同 pod 中运行,这些 API 通过 Serilog 实现结构化日志记录,我想使用 Promtail 进行抓取,存储在 Loki 中,并在 Grafana 中进行可视化。以下是通过运行

kubectl logs <pod>
..net logs 在容器级别查看我的日志的方式 基本设置正在运行,Promtail 成功获取了我的日志,我可以在 Grafana grafana 中的日志 中看到它们。 这里的问题是 Promtail 没有正确解析日志,并且它没有从我的结构化日志格式(应用程序名称、环境等)中获取任何文件,正如您从 Grafana 屏幕截图中看到的那样。

我尝试通过覆盖 Promtail 图表的values.yaml 文件中的默认配置部分来添加一些自定义管道阶段来解析日志,但由于某种原因,我的尝试都没有改变任何内容,因为我的 json 阶段似乎没有被选中或由 Promtail 应用。这是我的 promtail 配置 yaml 文件:

config:
  snippets:
    pipelineStages:
    - json:
        expressions:
          log:
          streamTest: stream
          timeTest: time
    - json:
        expressions:
          Environment:
        source: log

正如您从grafana屏幕截图中看到的那样,甚至连 streamTesttimeTest 字段都没有被应用,尽管它们对我来说似乎是最容易解析的,因为流和时间字段甚至没有嵌套在发送的初始 json 对象中到格拉法纳。我已经在 pipelineStages: 部分测试了多个阶段,但似乎没有一个被应用,还尝试在 -json 阶段之前添加一个 -cri: 阶段,但它也没有任何效果。

我能够通过 Grafana 中的 LogQL 查询解析日志来获得我需要的结果:通过 LogQl 解析日志,但我真的很想学习和理解我在 Promtail 配置中做错了什么以及为什么我的自定义管道阶段不会被应用。 我很感谢所有的帮助和提示,因为我刚刚开始探索 Grafana 产品,而且我几乎是一个新手:)

logging monitoring grafana-loki promtail
1个回答
0
投票

您在 GUI 中的“Fields”下看到的实际上是管道配置中称为标签的东西(这是它自己的阶段)。您还需要 cri 阶段。我相信以下内容会满足您的要求:

config:
  snippets:
    pipelineStages:
    - cri: {}
    - json:
        expressions:
          log:
          streamTest: stream
          timeTest: time
    - json:
        expressions:
          Environment:
        source: log
    - labels:
        streamTest:
        timeTest:
        Environment:
© www.soinside.com 2019 - 2024. All rights reserved.