CN113708994A - 一种基于Go语言的云物理主机和云服务器监控方法及系统 - Google Patents
一种基于Go语言的云物理主机和云服务器监控方法及系统 Download PDFInfo
- Publication number
- CN113708994A CN113708994A CN202110958368.9A CN202110958368A CN113708994A CN 113708994 A CN113708994 A CN 113708994A CN 202110958368 A CN202110958368 A CN 202110958368A CN 113708994 A CN113708994 A CN 113708994A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- monitoring
- plug
- language
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 71
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000002372 labelling Methods 0.000 claims abstract description 15
- 230000008140 language development Effects 0.000 claims abstract description 4
- 238000012545 processing Methods 0.000 claims description 23
- 230000008569 process Effects 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000005259 measurement Methods 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 abstract description 2
- 230000000007 visual effect Effects 0.000 abstract description 2
- 239000002184 metal Substances 0.000 description 9
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000015654 memory Effects 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
- H04L43/045—Processing captured monitoring data, e.g. for logfile generation for graphical visualisation of monitoring data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/12—Network monitoring probes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/14—Arrangements for monitoring or testing data switching networks using software, i.e. software packages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于Go语言的云物理主机和云服务器监控方法及系统,属于云计算技术领域;所述的方法具体步骤如下:S1使用Go语言开发监控插件monitor‑agent经进行部署;S2利用monitor‑agent插件读取数据并计算利用率;S3将对应的机器信息与获取的监控数据一并保存;S4在k8s的集群中部署influxdb,对云物理主机和云服务器进行标注;S5将数据存入influxdb进行存储展示;本发明方法在k8s集群中部署时序数据库,并对租户侧提供可写入数据的域名,实例可以在不连接外网的情况下,将监控数据写入数据库;通过Java语言开发的sdk,读取时序数据库中的数据,完成监控数据的采集、存储、告警和可视化分析等需求。
Description
技术领域
本发明公开一种基于Go语言的云物理主机和云服务器监控方法及系统,涉及云计算技术技术领域。
背景技术
云物理主机和云服务器的大规模应用带来运维安全问题,在私有云以及公有云中,同时部署多个实例,需要同时对其性能、网络、状态进行监控,而客户也有实时获取物理机和虚拟机各硬件状态的需求。而目前OpenStack没有提供统一的OS agent可以同时适用虚拟机和裸机,按照OpenStack已有的虚拟机方案,其默认使用的qga是使用虚拟机的VirtIO serial保证平台与agent通讯的,裸金属目前没有此方案,且在裸金属之上实现虚拟的VirtIO serial难度也较大;虚拟机、裸金属镜像统一是各云特别是公有云积极尝试的点,如果裸金属、虚拟机各自嵌入的agent不同,那镜像统一难度又将变大;为了解决以上种种问题,先发明一种云物理主机和云服务器的监控方法及系统,提供一种裸机和虚拟机都可用的监控实现方式。
发明内容
本发明针对现有技术的问题,提供一种基于Go语言的云物理主机和云服务器监控方法及系统,所采用的技术方案为:一种基于Go语言的云物理主机和云服务器监控方法,其特征是所述的方法具体步骤如下:
S1使用Go语言开发监控插件monitor-agent经进行部署;
S2利用monitor-agent插件读取数据并计算利用率;
S3将对应的机器信息与获取的监控数据一并保存;
S4在k8s的集群中部署influxdb,对云物理主机和云服务器进行标注;
S5将数据存入influxdb进行存储展示。
所述S2利用Go语言读取数据并计算非空闲进程占用时间的比例作为利用率。
所述S3将对应的机器信息与获取的监控数据一并保存的具体步骤如下:
S301利用时间戳为监控数据;
S302将同类型的监控数据保存在时序数据库的同一个measurement里;
S303保存的监控数据通过身份识别符区分身份信息。
所述S4在k8s的集群中部署influxdb,对云物理主机和云服务器进行标注的具体步骤如下:
S401在k8s的集群中部署influxdb,influxdb对租户侧实例暴露8806端口作为写入端口;
S402将Input插件中数据格式化输出;
S403output插件定时读取输出数据并加入时间戳进行标注。
一种基于Go语言的云物理主机和云服务器监控系统,所述的系统具体包括插件部署模块、数据计算模块、数据处理模块、数据存储模块和数据读取模块:
插件部署模块:使用Go语言开发监控插件monitor-agent经进行部署;
数据计算模块:利用monitor-agent插件读取数据并计算利用率;
数据处理模块:将对应的机器信息与获取的监控数据一并保存;
数据存取模块:在k8s的集群中部署influxdb,对云物理主机和云服务器进行标注;
数据读取模块:将数据存入influxdb进行存储展示。
所述数据计算模块利用Go语言读取数据并计算非空闲进程占用时间的比例作为利用率。
所述数据处理模块具体包括主键确定模块、分类保存模块和数据区分模块:
主键确定模块:利用时间戳为监控数据;
分类保存模块:将同类型的监控数据保存在时序数据库的同一个measurement里;
数据区分模块:保存的监控数据通过身份识别符区分身份信息。
所述数据读取模块具体包括端口部署模块、输出处理模块和数据标注模块:
端口部署模块:在k8s的集群中部署influxdb,influxdb对租户侧实例暴露8806端口作为写入端口;
输出处理模块:将Input插件中数据格式化输出;
数据标注模块:output插件定时读取输出数据并加入时间戳进行标注。
本发明的有益效果为:本发明方法在k8s集群中部署时序数据库,并对租户侧提供可写入数据的域名;部署实例,通过读取机器元数据,向实例的环境变量中注入区分机器身份的resource_id、resource_name,代表使用者身份信息的account和代表实例区域信息的region等值;通过脚本安装基于go语言开发的monitor-agent插件,运行monitor-agent,这时实例可以在不连接外网的情况下,将监控数据写入数据库;通过Java语言开发的sdk,读取时序数据库中的数据,完成监控数据的采集、存储、告警和可视化分析等需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明方法的流程图;图2是本发明系统的结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
首先对本发明所涉及的专业术语进行简要说明:
云计算(Cloud Computing):是分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡、热备冗余等传统计算机和网络技术发展融合的产物。通过云计算,可以在短时间内完成海量的数据处理,实现强大的网络服务。通常具有大规模分布式、虚拟化、高可用拓展、按需配置以及安全等5大特性。云平台能够为用户提供弹性虚拟化及容器环境,并提供计算、存储、网络、安全、数据库、服务通用等服务产品。
云服务器(Elastic Compute Service,ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。云服务器又叫云计算服务器或云主机,使用了云计算技术,整合了数据中心三大核心要素:计算、网络与存储。其管理方式比物理服务器更简单高效。用户无需提前购买硬件,即可迅速创建或释放任意多台云服务器。
裸金属服务(Ironic,Bare Metal Service):为用户提供云平台上的云物理主机(Cloud Physical Server)定制化产品。早期,由于部署虚拟机和物理机的相似,所以在nova中实现部署物理机的driver,将物理机管理作为nova资源管理的子集,也就是说早期Bare Metal Service作为driver有自己的数据库,导致同一个项目有两套数据库,这是一;其次就是Bare Metal Service有特殊行为(discovery/hardware raid configuration/firmware updates/burn in),不适合放在nova中。所以开源社区将Bare Metal Service分离并命名为Ironic。云物理主机是高性能、资源独享、安全隔离的专属物理主机,满足核心应用对高性能及可靠性的需求,并提供完整的设备管理权限及自动运维服务。物理主机同时具备云主机的敏捷性、灵活性与高可用。
时序数据库(Time Series Database):时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。时序数据库具有写入平稳、持续、高并发高吞吐等特点。下面是时序数据库的一些基本概念(不同的时序数据库称呼略有不同):
metric:度量,相当于关系型数据库中的table。
data point:数据点,相当于关系型数据库中的row。
timestamp:时间戳,代表数据点产生的时间。
field:度量下的不同字段。一般情况下存放的是会随着时间戳的变化而变化的数据。
tag:标签,或者附加信息。一般存放的是并不随着时间戳变化的属性信息。timestamp加上所有的tags可以认为是table的primary key。
Go语言:Go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go语言被设计成一门应用于搭载Web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能分布式系统领域而言,Go语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持。总体来说,Go语言是一个非常现代化的语言,精小但非常强大。通过go语言开发的monitor-agent结合配置文件和可访问的时序数据库,可以实现监控数据的保存。
监控monitor-agent插件基于go语言开发,提供插件运行的框架和标准,将所有Input收集到的时序数据通过Processor处理,之后再给到Aggregator进行聚合计算,最后输出到Output。只要符合monitor-agent的插件接口和数据标准,即可接入monitor-agent。目前插件提供对物理机和虚拟机内存、cpu、硬盘、硬盘io和网络的监控数据收集,后续有需求可以自行编写插件。monitor-agent包含四类插件:
输入插件(Inputs):收集各种时间序列性指标,包含各种系统信息和应用信息的插件。
处理插件(Process):当收集到的指标数据流要进行一些简单处理时,比如给所有指标添加、删除、修改一个Tag。只是针对当前的指标数据进行。
聚合插件(Aggregate):聚合插件有别于处理插件,就在于它要处理的对象是某段时间流经该插件的所有数据(所以,每个聚合插件都有一个设置,只会处理时间段内的数据),比如取最大值、最小值、平均值等操作。
输出插件(Outputs):收集到的数据,经过处理和聚合后,输出到数据存储系统,可以是各种地方,如:文件、InfluxDB、各种消息队列服务等等。
实施例一:
一种基于Go语言的云物理主机和云服务器监控方法,其特征是所述的方法具体步骤如下:
S1使用Go语言开发监控插件monitor-agent经进行部署;
S2利用monitor-agent插件读取数据并计算利用率;
S3将对应的机器信息与获取的监控数据一并保存;
S4在k8s的集群中部署influxdb,对云物理主机和云服务器进行标注;
S5将数据存入influxdb进行存储展示;
首先按照S1使用Go语言开发监控插件monitor-agent经进行部署:根据不同平台编译monitor-agent代码,linux系统生成monitor-agent二进制文件,windows系统生成monitor-agent.exe文件。启动monitor-agent,并使用脚本将monitor-agent加入开机启动项;
进一步的,所述S2利用Go语言读取数据并计算非空闲进程占用时间的比例作为利用率;
以在linux下cpu信息为例,在Linux下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间,三者之和就是CPU的总时间,当没有用户进程、系统进程等需要执行的时候,CPU就执行系统缺省的空闲进程。从平常的思维方式理解的话,CPU的利用率就是非空闲进程占用时间的比例,即CPU执行非空闲进程的时间/CPU总的执行时间;
在Linux系统中,CPU时间的分配信息保存在/proc/stat文件中,go语言使用/shirou/gopsutil/库读取数据,计算利用率。文件的头几行记录了每个CPU的用户态,系统态,空闲态等状态下分配的时间片(单位是Jiffies),这些数据是从CPU加电到当前的累计值;
不同版本的linux/proc/stat文件内容不一样,以Linux 2.6来说,/proc/stat文件的内容下表所示:
ctxt 200015736
btime 1611727530
processes 2520147
procs_running 4
procs_blocked 0
softirq 105424491 0 81499166 34 2868277 1474022 0 507 0 45221719130268
第一行的数值表示的是CPU总的使用情况,所以我们只要用第一行的数字计算即可;如下表所示解析第一行各数值的含义:
因为/proc/stat中的数值都是从系统启动开始累计到当前时刻的积累值,所以需要在不同时间点t1和t2取值进行比较运算,当两个时间点的间隔较短时,就可以把这个计算结果看作是CPU的即时利用率;
CPU的即时利用率的计算公式:
CPU在t1到t2时间段总的使用时间=(user2+nice2+system2+idle2+iowait2+irq2+softirq2)-(user1+nice1+system1+idle1+iowait1+irq1+softirq1)
CPU在t1到t2时间段空闲使用时间=(idle2-idle1)
CPU在t1到t2时间段即时利用率=1-CPU空闲使用时间/CPU总的使用时间;
进一步的,所述S3将对应的机器信息与获取的监控数据一并保存的具体步骤如下:
S301利用时间戳为监控数据;
S302将同类型的监控数据保存在时序数据库的同一个measurement里;
S303保存的监控数据通过身份识别符区分身份信息;
获取的监控数据在存储之前需要经过处理。同类型的监控数据保存在时序数据库的同一个measurement里,如不同的虚拟机和物理机,取得的cpu监控数据保存在名为cpu的measurement里,读取时需要身份标识符区分身份信息。对于公有云来说,每个创建出的实例都拥有唯一的uuid,可以将此uuid取出,作为tag随监控数据一同保存。这就需要一种在实例中获取机器信息的方法;
OpenStack Metadata Service提供instance的配置信息(这些信息被统称为metadata),可以在实例启动时向Metadata Service请求并获得自己的metadata,获取metadata流程如下:
instance->haproxy->neutron-metadata-monitor-agent->nova-api-metadata通过脚本获取需要的值,写入到/etc/profile中,执行source/etc/profile命令,在控制台可以用echo命令打出需要的相关信息:
[root@ros-api-test-2~]#echo$RESOURCE_ID
253a6b51-3f9a-4103-93ff-ceee040ed64d
[root@ros-api-test-2~]#echo$RESOURCE_NAME
ROS-api-test-2
[root@ros-api-test-2~]#echo$ACCOUNT
inspurtest02
[root@ros-api-test-2~]#echo$SERVICE
cps
环境变量生效后,使用go语言os库的Getenv()方法获取需要的变量,获取需要的tag和field值后,将其拼接为数据库接受的格式,以存储到influxdb为例,存储的格式为:
<measurement>[,<tag-key>=<tag-value>...]<field-key>=<field-value>[,<field2-key>=<field2-value>...][unix-nano-timestamp]
以存储cpu的一条数据为例:
cpu,account=inspurtest02,host=server01,region=cn-north-3,resource_id=253a6b51-3f9a-4103-93ff-ceee040ed64d,resource_name=ROS-api-test-2,service=cps,uuid=253a6b51-3f9a-4103-93ff-ceee040ed64d,cpu=cpu-total cps_usage_guest=0,cps_usage_guest_nice=0,cps_usage_idle=97.96395193634721,cps_usage_iowait=0.03337783711616602,cps_usage_irq=0.10013351134849806,cps_usage_nice=0,cps_usage_percent=2.0360480636527845,cps_usage_softirq=0.10013351134925698,cps_usage_steal=0.03337783711616602,cps_usage_system=0.5340453938586563,cps_usage_user=1.234979973298901
再进一步的,所述S4在k8s的集群中部署influxdb,对云物理主机和云服务器进行标注的具体步骤如下:
S401在k8s的集群中部署influxdb,influxdb对租户侧实例暴露8806端口作为写入端口;
S402将Input插件中数据格式化输出;
S403output插件定时读取输出数据并加入时间戳进行标注;
在k8s的集群中部署influxdb,influxdb对租户侧实例暴露8806端口作为写入端口。Input插件中数据按照1.
<measurement>[,<tag-key>=<tag-value>...]<field-key>=<field-value>[,<field2-key>=<field2-value>...]的格式输出,monitor-agent的output插件定时读取输出数据,并为每个数据加入当前时间的时间戳[unix-nano-timestamp],时间戳按照机器的本地时间精确到微秒。读取时,在全局中加入机器的uuid、region、resource_name、创建者account和区分机器是物理机还是虚拟机的service,云物理主机标注为cps,云服务器标注为ecs;
数据处理完成后,使用http方式访问influxdb提供的域名,将这段时间产生的数据存入influxdb。Influxdb提供了读取的sdk,通过sdk查询influxdb,读出数据,用来可视化和设置告警。
实施例二:
一种基于Go语言的云物理主机和云服务器监控系统,所述的系统具体包括插件部署模块、数据计算模块、数据处理模块、数据存储模块和数据读取模块:
插件部署模块:使用Go语言开发监控插件monitor-agent经进行部署;
数据计算模块:利用monitor-agent插件读取数据并计算利用率;
数据处理模块:将对应的机器信息与获取的监控数据一并保存;
数据存取模块:在k8s的集群中部署influxdb,对云物理主机和云服务器进行标注;
数据读取模块:将数据存入influxdb进行存储展示;
插件部署模块基于插件提供对物理机和虚拟机内存、cpu、硬盘、硬盘io和网络的监控数据收集,后续有需求可以自行编写插件;数据计算模块在收集到的指标数据流要进行一些简单处理时,比如给所有指标添加、删除、修改一个Tag,只是针对当前的指标数据进行;数据处理模块处理的对象是某段时间流经该模块的所有数据,比如取最大值、最小值、平均值等操作;据存取模块收集到的数据,经过处理和聚合后,输出到InfluxDB数据存储系统;数据读取模块利用luxdb提供了读取的sdk,通过sdk可以查询influxdb,读出数据,用来可视化和设置告警;
进一步的,所述数据计算模块利用Go语言读取数据并计算非空闲进程占用时间的比例作为利用率;
进一步的,所述数据处理模块具体包括主键确定模块、分类保存模块和数据区分模块:
主键确定模块:利用时间戳为监控数据;
分类保存模块:将同类型的监控数据保存在时序数据库的同一个measurement里;
数据区分模块:保存的监控数据通过身份识别符区分身份信息;
再进一步的,所述数据读取模块具体包括端口部署模块、输出处理模块和数据标注模块:
端口部署模块:在k8s的集群中部署influxdb,influxdb对租户侧实例暴露8806端口作为写入端口;
输出处理模块:将Input插件中数据格式化输出;
数据标注模块:output插件定时读取输出数据并加入时间戳进行标注;
再进一步的,所述数据读取模块还包括用户认证模块、数据鉴权模块和监控用户认证模块:用户通过API获取监控数据时,认证模块会校验请求中有无用户登录信息,用户是否合法等。对于合法用户会进行数据鉴权并返回结果;如用户非法访问,则返回失败信息;
数据鉴权模块:用户访问API获取某个实例的监控数据时,数据鉴权模块会校验用户对该实例有无访问权限。如果用户有该资源的访问权限,则返回该实例的监控数据;如没有该资源的访问权限,则返回失败信息;
监控数据展示模块:用户在控制台获取监控信息后,会在页面上通过曲线图等形式展示监控数据。默认提供近1小时、近6小时、近12小时的快速查看选择,用户也可以筛选监控数据的时间范围,自行查询监控数据。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种基于Go语言的云物理主机和云服务器监控方法,其特征是所述的方法具体步骤如下:
S1使用Go语言开发监控插件monitor-agent经进行部署;
S2利用monitor-agent插件读取数据并计算利用率;
S3将对应的机器信息与获取的监控数据一并保存;
S4在k8s的集群中部署influxdb,对云物理主机和云服务器进行标注;
S5将数据存入influxdb进行存储展示。
2.根据权利要求1所述的方法,其特征是所述S2利用Go语言读取数据并计算非空闲进程占用时间的比例作为利用率。
3.根据权利要求2所述的方法,其特征是所述S3将对应的机器信息与获取的监控数据一并保存的具体步骤如下:
S301利用时间戳为监控数据;
S302将同类型的监控数据保存在时序数据库的同一个measurement里;
S303保存的监控数据通过身份识别符区分身份信息。
4.根据权利要求3所述的方法,其特征是所述S4在k8s的集群中部署influxdb,对云物理主机和云服务器进行标注的具体步骤如下:
S401在k8s的集群中部署influxdb,influxdb对租户侧实例暴露8806端口作为写入端口;
S402将Input插件中数据格式化输出;
S403output插件定时读取输出数据并加入时间戳进行标注。
5.一种基于Go语言的云物理主机和云服务器监控系统,其特征是所述的系统具体包括插件部署模块、数据计算模块、数据处理模块、数据存储模块和数据读取模块:
插件部署模块:使用Go语言开发监控插件monitor-agent经进行部署;
数据计算模块:利用monitor-agent插件读取数据并计算利用率;
数据处理模块:将对应的机器信息与获取的监控数据一并保存;
数据存取模块:在k8s的集群中部署influxdb,对云物理主机和云服务器进行标注;
数据读取模块:将数据存入influxdb进行存储展示。
6.根据权利要求5所述的系统,其特征是所述数据计算模块利用Go语言读取数据并计算非空闲进程占用时间的比例作为利用率。
7.根据权利要求6所述的系统,其特征是所述数据处理模块具体包括主键确定模块、分类保存模块和数据区分模块:
主键确定模块:利用时间戳为监控数据;
分类保存模块:将同类型的监控数据保存在时序数据库的同一个measurement里;
数据区分模块:保存的监控数据通过身份识别符区分身份信息。
8.根据权利要求7所述的系统,其特征是所述数据读取模块具体包括端口部署模块、输出处理模块和数据标注模块:
端口部署模块:在k8s的集群中部署influxdb,influxdb对租户侧实例暴露8806端口作为写入端口;
输出处理模块:将Input插件中数据格式化输出;
数据标注模块:output插件定时读取输出数据并加入时间戳进行标注。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110958368.9A CN113708994A (zh) | 2021-08-20 | 2021-08-20 | 一种基于Go语言的云物理主机和云服务器监控方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110958368.9A CN113708994A (zh) | 2021-08-20 | 2021-08-20 | 一种基于Go语言的云物理主机和云服务器监控方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113708994A true CN113708994A (zh) | 2021-11-26 |
Family
ID=78653901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110958368.9A Pending CN113708994A (zh) | 2021-08-20 | 2021-08-20 | 一种基于Go语言的云物理主机和云服务器监控方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113708994A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116633952A (zh) * | 2023-07-25 | 2023-08-22 | 常州辉途智能科技有限公司 | 一种牧场用数据处理系统及处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122664A (en) * | 1996-06-27 | 2000-09-19 | Bull S.A. | Process for monitoring a plurality of object types of a plurality of nodes from a management node in a data processing system by distributing configured agents |
CN110928740A (zh) * | 2018-09-20 | 2020-03-27 | 中国石油化工股份有限公司 | 云计算中心运维数据集中可视化方法及其系统 |
CN111752807A (zh) * | 2020-07-01 | 2020-10-09 | 浪潮云信息技术股份公司 | 一种基于Kubernetes的资源监控方法 |
-
2021
- 2021-08-20 CN CN202110958368.9A patent/CN113708994A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122664A (en) * | 1996-06-27 | 2000-09-19 | Bull S.A. | Process for monitoring a plurality of object types of a plurality of nodes from a management node in a data processing system by distributing configured agents |
CN110928740A (zh) * | 2018-09-20 | 2020-03-27 | 中国石油化工股份有限公司 | 云计算中心运维数据集中可视化方法及其系统 |
CN111752807A (zh) * | 2020-07-01 | 2020-10-09 | 浪潮云信息技术股份公司 | 一种基于Kubernetes的资源监控方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116633952A (zh) * | 2023-07-25 | 2023-08-22 | 常州辉途智能科技有限公司 | 一种牧场用数据处理系统及处理方法 |
CN116633952B (zh) * | 2023-07-25 | 2023-09-29 | 常州辉途智能科技有限公司 | 一种牧场用数据处理系统及处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yang et al. | End-to-end I/O monitoring on leading supercomputers | |
Tian et al. | Optimized cloud resource management and scheduling: theories and practices | |
US11048608B2 (en) | Probability-distribution-based log-file analysis | |
US20170364697A1 (en) | Data interworking method and data interworking device | |
AU2017201665A1 (en) | Annotations of resources | |
CN112596857B (zh) | 一种SaaS多租户数据隔离的方法、装置、设备及介质 | |
US9455865B2 (en) | Server virtualization | |
CN113708994A (zh) | 一种基于Go语言的云物理主机和云服务器监控方法及系统 | |
CN109885431A (zh) | 用于备份数据的方法和装置 | |
CN102957563B (zh) | Linux集群故障自动恢复方法和Linux集群故障自动恢复系统 | |
US7260689B1 (en) | Methods and apparatus for detecting use of common resources | |
CN114020819A (zh) | 一种多系统参数同步方法及装置 | |
CN114428705A (zh) | 一种网络数据的监测方法、装置、设备以及存储介质 | |
CN109800124A (zh) | Cpu使用率监控方法、装置、电子设备及存储介质 | |
US11586598B2 (en) | Data deduplication in data platforms | |
Horalek et al. | Proposed Solution for Log Collection and Analysis in Kubernetes Environment | |
CN116628042A (zh) | 数据处理方法、装置、设备及介质 | |
US11580082B2 (en) | Object storage system with control entity quota usage mapping | |
Dell | ||
US11121981B1 (en) | Optimistically granting permission to host computing resources | |
CN113656378A (zh) | 一种服务器管理方法、装置、介质 | |
Vaidya | Handling critical issues of big data on cloud | |
CN117032906B (zh) | 农产品基础数据资源池管理方法及系统 | |
US11645136B2 (en) | Capturing referenced information in a report to resolve a computer problem | |
CN117251297B (zh) | 一种设备分配方法及电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211126 |
|
RJ01 | Rejection of invention patent application after publication |