Posted in

Go代理配置被墙?3种合规穿透方案(含企业防火墙白名单备案模板)

第一章:Go代理配置被墙?3种合规穿透方案(含企业防火墙白名单备案模板)

当企业内网环境受限于网络监管策略时,go getGOPROXY 无法直连 proxy.golang.orggocenter.io 等公共代理,导致模块拉取失败。以下三种方案均符合《网络安全法》及企业IT治理规范,无需绕过安全审计,支持防火墙白名单备案与日志溯源。

使用国内可信镜像代理

清华、中科大、七牛等高校及云服务商提供的 Go 模块镜像已通过国家网信办备案,可安全启用:

# 全局设置(推荐在 $HOME/.bashrc 或 $HOME/.zshrc 中持久化)
export GOPROXY="https://mirrors.tuna.tsinghua.edu.cn/goproxy/,https://goproxy.cn,direct"
export GOSUMDB="sum.golang.org"

注:direct 作为兜底策略,仅在镜像不可用时尝试直连;GOSUMDB 保持官方校验源以保障模块完整性。

部署私有 Go Proxy(Athens)

适用于中大型企业,支持审计日志、缓存策略与访问控制:

# 启动轻量版 Athens(Docker 方式)
docker run -d \
  --name athens \
  -p 3000:3000 \
  -v $(pwd)/athens-storage:/var/lib/athens \
  -e ATHENS_DISK_STORAGE_ROOT=/var/lib/athens \
  -e ATHENS_GO_BINARY_PATH=/usr/local/go/bin/go \
  quay.io/gomods/athens:v0.18.0

配置 GOPROXY=http://<your-athens-host>:3000 即可接入,所有请求自动缓存并记录至 /var/lib/athens/logs

申请企业防火墙白名单备案

向IT安全部门提交《Go模块代理服务白名单申请表》,需包含以下字段:

字段名 示例值
服务域名 mirrors.tuna.tsinghua.edu.cn
IP地址段 101.6.64.0/20(清华镜像实际出口IP)
用途说明 Go语言模块依赖拉取,符合SBOM生成要求
合规依据 《GB/T 35273-2020 信息安全技术》第7.3条

备案通过后,网络策略组将开放对应出向HTTPS(443)端口,并纳入SIEM系统统一监控。

第二章:Go模块代理机制深度解析与本地环境验证

2.1 Go Proxy协议原理与GOPROXY环境变量行为剖析

Go Proxy 协议是 Go 模块生态的核心分发机制,基于 HTTP GET 请求按 /{prefix}/@v/{version}.info 等路径语义提供模块元数据与归档。

协议请求路径语义

  • GET /github.com/go-sql-driver/mysql/@v/v1.14.0.info → 返回 JSON 元信息(时间、版本、校验和)
  • GET /github.com/go-sql-driver/mysql/@v/v1.14.0.mod → 返回 go.mod 内容
  • GET /github.com/go-sql-driver/mysql/@v/v1.14.0.zip → 返回压缩包(含源码)

GOPROXY 环境变量行为优先级

行为
https://proxy.golang.org,direct 先查代理,失败则直连 module server(需网络可达)
off 完全禁用代理,强制使用本地缓存或 direct 模式
https://goproxy.cn,https://proxy.golang.org 顺序尝试,首个成功响应即终止
# 示例:启用国内镜像并 fallback 至官方代理
export GOPROXY="https://goproxy.cn,https://proxy.golang.org,direct"

该配置使 go get 首先向 goproxy.cn 发起 GET /golang.org/x/net/@v/v0.25.0.info 请求;若返回 404 或超时,则继续尝试下一地址。direct 作为最终兜底,不走 HTTP,而是直接克隆 Git 仓库(要求 git 可用且模块支持 vcs 协议)。

graph TD
    A[go get github.com/user/pkg] --> B{GOPROXY?}
    B -->|https://goproxy.cn| C[HTTP GET /@v/latest.info]
    B -->|direct| D[Git clone over HTTPS/SSH]
    C --> E[解析 version → fetch .zip]

2.2 go env输出解读与代理链路诊断实战(go list -m -json all)

go env 输出是 Go 构建环境的“数字指纹”,其中 GOPROXYGOSUMDBGONOPROXY 共同构成模块拉取的信任与路由策略。

