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

如何使用Go语言连接Grafana Loki并获取其存储的日志数据?

Go 语言拉取 Loki 日志开发入门

1. 开发切入点说明

你已经持有全部所需标签的前提下,核心开发路径分为三步:初始化客户端、构造查询参数、解析返回结果。优先选择 Loki 官方提供的 Go 语言 SDK 开发,无需自行处理签名、请求构造等底层逻辑,门槛最低。

2. 依赖准备

首先安装官方 SDK 依赖:
go get github.com/grafana/loki/pkg/logcli/client
如果不想引入第三方依赖,也可以直接调用 Loki 的原生 HTTP 接口 /loki/api/v1/query_range,用标准库 net/http 发送请求即可。

3. 最简可运行示例

package main

import (
	"context"
	"fmt"
	"time"

	"github.com/grafana/loki/pkg/logcli/client"
	"github.com/grafana/loki/pkg/loghttp"
	"github.com/grafana/loki/pkg/logproto"
)

func main() {
	// 初始化 Loki 客户端,替换为你实际的 Loki 服务地址
	lokiClient := &client.Client{
		Address: "http://127.0.0.1:3100",
		// 若服务开启 Basic 认证,补充下方配置
		// Username: "xxx",
		// Password: "xxx",
	}

	// 你已有的标签直接拼接为 LogQL 选择器,按实际标签替换即可
	logQLSelector := `{service="your-service", namespace="your-namespace", env="prod"}`
	// 配置查询时间范围,示例为查询最近1小时日志
	endTime := time.Now()
	startTime := endTime.Add(-1 * time.Hour)
	// 单次查询最大返回日志条数
	maxLimit := 100

	// 发起范围查询请求
	queryResp, err := lokiClient.QueryRange(
		context.TODO(),
		logQLSelector,
		maxLimit,
		startTime,
		endTime,
		logproto.FORWARD, // 按时间正序返回,填 logproto.BACKWARD 为倒序
		0, 0, false,
	)
	if err != nil {
		fmt.Printf("Loki 查询失败:%v\n", err)
		return
	}

	// 解析返回结果
	streamResult, ok := queryResp.Data.Result.(loghttp.Streams)
	if !ok {
		fmt.Println("返回结果格式不符合预期")
		return
	}

	// 遍历输出日志,可按业务需求自行处理存储、过滤逻辑
	for _, stream := range streamResult {
		fmt.Printf("\n===== 对应标签组:%s =====\n", stream.Labels.String())
		for _, entry := range stream.Entries {
			fmt.Printf("[%s] %s\n", entry.Timestamp.Format(time.RFC3339Nano), entry.Line)
		}
	}
}

4. 注意事项

  • 日志量较大的场景下,不要一次性拉取过长时间范围的日志,建议按分钟/小时分片拉取,避免请求超时或内存占用过高
  • 若需要对日志内容做过滤、字段解析,优先直接在 LogQL 中添加管道处理逻辑,比拉取到本地再处理效率高很多
  • 如果 Loki 服务配置了 API Token 认证,可以自行封装 HTTP 客户端,在请求头中添加 Authorization: Bearer <你的Token> 即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 08:45:06