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

调用Loki push接口报错:已配置标签仍提示每个流至少需要一对标签

问题原因
  • 你使用的是Loki 2.3及以上版本,该版本的/loki/api/v1/push接口要求streams下的labels字段必须为符合Prometheus标签规则的字符串格式,而非你当前使用的JSON对象格式,这是触发报错的核心原因。
  • 部分shell环境下,curl命令内直接拼接的JSON字符串存在引号转义异常问题,也会导致Loki接收到的labels字段为空,无法识别到你配置的job标签。
解决方案

方案一:直接修改curl命令的labels格式

将labels字段的值从JSON对象改为标签字符串格式,转义内部双引号即可,调整后的命令如下:

curl -i -H "Content-type: application/json" -X POST --data '{ "streams": [ { "labels": "{job=\"randomjob\"}", "entries": [{ "ts": "2021-10-12T16:13:06.801064Z", "line": "TEST!" }] } ] }' http://localhost:3100/loki/api/v1/push

方案二:通过文件传参避免转义问题

如果修改格式后仍存在转义异常,可以把请求体存入单独的JSON文件,再通过curl加载文件发送请求。

  1. 新建payload.json文件,写入以下内容:
{
  "streams": [
    {
      "labels": "{job=\"randomjob\"}",
      "entries": [
        {
          "ts": "2021-10-12T16:13:06.801064Z",
          "line": "TEST!"
        }
      ]
    }
  ]
}
  1. 执行curl命令加载文件发送请求:
curl -i -H "Content-type: application/json" -X POST --data @payload.json http://localhost:3100/loki/api/v1/push

请求执行成功会返回204 No Content响应,此时你可以在Grafana的Loki数据源中通过{job="randomjob"}查询到对应的测试日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:36:01