使用Fluent Bit采集日志到Loki时自定义calculationId标签索引问题
配置错误说明
你的配置存在两个核心问题导致无法读取到calculationId标签:
- Kubernetes过滤器采集到的Pod标签默认存储在
kubernetes.labels.xxx层级下,直接引用$calculationId无法匹配到对应值 - 你配置了
RemoveKeys kubernetes,stream,会在输出到Loki前直接删除整个kubernetes字段,就算路径写对也拿不到标签值
解决方案
方案一:自动同步所有Pod标签到Loki索引(推荐)
开启K8s标签自动加载,无需手动指定单个标签,所有Pod标签都会自动同步为Loki索引标签,和你截图里app标签的展示逻辑完全一致:
[Output] Name grafana-loki Match * Url http://loki:3100/loki/api/v1/push TenantID "" BatchWait 1 BatchSize 1048576 Labels {job="fluent-bit"} # 仅删除stream字段,保留kubernetes字段用于读取标签 RemoveKeys stream # 开启K8s标签自动加载 AutoKubernetesLabels true LabelMapPath /fluent-bit/etc/labelmap.json LineFormat json LogLevel warn
方案二:仅添加calculationId为索引标签
如果你不需要同步所有Pod标签,只想单独添加calculationId作为索引标签,修改配置如下:
[Output] Name grafana-loki Match * Url http://loki:3100/loki/api/v1/push TenantID "" BatchWait 1 BatchSize 1048576 # 引用正确的标签层级路径 Labels {job="fluent-bit",calculationId="$kubernetes.labels.calculationId"} # 不要删除kubernetes字段 RemoveKeys stream AutoKubernetesLabels false LabelMapPath /fluent-bit/etc/labelmap.json LineFormat json LogLevel warn
生效验证
配置更新后重启Fluent Bit Pod加载新配置,新产生的日志就会携带calculationId标签,直接出现在Loki UI的标签筛选列表中。
内容的提问来源于stack exchange,提问作者bgarcial
相关产品推荐
相关产品推荐

