其他分享
首页 > 其他分享> > 组件设计系列:获取系统的一些监控参数

组件设计系列:获取系统的一些监控参数

作者:互联网

在实际应用中,会有很多系统参数的运行监控手段,我也曾经遇到过监控操作系统cpu,内存和网卡的发送接收速率等场景(使用snmp协议采集,也可以使用prometheus监控器去采集),今天那就一起总结一下常用的Linux系统参数获取方式,比如cpu核数,用户名,内存参数等等。

1、获取当前cpu核数

通过sysconf函数可以查询相关参数,我们先通过man sysconf查看看函数用法。
man 命令查看
其中的参数int name,我们接着看看有哪些参数。
cpu核数的查询参数
最后实现查询cpu核数的接口如下,顺便提一句,在Netty里面控制线程数量也是通过查询cpu核数,线程数= 2* cpu核数。
获取cpu核数

2、获取主机的hostname

获取主机名称很容易,在头文件<unistd.h>中有gethostname函数可以直接获取。
获取主机名

3、获取系统内存使用情况

获取系统内存使用情况
我们知道,通过cat /proc/meminfo 可以打开这个文件,里面可以查看到内存相关的信息。
内存参数
其中,__parse_mem_info_attr_from_content方法,就是从这个字符串中找到对应的参数,然后进行解析。这个参数将作为工具方法,整个类中将使用到。
解析参数

4、获取系统启动/运行时间

运行时间
通过 cat /proc/stat 通用可以查看到系统运行的一些信息,如下所示:
系统命令查看结果
那么系统启动时间就是上面的btime,系统运行的时间就是当前时间减去btime结果。
系统运行时间

5、获取全部网卡信息

网卡信息获取

6、网卡收发包/速率参数获取

网卡收发字节
同样,使用cat /proc/net/dev可以查看到有两个网卡的信息,其中我们需要获取的是ens33网卡的信息,所以在下面调用接口需要传入网卡名称(网卡名称有上面的api获取到了)。
运行参数
这个地方,有个技巧,就是我们只需要得到其中的Receive和Transmit中的Bytes,所以上面的函数中,我们使用了dummy变量,跳过了中间变量得到了in_bytes和out_bytes结果。

最后,经过代码调试测试,上面的结果都是正确的,可以供大家参考。

标签:网卡,获取,参数,内存,监控,组件,核数,cpu
来源: https://blog.csdn.net/wengsuwei7683/article/details/110525611