Prometheus metrics数据抓取解析

news2024/11/20 22:41:41

Prometheus node的监控数据如链接展示,我们希望能更加方便的看到监控数据,shodan对Prometheus metrics 的数据做了格式化处理。172.96.3.215:9100/metricsicon-default.png?t=N7T8http://172.96.3.215:9100/metrics

 本文我自己实现了一个命令行工具,可以输出类shodan数据格式监控数据。以下是代码示例

// ExtractMsg 提取信息
/*
  1.node_dmi_info
  2.node_exporter_build_info
  3.node_network_info
  4.node_os_info
  5.node_uname_info
  按照顺序从前到后寻找
*/
func ExtractMsg(resp string) {
	//(1)提取node_dmi_info信息的子串
	tmpindex := 0
	dmiResult, dmiEndindex := common(resp, "node_dmi_info{")
	tmpindex += dmiEndindex
	//(2)提取node_exporter_build_info信息的子串
	buildResult, buildEndindex := common(resp[tmpindex:], "node_exporter_build_info{")
	tmpindex += buildEndindex
	networkStartIndex := tmpindex
	//(3)提取node_os_info信息的子串
	osResult, osEndindex := common(resp[tmpindex:], "node_os_info{")
	tmpindex += osEndindex
	// 提取node_network_info信息的子串,特殊模块
	network(resp[networkStartIndex:], "node_network_info{")
	//(4)提取node_uname_info信息的子串
	unameResult, _ := common(resp[tmpindex:], "node_uname_info{")
	// 逐个序列化
	json.Unmarshal([]byte(dmiResult), &prometheus.NodeDmiInfo)
	json.Unmarshal([]byte(buildResult), &prometheus.NodeExporterBuildInfo)
	json.Unmarshal([]byte(osResult), &prometheus.NodeOsInfo)
	json.Unmarshal([]byte(unameResult), &prometheus.NodeUnameInfo)
}

// common 公共模块
func common(resp, findstr string) (result string, endIndex int) {
	startIndex := strings.Index(resp, findstr)
	// 找不到的情况
	if startIndex == -1 {
		return "", 0
	}
	endIndex = strings.Index(resp[startIndex:], "} 1")
	endIndex = endIndex + startIndex + 1
	// 提取子串的内容
	result = strings.ReplaceAll(resp[startIndex+len(findstr)-1:endIndex], "=", ":")
	re := regexp.MustCompile(`(\w+):([^,]+)`)
	result = re.ReplaceAllString(result, `"$1":$2`)
	return
}

// network 单独的网络模块
func network(resp, findstr string) {
	count := strings.Count(resp, findstr)
	prometheus.NodeNetworkInfo = make([]Response.NodeNetworkInfo, count)
	//找到第一个开始位置
	startIndex := strings.Index(resp, findstr)
	for i := 0; i < count; i++ {
		//找到结束位置
		endIndex := strings.Index(resp[startIndex:], "} 1")
		//算出结束位置
		endIndex = endIndex + startIndex + 1
		// 提取子串的内容
		result := strings.ReplaceAll(resp[startIndex+len(findstr)-1:endIndex], "=", ":")
		// 把多余的部分截掉,使其可以被反序列化为对象
		result = strings.TrimLeft(result, "nfo")
		// 正则并且加引号,使其称为JSON格式
		re := regexp.MustCompile(`(\w+):([^,]+)`)
		result = re.ReplaceAllString(result, `"$1":$2`)
		// 反序列化
		err := json.Unmarshal([]byte(result), &prometheus.NodeNetworkInfo[i])
		if err != nil {
			panic(err)
		}
		startIndex = endIndex
	}
}

效果如下:

 

 完整代码详见GitHub

