我想跟你核对一下:
我有这样的YAML清单,它是在我的应用程序发生事件时触发的:
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标签的值,并以这种方式将它作为参数传递给标签参数的集合:
[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。
任何帮助都将不胜感激。
发布于 2021-12-01 15:44:56
我通过将calculationId标签添加到kubernetes标签中,获得了JSON标签及其值,引用了JSON信息,并调用了kubernetes过滤器。您可以看到更多关于这个这里的信息。
因此,整个configmap/loki-fluent-bit-loki配置文件如下:
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堆栈附带的流畅位收集器代理,它的意思是这种安装方法。是时候强调这不是官方流利的位收集器,官方的一个是这。现在有一个请求表示反对的流畅位格拉法纳洛基栈有利于官方的一个,所以将是适当的突出这一点,并考虑使用官方的一个。
https://stackoverflow.com/questions/69913308
复制相似问题