golang 獲取 prometheus數據

news/2024/5/19 0:57:18 标签: golang, prometheus, 开发语言

使用github上的一個庫

1.安裝庫

go get github.com/prometheus/client_golang

2.導入

在import中導入,記得要在go.mod中更新一下

------------------------------------------------------------------------------------

Address: "http://xx.xx.xx:9090", 用你的prometheus的地址

    result, warnings, err := v1api.Query(ctx, "node_cpu_info{instance=\"computer1\"}", time.Now(), proV1.WithTimeout(15*time.Second)) 這邊的用你的PROMQL查詢語句

可以參考https://prometheus.io/docs/prometheus/latest/querying/api/

package main

import (
	"context"
	"fmt"
	"time"

	"github.com/prometheus/client_golang/api"
	proV1 "github.com/prometheus/client_golang/api/prometheus/v1"
	"github.com/prometheus/common/model"
)

var Client api.Client

func init() {
	Client, _ = CreatClient()
}

func CreatClient() (client api.Client, err error) {
	client, err = api.NewClient(api.Config{
		Address: "http://xx.xx.xx:9090",
	})
	if err != nil {
		fmt.Printf("Error creating client: %v\n", err)
		return nil, err
	}
	return client, nil
}

func Query() (result model.Value, err error) {
	v1api := proV1.NewAPI(Client)
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()

	result, warnings, err := v1api.Query(ctx, "node_cpu_info{instance=\"computer1\"}", time.Now(), proV1.WithTimeout(15*time.Second))

	if err != nil {
		return nil, err
	}
	if len(warnings) > 0 {
		fmt.Printf("Warnings: %v\n", warnings)
	}
	return result, nil
}


func main() {
	result, err := Label()
	if err != nil {
		fmt.Errorf("%q", err)
	}
	fmt.Printf("Result:\n%v\n", result)
}


http://www.niftyadmin.cn/n/5085187.html

相关文章

同城跑腿微信小程序源码系统完整搭建教程

今天给大家分享一个同城跑腿微信小程序源码系统的完整搭建教程,源代码全部开源,可二次开发,搭建起来也比较简单。 系统具体功能一览: 地图定位:用户可以通过地图定位找到附近的跑腿服务商,方便快捷。在线下…

[MT8766][Android12] 修改WIFI热点默认名称、密码、IP地址以及默认开启热点

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: MTK8766 版本: Android 12 kernel: msm-4.19 问题描述 最近做了一款没有屏幕显示的智能盒子,要想操控这款设备就只能通过adb投屏,如果默认不允许有线连接,那么要怎么实…

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理)

目录 Bootstrap之Modal: 显示和隐藏方法 通过自定义属性: 使用JS来控制弹框: Bootstrap之Toast: 接口文档一些用法: 删除图书: 图片上传: 图片上传步骤: 修改头像&#xf…

电子元器件选型(二):产品生命周期管理

一、产品生命周期简介 产品生命周期(Product Life Cycle),指产品从准备进入市场开始到被淘汰退出市场为止的全部运动过程,是由需求与技术的生产周期所决定,也即在市场流通过程中,由于消费者的需求变化以及影…

SELECT COUNT(*)会不会导致全表扫描引起慢查询

SELECT COUNT(*)会不会导致全表扫描引起慢查询呢? SELECT COUNT(*) FROM SomeTable 网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小的辅助索引查询计数,其实反而性能最高&…

vscode - 环境准备 - 修改缓存路径

说明 在window上使用vscode,其默认的缓存(包含代码缓存,插件等)存储路径是在c盘,即使将vscode安装在其它磁盘。频繁使用vscode,vscode会占用C盘大量磁盘空间,C盘空间不充裕,会被vsc…

流锡槽焊盘C型焊盘功能详述

🏡《总目录》 目录 1,概述2,什么是流锡槽焊盘3,流锡槽焊盘功能3.1,避免堵孔3.2,二次焊接3.3,透锡率3.4,节约成本3.5,工艺与质量4,总结1,概述 流锡槽焊盘是在接插件焊接中经常使用到的焊盘,又被称为C型焊盘或者开槽焊盘,本文详述流锡槽焊盘的特点和优势。 2,什么…

【广州华锐互动】车辆零部件检修AR远程指导系统有效提高维修效率和准确性

在快速发展的科技时代,我们的生活和工作方式正在被重新定义。这种变化在许多领域都有所体现,尤其是在汽车维修行业。近年来,AR(增强现实)技术的进步为这个行业带来了前所未有的可能性。通过将AR技术与远程协助系统相结…