关键字段语义解析

  • GOPROXY: 模块代理链,支持逗号分隔的多级 fallback(如 https://goproxy.cn,direct
  • GONOPROXY: 跳过代理的私有域名白名单(正则支持,如 *.corp.example.com,192.168.0.0/16
  • GOSUMDB: 校验和数据库,off 表示禁用校验(不推荐)

代理链路验证命令

# 获取所有依赖模块的完整元信息(含来源 URL、版本、校验和)
go list -m -json all 2>/dev/null | jq 'select(.Replace == null) | {Path, Version, Origin: .Origin.URL}'

此命令过滤掉 replace 替换项,聚焦真实远端源;Origin.URL 直接暴露实际拉取地址,可比对是否命中预期代理(如 https://goproxy.cn/github.com/gorilla/mux/@v/v1.8.0.mod)。

常见代理失效场景对照表

现象 可能原因 验证方式
go get 超时但 curl -I https://goproxy.cn 成功 GONOPROXY 误配导致直连失败 go env GONOPROXY + go list -m -f '{{.Path}} {{.Origin.URL}}' github.com/private/repo
sum.golang.org 连接拒绝 GOSUMDB=off 未设或 GOPROXY 未包含 sum.golang.org 兜底 go env GOSUMDB GOPROXY
graph TD
    A[go list -m -json all] --> B{解析 Origin.URL}
    B --> C[匹配 GOPROXY 规则]
    B --> D[检查 GONOPROXY 排除]
    C --> E[命中代理?→ 查看响应头 X-From]
    D --> F[强制直连?→ curl -v URL]

2.3 代理失效典型场景复现:403/timeout/invalid checksum错误归因

常见触发链路

代理失效并非孤立事件,常由下游服务策略变更、网络中间件拦截或校验逻辑升级引发。以下三类错误最具代表性:

  • 403 Forbidden:上游网关校验 X-Forwarded-ForAuthorization 头缺失/篡改
  • Timeout:代理未启用连接池复用,高并发下 TCP 握手耗尽超时(默认 30s
  • Invalid checksum:响应体经 gzip 压缩后,代理未同步更新 Content-EncodingContent-MD5

校验失败复现实例

# 模拟代理透传压缩但遗漏头字段
curl -H "Accept-Encoding: gzip" \
     -H "X-Api-Version: v2" \
     http://proxy/api/data | gunzip 2>/dev/null || echo "checksum mismatch"

此命令触发 invalid checksum:代理转发时未移除 Content-Encoding: gzip,但实际响应体未压缩(或压缩后未重算 Content-MD5),客户端解压失败。

错误归因对照表

错误类型 根本原因 关键日志特征
403 Authorization 被代理剥离 auth header missing
Timeout keepalive_timeout 5s 配置过短 upstream timed out
Invalid checksum Content-MD5 与 body 不匹配 digest verification failed

数据同步机制

graph TD
    A[Client] -->|Request with gzip| B(Proxy)
    B -->|Strips Accept-Encoding| C[Origin Server]
    C -->|Plain response| B
    B -->|FORWARDS gzip header + plain body| A
    A -->|gunzip fails| D[Invalid checksum]

2.4 本地搭建goproxy.io兼容代理服务(gin+fs cache)并注入CA证书

使用 Gin 框架构建轻量级 Go module 代理服务,兼容 GOPROXY 协议规范,支持 fs 后端缓存与 HTTPS 中间人拦截。

核心依赖配置

// main.go
func main() {
    proxy := goproxy.NewProxy()
    proxy.Cache = fs.New("/var/cache/goproxy") // 本地文件系统缓存路径
    proxy.TrustedCAs = x509.NewCertPool()
    ca, _ := os.ReadFile("ca.crt")
    proxy.TrustedCAs.AppendCertsFromPEM(ca) // 注入自签名 CA 供 client trust
    http.ListenAndServe("127.0.0.1:8080", proxy)
}

此代码初始化代理实例:fs.New() 启用持久化缓存;TrustedCAs 赋值使客户端可验证代理签发的模块 TLS 证书。

证书注入流程

graph TD
    A[生成自签名 CA] --> B[启动代理时加载 ca.crt]
    B --> C[对每个 module 请求动态签发域名证书]
    C --> D[Go client 验证时信任该 CA]

关键参数说明

参数 作用 示例值
Cache 模块归档缓存后端 fs.New("/tmp/goproxy")
TrustedCAs 客户端需信任的根证书池 x509.NewCertPool()

启用后,执行 export GOPROXY=http://127.0.0.1:8080 即可本地加速拉取模块。

2.5 使用go proxy verify工具链验证代理响应合规性与签名完整性

go proxy verify 是 Go 1.21+ 引入的官方验证工具,用于校验模块代理(如 proxy.golang.org)返回的 .info.mod.zip 响应是否符合Go Module Authenticity Protocol规范,并验证其 @v/v1.2.3.mod 对应的 go.sum 签名完整性。

验证流程概览

graph TD
    A[发起 go get] --> B[代理返回 .mod/.info/.zip]
    B --> C[go proxy verify 提取透明日志签名]
    C --> D[核验 cosign 签名 + Rekor 签名时间戳]
    D --> E[比对 go.sum 中 checksum 与本地重算值]

快速验证示例

# 验证特定模块版本在指定代理下的全链路合规性
go proxy verify \
  --proxy https://proxy.golang.org \
  --module github.com/gorilla/mux@v1.8.0
  • --proxy:指定待测代理地址(支持自建私有代理)
  • --module:格式为 path@version,自动拉取并校验 .info/.mod/.zip 三元组
  • 工具会输出 ✅ Signed, ✅ Checksum match, ✅ Timestamped in Rekor 等逐项结果

验证失败常见原因

  • 代理未启用 X-Go-Mod-Authority 头(缺失模块权威声明)
  • .mod 文件被篡改导致 checksum 不匹配
  • 透明日志签名证书链不可信(如使用测试 CA)
检查项 合规要求
X-Go-Mod-Signature 必须存在且为有效 cosign v2 签名
X-Go-Mod-Timestamp 必须早于模块发布日期且由可信日志签发
.zip 校验和 必须与 go.sumh1: 行完全一致

第三章:企业级合规代理接入方案设计

3.1 基于私有Go Proxy网关的HTTPS双向认证架构(mTLS + OIDC)

核心组件协同流程

graph TD
    A[客户端] -->|mTLS握手+ID Token| B(私有Go Proxy网关)
    B --> C{证书校验 & OIDC introspect}
    C -->|通过| D[转发至内部Go模块]
    C -->|失败| E[401 Unauthorized]

认证策略分层校验

  • 第一层(传输层):强制客户端提供由内网CA签发的X.509证书,网关验证签名、有效期与CN/SAN字段;
  • 第二层(应用层):提取请求头中 Authorization: Bearer <id_token>,调用OIDC Provider /introspect 接口实时验证令牌有效性与scope权限。

Go Proxy关键配置片段

// 启用mTLS并集成OIDC验证中间件
srv := &http.Server{
    Addr: ":8443",
    TLSConfig: &tls.Config{
        ClientAuth: tls.RequireAndVerifyClientCert,
        ClientCAs:  caPool, // 内网根CA证书池
    },
}
// OIDC验证逻辑嵌入HTTP Handler链
http.Handle("/v1/", oidcMiddleware(http.HandlerFunc(proxyHandler)))

ClientAuth: tls.RequireAndVerifyClientCert 强制双向证书交换;caPool 必须预加载私有CA证书,确保仅信任内网签发的客户端证书。OIDC中间件在TLS会话建立后解析JWT,并校验issaudexp字段。

3.2 代理流量审计日志规范(RFC5424格式)与SIEM系统对接实践

RFC5424核心字段映射

代理设备需严格遵循结构化时间戳、PRI值、APP-NAME、MSGID等字段。关键扩展为Structured-Data中嵌入[proxy@12345 action="CONNECT" src_ip="192.0.2.10" dst_host="example.com" duration="42"]

日志转发配置示例

# rsyslog.conf 片段:启用TCP传输+TLS加密+RFC5424模板
template(name="ProxyRFC5424" type="string" 
  string="<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% [proxy@12345 src_ip=\"%fromhost-ip%\" method=\"%msg-field:2:8%\" url=\"%msg-field:3:256%\"] %msg%\n")
*.* @@siem.example.com:6514;ProxyRFC5424

逻辑分析:%PRI%动态计算设施/严重级;%msg-field:2:8%提取原始日志第2字段(HTTP方法),长度限8字节防截断;@@表示TCP+自动重连,确保审计链路可靠性。

SIEM解析规则适配

字段名 SIEM提取方式 用途
src_ip JSON Path: $.sd.proxy@12345.src_ip 关联威胁情报
url Regex: ^https?://([^/]+) 归一化域名分析

数据同步机制

graph TD
    A[代理网关] -->|RFC5424 over TLS| B(SIEM Syslog Collector)
    B --> C{Parser Engine}
    C --> D[字段解构 & SD解析]
    C --> E[GeoIP/Threat Intel enrichment]
    D --> F[归档至Elasticsearch索引 proxy-audit-*]

3.3 企业防火墙白名单备案模板(含URL路径粒度、证书指纹、IP段备案说明)

白名单备案核心维度

需同时满足三类精准标识:

  • URL路径粒度:支持 https://api.example.com/v2/users/{id} 级别备案,拒绝通配符泛化;
  • 证书指纹:强制登记 SHA-256 指纹(非域名或CN),防范中间人劫持;
  • IP段备案:仅接受 CIDR 格式(如 192.0.2.0/24),禁用 - 范围表示法。

示例备案表单(JSON)

{
  "service_name": "支付网关",
  "urls": ["https://pay.corp.com/api/submit"],
  "cert_fingerprints": ["A1:B2:...:F0"], // SHA-256, 冒号分隔十六进制
  "ip_cidrs": ["203.0.113.0/24"]
}

逻辑分析:cert_fingerprints 字段规避证书轮换导致的误拦截;urls 数组支持多端点,但每个 URL 必须含完整路径(不含 query 参数),确保策略可审计。

备案校验流程

graph TD
  A[提交备案] --> B{URL路径正则校验}
  B -->|通过| C[证书指纹在线验证]
  B -->|失败| D[拒绝入库]
  C -->|有效| E[IP段CIDR语法检查]
  E -->|合规| F[写入防火墙策略库]
字段 校验方式 严格性
URL路径 正则 ^https?://[a-zA-Z0-9.-]+(:[0-9]+)?(/[^?#]*)?$
证书指纹 TLS握手获取并比对实时指纹 最高
IP段 ipaddress.ip_network() 解析

第四章:多场景穿透策略与安全加固实施

4.1 透明代理模式:iptables + squid实现无客户端配置的Go模块劫持

透明代理绕过 GOPROXY 环境变量依赖,使所有 go get 请求静默重定向至内网镜像服务。

核心原理

  • iptablesPREROUTING 链捕获目标为 proxy.golang.org/goproxy.io 的出站 HTTPS 流量
  • 通过 REDIRECT 将其转至本地 Squid 监听端口(如 3128
  • Squid 配置 ssl_bump + acl 规则,动态重写 Host 头并转发至私有 Go 代理(如 goproxy.local

iptables 规则示例

# 拦截所有发往公共 Go 代理的 TLS 握手(SNI 匹配)
iptables -t nat -A PREROUTING -p tcp --dport 443 \
  -m string --string "proxy.golang.org" --algo bm \
  -j REDIRECT --to-port 3128

此规则基于应用层字符串匹配(--algo bm),在连接建立前识别 SNI 域名;需启用 nf_conntrackxt_string 内核模块。注意:仅适用于未加密 SNI(即无 ESNI/ECH)的旧版 TLS 客户端。

Squid 关键配置片段

指令 说明
http_port 3128 intercept 启用透明拦截模式
ssl_bump splice all 对非劫持域名直通,避免证书错误
request_header_replace Host goproxy.local 强制替换 Host 头,导向私有代理
graph TD
  A[go get example.com/pkg] --> B[iptables PREROUTING]
  B -->|REDIRECT to :3128| C[Squid]
  C -->|rewrite Host| D[goproxy.local]
  D --> E[返回缓存/代理模块]

4.2 Go 1.21+内置支持的GOPRIVATE+GONOSUMDB协同绕过方案

Go 1.21 起,go 命令原生强化了私有模块代理与校验跳过的协同逻辑,无需额外工具即可安全绕过公共校验链。

核心环境变量协同机制

  • GOPRIVATE=git.example.com/internal:声明匹配域名的模块为私有,自动禁用 proxy 和 sumdb 查询
  • GONOSUMDB=git.example.com/internal:显式跳过校验,但仅当模块已由 GOPRIVATE 标记时才生效(避免误伤)

配置示例与验证

# 一次性设置(推荐写入 ~/.zshrc 或 ~/.bashrc)
export GOPRIVATE="git.example.com/internal,github.com/myorg/*"
export GONOSUMDB="$GOPRIVATE"

✅ 逻辑分析:GONOSUMDB 继承 GOPRIVATE 值,确保语义一致;* 通配符在 Go 1.21+ 中被完整支持,匹配子路径如 github.com/myorg/cli/v2

协同生效流程(mermaid)

graph TD
    A[go get github.com/myorg/lib] --> B{匹配 GOPRIVATE?}
    B -->|是| C[跳过 proxy.golang.org]
    B -->|是| D[跳过 sum.golang.org 校验]
    C --> E[直连 git.example.com 获取源码]
    D --> E
变量 是否必需 作用范围
GOPRIVATE ✅ 必需 触发私有模块识别与策略开关
GONOSUMDB ⚠️ 推荐 显式加固校验跳过(防配置漂移)

4.3 代理降级策略:fallback链式代理配置与健康检查自动切换(go mod download -v)

GOPROXY 主代理不可用时,Go 工具链支持多级 fallback 代理链,配合 -v 可观测实际请求路径。

链式代理配置示例

export GOPROXY="https://proxy.golang.org,direct"
# 或启用健康检查的多级 fallback
export GOPROXY="https://goproxy.cn,https://proxy.golang.org,direct"

GOPROXY 值为逗号分隔列表,Go 按序尝试,首个返回 HTTP 2xx 的代理即被采用;direct 表示直连模块源(需网络可达)。

健康检查机制

Go 1.18+ 内置轻量级健康探测:对每个代理发起 HEAD /health 请求(若支持),失败则跳过。未响应或超时(默认 3s)自动降级至下一节点。

代理类型 健康检测端点 超时 降级条件
goproxy.cn /health 3s HTTP ≠ 2xx 或 TCP 连接失败
proxy.golang.org 不提供 仅依赖 HTTP 状态码

请求流转逻辑

graph TD
    A[go mod download] --> B{尝试 proxy1}
    B -- 2xx --> C[成功下载]
    B -- 失败 --> D{尝试 proxy2}
    D -- 2xx --> C
    D -- 失败 --> E[回退 direct]

4.4 TLS证书钉扎(Certificate Pinning)在Go代理客户端的实现与风险规避

证书钉扎通过将预期证书或公钥哈希硬编码到客户端,防止中间人攻击绕过常规CA信任链。

实现原理

Go 中需自定义 http.Transport.TLSClientConfig.VerifyPeerCertificate 回调,校验服务端证书指纹是否匹配预置值。

安全校验代码示例

func pinCertificate(transport *http.Transport, expectedSPKI string) {
    transport.TLSClientConfig = &tls.Config{
        InsecureSkipVerify: false,
        VerifyPeerCertificate: func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error {
            if len(rawCerts) == 0 {
                return errors.New("no server certificate received")
            }
            cert, err := x509.ParseCertificate(rawCerts[0])
            if err != nil {
                return err
            }
            spkiHash := sha256.Sum256(cert.RawSubjectPublicKeyInfo)
            if hex.EncodeToString(spkiHash[:]) != expectedSPKI {
                return fmt.Errorf("certificate SPKI pin mismatch")
            }
            return nil // 继续标准链验证
        },
    }
}

该函数注入自定义校验逻辑:解析首张证书,提取 RawSubjectPublicKeyInfo 并计算 SHA-256 哈希;仅当与预置 expectedSPKI 完全一致才放行。InsecureSkipVerify 保持 false,确保仍执行完整证书链校验。

风险规避要点

  • ✅ 使用 SPKI 哈希(非整个证书),避免因有效期/签名变动导致失效
  • ❌ 禁止硬编码明文证书——易被逆向提取
  • ⚠️ 必须配置备用钉扎(如多哈希、服务端轮转支持)
钉扎类型 抗攻击能力 运维成本 适用场景
SPKI 哈希 高(防CA妥协) 主流API客户端
证书哈希 中(受有效期制约) 临时调试
域名绑定公钥 极高(需配合DANE) 极高 金融级网关
graph TD
    A[发起HTTPS请求] --> B{Transport 执行TLS握手}
    B --> C[收到服务器证书链]
    C --> D[调用 VerifyPeerCertificate]
    D --> E{SPKI哈希匹配?}
    E -->|是| F[继续标准X.509链验证]
    E -->|否| G[拒绝连接并报错]

第五章:总结与展望

核心成果回顾

在本系列实践项目中,我们完成了基于 Kubernetes 的微服务可观测性平台落地:集成 Prometheus + Grafana 实现 98.7% 的指标采集覆盖率;通过 OpenTelemetry SDK 在 Java/Go 双栈服务中统一注入追踪上下文,链路采样率稳定在 1:100;ELK 日志管道日均处理 24TB 结构化日志,错误日志平均定位耗时从 47 分钟降至 92 秒。某电商大促期间,该平台成功预警并定位了支付网关线程池耗尽故障,避免预估 320 万元订单损失。

技术债清单与优先级

问题项 当前状态 解决窗口期 影响范围
Envoy 访问日志未启用 structured JSON 待实施 Q3 2024 所有边缘服务
Grafana 告警规则未版本化管理 已部分完成 Q2 2024 核心监控组
Jaeger UI 替换为 Tempo + Loki 统一日志-追踪关联 PoC 验证中 Q4 2024 全链路分析团队

生产环境灰度策略

采用渐进式发布路径:

  1. 首批 3 个非核心服务(用户注册、短信模板、静态资源)接入新采集 Agent;
  2. 持续 7 天对比旧方案(Datadog)与新方案(OTel Collector)的 CPU 占用率、内存波动及指标延迟(P95
  3. 通过 Istio Sidecar 注入标签 observability-level=advanced 控制流量染色;
  4. 使用 Argo Rollouts 的 AnalysisTemplate 自动回滚——当连续 5 分钟错误率 > 0.8% 或 GC Pause 时间突增 300% 时触发。
# 示例:Argo Rollouts 分析模板片段
analysis:
  templates:
  - templateName: error-rate-check
    args:
    - name: service
      value: "payment-gateway"
  metrics:
  - name: http_errors_percent
    successCondition: result[0] < 0.5
    provider:
      prometheus:
        address: http://prometheus.monitoring.svc.cluster.local:9090
        query: |
          sum(rate(http_server_requests_seconds_count{status=~"5.."}[5m]))
          /
          sum(rate(http_server_requests_seconds_count[5m]))

跨团队协作机制

建立“可观测性 SLO 联席会”,每月由运维、SRE、业务研发三方共同评审关键服务的黄金指标:

  • 支付服务:P99 延迟 ≤ 800ms(当前实测 762ms)
  • 订单查询:可用性 ≥ 99.99%(当前 SLI 99.992%)
  • 库存扣减:事务成功率 ≥ 99.95%(当前 99.941%,已启动 Redis 分片扩容)

未来技术演进路径

graph LR
A[2024 Q3] --> B[AI 驱动异常根因推荐]
A --> C[eBPF 内核级指标采集覆盖网络层]
D[2025 Q1] --> E[多云环境统一遥测联邦]
D --> F[服务网格与 Serverless 混合架构适配]

成本优化实效数据

通过指标降采样策略(高频计数器保留原始粒度,低频事件聚合为 hourly bucket)与日志字段精简(移除 17 个非审计必需字段),单集群月度可观测性基础设施成本下降 41.3%,其中存储费用减少 68%,计算资源节省 29%。某区域节点集群在接入新压缩算法后,Loki 存储空间占用从 12.7TB 降至 4.1TB。

安全合规增强措施

所有采集组件强制启用 mTLS 双向认证,证书由 HashiCorp Vault 动态签发;Grafana 仪表盘权限按 RBAC 精确到命名空间级别;OpenTelemetry Collector 配置文件经 OPA 策略引擎校验,禁止明文凭证、禁用 insecure_skip_verify 等高危参数。某金融客户审计报告确认该方案满足 PCI DSS 4.1 条款要求。

开源贡献计划

已向 OpenTelemetry Collector 社区提交 PR#12889(Kubernetes Pod 标签自动注入增强),被 v0.102.0 版本合并;正在开发 Prometheus Exporter for TiDB 4.0+ 的慢查询分析插件,预计 2024 年底进入 CNCF Sandbox 孵化流程。

一线开发者,热爱写实用、接地气的技术笔记。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注