首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用流畅位收集日志到loki -索引自定义标签

用流畅位收集日志到loki -索引自定义标签
EN

Stack Overflow用户
提问于 2021-11-10 12:31:08
回答 1查看 2.9K关注 0票数 0

我想跟你核对一下:

我有这样的YAML清单,它是在我的应用程序发生事件时触发的:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2021-11-10T12:13:46Z"
  generateName: job-1bb229b1-aa15-4349-b676-ad9cf840b44a-
  labels:
    app: CalculationPod
    calculationId: "1467"
    controller-uid: 75d707d6-aab6-446d-9726-7ffafde29191
    job-name: job-1bb229b1-aa15-4349-b676-ad9cf840b44a
  name: job-1bb229b1-aa15-4349-b676-ad9cf840b44a-h4pj

我正在使用fluent位(来自Loki堆栈)在我的k8s集群中收集日志。实际上,我想对我在豆荚中的calculationId: "1467"标签进行索引,以使它出现在grafana-Loki中,比如app:CalculationPod现在就在图片中:

这就是我在fluetbit configmap端的输出Loki插件配置:

我试图获得calculationId标签的值,并以这种方式将它作为参数传递给标签参数的集合:

代码语言:javascript
复制
[Output] 
        Name grafana-loki
        Match *
        Url http://loki:3100/loki/api/v1/push
        TenantID ""
        BatchWait 1
        BatchSize 1048576
        Labels {job="fluent-bit",calculationId="$calculationId"} # SEE HERE
        RemoveKeys kubernetes,stream
        AutoKubernetesLabels false
        LabelMapPath /fluent-bit/etc/labelmap.json
        LineFormat json
        LogLevel warn

但我看不出我的洛基界面有什么变化。我不确定这是否是添加要索引的新标签的正确方式,我正在检查这个https://docs.fluentbit.io/manual/pipeline/outputs/loki#labels

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-01 15:44:56

我通过将calculationId标签添加到kubernetes标签中,获得了JSON标签及其值,引用了JSON信息,并调用了kubernetes过滤器。您可以看到更多关于这个这里的信息。

因此,整个configmap/loki-fluent-bit-loki配置文件如下:

代码语言:javascript
复制
apiVersion: v1
data:
  fluent-bit.conf: |-
    [SERVICE]
        HTTP_Server    On
        HTTP_Listen    0.0.0.0
        HTTP_PORT      2020
        Flush          1
        Daemon         Off
        Log_Level      warn
        Parsers_File   parsers.conf
    [INPUT]
        Name           tail
        Tag            kube.*
        Path           /var/log/containers/*.log
        Parser         docker
        DB             /run/fluent-bit/flb_kube.db
        Mem_Buf_Limit  1000MB
    [FILTER]
        Name           kubernetes
        Match          kube.*
        Kube_URL       https://kubernetes.default.svc:443
        Merge_Log On
        K8S-Logging.Exclude Off
        K8S-Logging.Parser Off
    [Output]
        Name grafana-loki
        Match *
        Url http://loki:3100/loki/api/v1/push
        TenantID ""
        BatchWait 1
        BatchSize 1048576
        Labels {job="fluent-bit"}
        RemoveKeys kubernetes,stream
        AutoKubernetesLabels false
        LabelMapPath /fluent-bit/etc/labelmap.json
        LineFormat json
        LogLevel warn
  labelmap.json: |-
    {
      "kubernetes": {
        "container_name": "container",
        "host": "node",
        "labels": {
          "app": "app",
          "release": "release",
          "calculationId": "calculationId" # IT WAS ADDED HERE
        },
       "namespace_name": "namespace",
       "pod_name": "instance"
      },
      "stream": "stream"
    }
  parsers.conf: |-
    [PARSER]
        Name        docker
        Format      json
        Time_Key    time
        Time_Format %Y-%m-%dT%H:%M:%S.%L 
kind: ConfigMap
metadata:
  annotations:
    meta.helm.sh/release-name: loki
    meta.helm.sh/release-namespace: monitoring
  creationTimestamp: "2021-10-26T10:23:32Z"
  labels:
    app: fluent-bit-loki
    app.kubernetes.io/managed-by: Helm
    chart: fluent-bit-2.3.0
    heritage: Helm
    release: loki
  name: loki-fluent-bit-loki
  namespace: monitoring  

然后,我得到了索引的calculationId标签:

我没有尝试,但是根据loki流畅位输出插件的工作方式,LabelKeys参数还允许我添加像我的calculationId这样的自定义标签,并让它使用它来获取它的日志流。

The grafana loki文档说

LabelKeys:逗号分隔的键列表,用作流标签。所有其他键都将放置在日志行中。当使用LabelKeys标签映射配置时,LabelMapPath将被禁用。

因此,根据这一点,LabelKeys也应该工作,然后如果我使用它,我就不需要使用LabelMapPath参数来引用json所需的标签。

重要

我在这里使用的是随loki堆栈附带的流畅位收集器代理,它的意思是这种安装方法。是时候强调这不是官方流利的位收集器,官方的一个是。现在有一个请求表示反对的流畅位格拉法纳洛基栈有利于官方的一个,所以将是适当的突出这一点,并考虑使用官方的一个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69913308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档