FrankZhang63/Promethues: Promethues metrics 类shodan数据格式 (github.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1109018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STR时,android发生了什么(一)

在QA的基线中&#xff0c;触发android进入STR流程的方式是向qvm注入power key 按下松开的操作(对于单android的基线&#xff0c;我的理解方式应该也是相同的&#xff0c;都是模拟了power key的按下松开操作&#xff09;。 这个按键操作会通过virtio上报到VHAL层&#xff08;下…

用CSS+SVG做一个优雅的环形进度条

开门见山 先上最终效果图&#xff1a;&#xff08;Demo 传送门&#xff09; 其中进度、尺寸、环宽和颜色都可以非常方便地进行控制。 核心原理&#xff1a; 利用两个重叠的圆环形&#xff0c;通过对上层圆环弧长的控制来表示进度&#xff0c;下层圆环则作为辅助&#xff0c;…

59 分割等和子集

分割等和子集 NP 完全问题&#xff08;01背包&#xff09;题解1 二维DP题解2 空间优化DP&#xff08;改为1D&#xff09; 给你一个只包含正整数的非空数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&a…

Ubuntu - 安装Java 11

在Ubuntu上安装Java 11的最简单方法是通过使用OpenJDK 11。以下是安装Java 11的步骤&#xff1a; 打开终端。 更新包列表&#xff0c;以确保获取最新的软件信息&#xff1a; sudo apt update 安装OpenJDK 11&#xff1a; sudo apt install openjdk-11-jdk 安装后&#xf…

独家原创,改进的智能优化算法

↖加关注这种话银家怎么好意思说出口嘛-- 声明&#xff1a;对于作者的原创代码&#xff0c;禁止转售倒卖&#xff0c;违者必究&#xff01; 以下代码均为作者独家原创&#xff0c;大家可以拿走去水水论文。 有一些质量较高的代码&#xff0c;可以发一些高质量的期刊&#xff0c…

LoogArch 指令集学习

1 SoC_Lite片上系统结构 mycpu和dram、confreg之间有一个“一分二”部件。这是因为在LoongArch指令系统架构下&#xff0c;所有I/O设备的寄存器都是采用memory mapped方式访问的。我们这里实现的confreg也不例外。Memory mapped的访问方式意味I/O设备中的寄存器各自都有一个唯一…

【大数据】Kafka 入门简介

Kafka 入门简介 1.什么是 Kafka2.Kafka 的基本概念3.Kafka 分布式架构4.配置单机版 Kafka4.1 下载并解压包4.2 启动 Kafka4.3 创建 Topic4.4 向 Topic 中发送消息4.5 从 Topic 中消费消息 5.实验5.1 实验一&#xff1a;Python 实现生产者消费者5.2 实验二&#xff1a;消费组实现…

防蓝光护眼灯有用吗?教你认识防蓝光护眼台灯

要不是亲眼所见&#xff0c;真的很难想象一个台灯用处如此大&#xff0c;护眼效果非常明显。说起来很久没有用过护眼灯具了&#xff0c;这次用过之后有着明显的反差&#xff0c;如果能给孩子用&#xff0c;那将大大保障了孩子的用眼、护眼问题。我自己是用来睡前看书的&#xf…

Hadoop集群资源管理器-YARN

1.YARN 简介 Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。 2.YARN架构

欧科云链研究院:人类或将成为仅次于AI第二聪明物种?Web3不允许

出品&#xff5c;欧科云链研究院 在 AI行业“掘金买铲”的英伟达&#xff0c;60%的红杉投资在AI相关领域&#xff0c;之前只专注Web3的顶级VC&#xff0c;Paradigm 正在从转向人工智能等 "前沿 "技术。 资本的追逐让AI迷人且危险。 OKG RESEARCH IN FT AI教父Geoffre…

Docker 容器化(初学者的分享)

目录 一、什么是docker 二、docker的缺陷 三、简单的操作 一、首先配置一台虚拟机 二、安装Docker-CE 一、安装utils 二、 将 Docker 的软件源添加到 CentOS 的 yum 仓库中。这样可以通过 yum 命令来安装、更新和管理 Docker 相关的软件包。 三、将 download.docker.co…

苹果QQ聊天记录导出的3个方法你知道吗?

QQ功能强大、方便快捷&#xff0c;获得众多小伙伴的喜爱。在QQ中最重要的东西莫过于聊天记录。QQ聊天记录中包含了我们日常的点点滴滴、工作业务往来&#xff0c;以及一些重要的文件等等。 有时候&#xff0c;你可能希望将聊天记录导出以节省手机空间&#xff0c;或者拿来留作…

【广州华锐互动】VR高层小区安全疏散演练系统

在今天的高科技时代&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经被广泛应用到各个领域&#xff0c;包括教育和培训。由广州华锐互动定制开发的VR高层小区安全疏散演练系统&#xff0c;开始在房地产行业中崭露头角。这种系统通过模拟真实的紧急情况&#xff0c;帮助…

在博物馆建设方案中,如何考虑功能展项区域的扩展和灵活性?

对于博物馆设计来说&#xff0c;空间内功能展项区域的分布非常重要&#xff0c;关乎展厅内容呈现的视觉效果以及观感体验&#xff0c;我们在了解到博物馆建设主题之后&#xff0c;就需要对其功能展区进行划分&#xff0c;不同类型的分区功能展示&#xff0c;也会影响到用户的参…

5分钟搞懂Jenkins分布式架构

Jenkins通常以单节点模式工作&#xff0c;但其也可以通过代理的方式实现多节点架构&#xff0c;从而能够横向扩展Jenkins系统&#xff0c;支持大规模CICD流水线。原文: Jenkins Distributed Architecture Jenkins是最著名的持续集成工具&#xff0c;是实现DevOps的必要组件之一…

高压开关柜无线测温方法的分类及原理解析

1. 红外热成像法 红外热成像法是一种非接触式的测温方法&#xff0c;通过红外热像仪捕捉目标表面的红外辐射&#xff0c;将其转化为温度分布图像。该方法适用于大范围的温度检测&#xff0c;并且可以实时监测多个位置的温度变化。其原理是利用物体发射的红外辐射与其表面温度…

最新Discuz3.5论坛多合一聚合支付接口插件源码/支持支付宝和微信支付功能

最新Discuz3.5论坛多合一聚合支付接口插件源码/支持支付宝和微信支付功能&#xff0c;这个插件直接替换了自带的支付接口功能&#xff0c;增强了支付的扩展性&#xff0c;它挺方便实用的&#xff0c;自带了支持支付宝、微信、QQ 钱包官方支付&#xff0c;以及彩虹易支付、虎皮椒…

阿里图标的使用

添加购物车&#xff0c;下载代码 引入1 引入2 引入3

小型内衣裤洗衣机哪个牌子好?内衣洗衣机测评

随着内衣洗衣机的流行&#xff0c;很多小伙伴在纠结该不该入手一款内衣洗衣机&#xff0c;专门来洗一些贴身衣物&#xff0c;答案是非常有必要的&#xff0c;因为我们现在市面上的大型洗衣机只能做清洁&#xff0c;无法对我们的贴身衣物进行一个高强度的清洁&#xff0c;而小小…

线上软件的故障排查方法

线上软件的故障排查是确保软件系统正常运行和快速解决问题的重要任务。以下是一些通用的线上软件故障排查方法&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 监控系统&#xff1a; 使用监控工具来追…