V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coderth
V2EX  ›  问与答

小白求问:问个关于 Prometheus 指标统计的问题

  •  
  •   coderth · 345 天前 · 666 次点击
    这是一个创建于 345 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有个需求需要通过一些现有指标做一些逻辑判断,然后生成一个新的指标暴露出来类似下述的伪代码

    func GetGPUModel() []Metrics {
    	result := []Metrics{}
    	// 获取所有 Node
    	nodes := []string{"node1", "node2"}
    	for _, node := range nodes {
    		metrics := GetMetrics("DCGM_FI_DEV_MIG_MODE", map[string]string{
    			"node": node,
    		})
    		var isMig bool
    		for _, metric := range metrics {
    			//说明开启了 MIG ,当前节点 GPU 为 MIG 模式
    			if metric.Value == "1" {
    				isMig = true
    				break
    			}
    		}
    		// 如果节点有 GPU 开启了 MIG ,那么节点模式为 MIG 模式
    		if isMig {
    			result = append(result, Metrics{
    				Name:  "DCE_GPU_MODEL",
    				Value: "1", // 节点模式为 MIG 模式
    				Label: map[string]string{
    					"node": node,
    				},
    			})
    			continue
    		}
    		// 节点没有开启 MIG 模式,那么需要判断是否存在 vgpu 指标,如果存在说明是 VGPU 模式,不存在则是整卡模式
    		// 获取 VGPU 指标
    		vgpuMetrics := GetMetrics("nodeGPUOverview", map[string]string{
    			"node": node,
    		})
    		// 判断是否存在
    		if len(vgpuMetrics) != 0 {
    			// 如果存在则是 VGPU 模式
    			result = append(result, Metrics{
    				Name:  "DCE_GPU_MODEL",
    				Value: "2", // 节点模式为 VGPU 模式
    				Label: map[string]string{
    					"node": node,
    				},
    			})
    			continue
    		} else {
    			// 不存在则是整卡模式
    			result = append(result, Metrics{
    				Name:  "GPU_MODEL",
    				Value: "3", //节点模式为整卡模式
    				Label: map[string]string{
    					"node": node,
    				},
    			})
    		}
    	}
    	return result
    }
    

    这种需求的话有什么最佳事件吗.....小白求问

    简单研究了一下通过 Prometheus 的 rule 生成新的指标,但是貌似只能使用 promql ,promql 不知道是否能完成上述这种复杂的逻辑

    coderth
        1
    coderth  
    OP
       345 天前
    求助大佬!!!
    coderth
        2
    coderth  
    OP
       345 天前
    本来是想自研 exporter 组件来实现的,但是可能领导觉得为了几个指标做个 exporter 组件成本太高,所以想依赖 Prometheus 原生的能力,不知道是不是有办法实现
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2527 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:35 · PVG 09:35 · LAX 17:35 · JFK 20:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.