You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kubernetes部署LGTM Stack遇structured_metadata不允许错误

问题描述

在小型Kubernetes集群部署Grafana LGTM Stack(采用lgtm-distributed和k8s-mon Helm Chart)时,k8s-mon的Alloy日志守护进程持续抛出以下错误:

ts=2025-07-20T20:16:17.139426707Z level=error msg="final error sending batch" component_path=/ component_id=loki.write.loki component=client host=lgtm-loki-distributor.observability.svc.cluster.local:3100 status=400 tenant="" error="server returned HTTP status 400 Bad Request (400): 30 errors like: stream '{cluster="ionos-cluster", container="myTomcatService", job="test/myTomcatService", k8s_cluster_name="ionos-cluster", namespace="test", service_name="myTomcatService"}' includes structured metadata, but this feature is disallowed. Please see limits_config.structured_metadata or contact your Loki administrator to enable it."

已在lgtm-distributed的values.yaml中配置Loki的limits_config.allow_structured_metadata: true,但完全卸载重装Chart后,生成的lgtm-loki ConfigMap仍未包含该配置项,错误无法消除。

相关配置片段

lgtm-distributed values.yaml的Loki配置

loki:
  enabled: true
  structuredConfig:
    auth_enabled: false
    server:
      http_listen_port: 3100
    limits_config:
      retention_period: 2160h
      allow_structured_metadata: true
      volume_enabled: true
    pattern_ingester:
      enabled: true
    ruler:
      enable_api: true

k8s-mon values.yaml的目标配置

destinations:
  - name: loki
    type: loki
    url: http://lgtm-loki-distributor.observability.svc.cluster.local:3100/loki/api/v1/push

解决方案

1. 修正Loki配置的层级路径

lgtm-distributed Chart基于官方Loki Chart封装,部分版本中需通过loki.config而非loki.structuredConfig传递核心配置。修改Loki配置块如下:

loki:
  enabled: true
  config:
    auth_enabled: false
    server:
      http_listen_port: 3100
    limits_config:
      retention_period: 2160h
      allow_structured_metadata: true
      volume_enabled: true
    pattern_ingester:
      enabled: true
    ruler:
      enable_api: true

2. 添加全局默认租户的覆盖配置

即使关闭了认证,Loki仍可能默认使用租户级配置覆盖全局设置。在structuredConfig中补充默认租户的配置:

loki:
  structuredConfig:
    # 保留原有其他配置
    limits_config:
      allow_structured_metadata: true
    overrides:
      "": # 默认匿名租户
        allow_structured_metadata: true

3. 预验证Helm模板渲染结果

执行以下命令提前检查配置是否会被正确注入ConfigMap,避免重复卸载重装:

helm template lgtm grafana/lgtm-distributed -f lgtm-values.yaml -n observability | grep -A 20 "limits_config"

若输出中明确包含allow_structured_metadata: true,说明配置路径正确;否则需查阅Chart的官方values.schema.json确认字段位置。

4. 临时规避:禁用Alloy的结构化元数据发送

若上述配置调整无法快速生效,可修改k8s-mon的日志采集配置,禁用结构化元数据生成:

podLogs:
  enabled: true
  namespaces:
    - test
  pipelineStages:
    - labels:
        structured_metadata: false

内容的提问来源于stack exchange,提问作者user60108

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:44:50