首页 > 编程语言 >Thanos源码专题精讲——Thanos Sidecar release-0.26 源码阅读和分析

Thanos源码专题精讲——Thanos Sidecar release-0.26 源码阅读和分析

时间:2025-01-22 11:44:40浏览次数:1  
标签:status code return err 精讲 源码 Error Thanos

Thanos Sidecar release-0.26 源码阅读和分析

https://github.com/thanos-io/thanos/blob/release-0.26

一、整体架构

  Thanos Sidecar 作为 Prometheus 的伴生容器运行,主要负责:

    1. Prometheus 健康检查
    2. 提供 HTTP API 查询接口
    3. 提供 gRPC 查询服务
    4. 数据块上传到对象存储
    5. 最近数据(head chunks)的查询

二、源码分析

2.1、Prometheus 探活实现部分

https://github.com/thanos-io/thanos/blob/release-0.26/pkg/promclient/promclient.go

// 68行-73行
// Client represents a Prometheus API client.
type Client struct {
	HTTPClient
	userAgent string
	logger    log.Logger
}

……

// 654行-693行
// 健康检查实现
func (c *Client) get2xxResultWithGRPCErrors(ctx context.Context, spanName string, u *url.URL, data interface{}) error {
	span, ctx := tracing.StartSpan(ctx, spanName)
	defer span.Finish()

	body, code, err := c.req2xx(ctx, u, http.MethodGet)
	if err != nil {
		if code, exists := statusToCode[code]; exists && code != 0 {
			return status.Error(code, err.Error())
		}
		return status.Error(codes.Internal, err.Error())
	}

	if code == http.StatusNoContent {
		return nil
	}

	var m struct {
		Data   interface{} `json:"data"`
		Status string      `json:"status"`
		Error  string      `json:"error"`
	}

	if err = json.Unmarshal(body, &m); err != nil {
		return status.Error(codes.Internal, err.Error())
	}

	if m.Status != SUCCESS {
		code, exists := statusToCode[code]
		if !exists {
			return status.Error(codes.Internal, m.Error)
		}
		return status.Error(code, m.Error)
	}

	if err = json.Unmarshal(body, &data); err != nil {
		return status.Error(codes.Internal, err.Error())
	}

	return nil
}

 

  

 

 

标签:status,code,return,err,精讲,源码,Error,Thanos
From: https://www.cnblogs.com/zuoyang/p/18685455

相关文章

  • SPC统计过程管理系统(源码+文档+部署+讲解)
    引言在现代制造业中,统计过程控制(SPC)是确保产品质量和生产效率的关键。SPC统计过程管理系统作为一个创新的数字化解决方案,通过智能化管理和服务,提升了质量管理的效率和透明度。系统概述SPC统计过程管理系统采用前后端分离的架构设计,服务端基于MySQL5.7+、JDK1.8+和Redis......
  • 智慧菜场系统(源码+文档+部署+讲解)
    引言在现代快节奏的生活中,生鲜食品的供应链管理变得尤为重要。智慧菜场系统作为一个创新的数字化解决方案,通过智能化管理和服务,提升了生鲜供应链的效率和透明度。系统概述智慧菜场系统采用前后端分离的架构设计,服务端基于MySQL5.7+、JDK1.8+和Redis,前端则采用VUE2.6.1......
  • 数字水印系统(源码+文档+部署+讲解)
    引言在数字化时代,版权保护和品牌标识变得越来越重要。数字水印系统作为一个创新的数字化解决方案,通过智能化管理和服务,提升了版权保护和品牌标识的效率和可靠性。系统概述数字水印系统采用前后端分离的架构设计,服务端基于MySQL5.7+、JDK1.8+和Redis,前端则采用VUE2.6.1......
  • 计算机毕业设计—83613 SSM汽车租赁系统(源码免费领)
    摘要随着社会经济的快速发展,我国机动车保有量大幅增加,城市交通问题日益严重。为缓解用户停车难问题,本文设计并实现了汽车租赁系统通过错峰停车达到车位利用率最大化。基于现状分析,本文结合实际停车问题,从系统应用流程,系统软硬件设计和系统实现三方面进行详细阐述。该......
  • 批量检查微信小程序是否被封禁的 Go 源码接口
    本文展示了一个使用Go语言编写的示例,能够批量检查微信小程序是否被封禁。通过调用接口https://down.ychengsnsm.com/xcx/checkxcx.php?appid={appid},根据返回的code字段判断小程序的状态。若code为1,则表示小程序正常;若code为0,则表示小程序被封禁,并且封禁原因会......
  • PHP环保宣传网站-计算机毕业设计源码47654
    摘 要在当前环保意识日益提升的背景下,开发一款高效、实用的环保宣传网站显得尤为重要。该系统通过线上平台,广泛传播环保理念,提升公众对环保问题的认知,进而促进环保行动的积极参与,有效应对环保信息传播不畅和公众参与度不足等实际问题。经过深入的市场调研与需求分析,本文采......
  • Spring Boot框架大学生竞赛管理系统(源码+lw+部署文档+讲解等)
    大学生竞赛管理系统摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了大学生竞赛管理系统的开发全过程。通过分析大学生竞赛管理系统管理的不足,创建了一个计算机管理大学生竞赛管理系统的方案。文章介绍了大学生竞赛管理系......
  • 基于SSM的在线药品销售商城【附源码+文档】
    ......
  • 2025毕设springboot 基于的网上招聘系统的设计与实现论文+源码
    系统程序文件列表开题报告内容研究背景随着互联网技术的迅猛发展和普及,网络已经成为人们获取信息、交流互动的重要平台。在人力资源领域,传统的招聘方式逐渐暴露出效率低下、信息不对称等问题。而网上招聘系统作为一种新兴的招聘模式,凭借其便捷性、高效性和广泛性,正逐步取代......
  • 2025毕设springboot 基于的网上订餐系统的设计与实现论文+源码
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,人们的生活方式正发生着深刻的变化,特别是在餐饮消费领域,网上订餐已成为一种普遍现象。传统的餐饮消费模式往往需要消费者亲自前往餐厅点餐,不仅耗时费力,还受到地理位置和营业时间的限制。而基于互联网的网上订......