Erlang监测系统CPU、内存、磁盘

标签: Erlang | 发表时间:2011-09-08 21:34 | 作者:jobin chuang
出处:http://www.erlangsir.com

os_mon

Erlang的os_mon服务中提供了一些用于监测系统信息的服务
cpu_sup:监测CPU负载和使用率(Unix)
disksup:监测磁盘(Unix、Windows)
memsup:监测内存(Unix、Windows、VxWorks)
os_sup:监测系统日志(Solaris、Windows)

使用os_mon进行监测先必须启动监测服务application:start(os_mon) ,因为os_mon服务依赖于sasl服务,先必须启

动sasl服务,application:start(sasl) ,否则会返回{error,{not_started,sasl}} 错误。os_mon提供的四种监测服

务中默认会启动三种服务:cpu_sup、disksup和memsup,如果需要自己设置启动的监测服务,可以修改os_mon.app

文件中的配置参数
start_cpu_sup = bool()
start_disksup = bool()
start_memsup = bool()
start_os_sup = bool()
等于true时启动,等于false时不启动。os_mon.app文件在erlang的安装目录下../erl5.8.3/lib/os_mon-2.2.5

/ebin 。

cpu_sup

cpu监测在5.8.3版本中只能用于Solaris和Linux操作系统,负载值与Unix进程运行前在队列中的排队时间成正比,

因此值越大意味着负载越高,返回值除以256为rup和top命令中显示的值。avg1/0,avg5/0avg15/0 函数计算负载,

util/0util/1 函数计算CPU使用率。在Linux系统中,必须保证/proc文件目录能被cpu_sup服务访问,如果不能监

测服务会停止

模块中的函数列表
nprocs() -> UnixProcesses | {error, Reason}
返回UNIX进程数
avg1() -> SystemLoad | {error, Reason}
返回最后1分钟系统的负载
avg5() -> SystemLoad | {error, Reason}
返回最后5分钟系统的负载
avg15() -> SystemLoad | {error, Reason}
返回最后15分钟系统的负载
util() -> CpuUtil | {error, Reason}
返回CPU使用率
util(Opts) -> UtilSpec | {error, Reason}
返回CPU使用率的详细信息

调用这些函数取CPU监测数据时,如果前后两次调用,数值没有变化时显示为0,有点奇怪

disksup

disksup是一个用来监测磁盘空间的进程,适用于Unix和Windows系统。监测服务定期检查磁盘,对于每个磁盘或分

区,在它使用超过一定的可用空间量,通过{{disk_almost_full,MountedOn},[]} 设置产生报警。在Unix下所有的

本地磁盘都会被监测,包括存在的交换分区。在WIN32下所有类型为“FIXED_DISK”逻辑驱动器都会被检查。

配置监控间隔时间和阀值
disk_space_check_interval = int()>0
监测间隔时间,单位为分钟,默认为30分钟。
disk_almost_full_threshold = float()
监测阀值,磁盘使用率达到多少时产生告警,默认为80,单位是百分比。

模块中的函数列表
get_disk_data() -> [DiskData]
返回最后一次磁盘检查结果
get_check_interval() -> MS
获取监测间隔时间,单位是毫秒
set_check_interval(Minutes) -> ok
设置监测间隔时间,这个设置在下一次监测时生效,服务退出后,这个值会失效,重启服务后使用默认值
get_almost_full_threshold() -> Percent
获取监测阀值,为磁盘使用率
set_almost_full_threshold(Float) -> ok
设置监测阀值,服务重启后,设置失效,使用默认值

memsup

memsup用来监控系统内存和各个进程内存的使用率,适用于Unix、Windows和VxWorks系统,定时监测内存,如果内

存使用超过系统分配的一定值,通过{system_memory_high_watermark, []} 设置产生告警。如果系统中任何Erlang

进程使用内存超过在总内存中的一定百分比,通过设置{process_memory_high_watermark,Pid} 产生告警。

配置监测间隔时间和阀值
memory_check_interval = int()>0
以分钟为刻度,默认为1分钟
system_memory_high_watermark = float()
内存使用阀值,默认为80,单位是百分比
process_memory_high_watermark = float()
单个Erlang进程使用阀值,默认为5,单位是百分比
memsup_helper_timeout = int()>0
等待监测结果的超时时间,默认为30秒
memsup_system_only = bool()
设置是否只监控系统内存使用率还是同时监测Erlang进程内存使用率,默认为false

模块中的函数列表
get_memory_data() -> {Total,Allocated,Worst}
获取系统总内存,使用内存,每个Erlang进程的使用内存
get_system_memory_data() -> MemDataList
获取系统内存使用的详细信息
get_os_wordsize() -> Wordsize
获取操作系统的位数
get_check_interval() -> MS
获取监测间隔时间,单位毫秒
set_check_interval(Minutes) -> ok
设置监测间隔时间,单位分钟
get_procmem_high_watermark() -> int()
获取每一进程内存使用告警阀值
set_procmem_high_watermark(Float) -> ok
设置每一进程内存告警阀值
get_sysmem_high_watermark() -> int()
获取系统内存使用阀值
set_sysmem_high_watermark(Float) -> ok
设置系统内存使用阀值
get_helper_timeout() -> Seconds
获取监测数据返回等待时间
set_helper_timeout(Seconds) -> ok
设置监测数据返回等待时间

相关 [erlang 系统 cpu] 推荐:

Erlang监测系统CPU、内存、磁盘

- chuang - Jobin的主页
Erlang的os_mon服务中提供了一些用于监测系统信息的服务. cpu_sup:监测CPU负载和使用率(Unix). disksup:监测磁盘(Unix、Windows). memsup:监测内存(Unix、Windows、VxWorks). os_sup:监测系统日志(Solaris、Windows).

lazarfreezer – 冷冻程序释放 CPU | 小众软件 > 系统工具

- Don - 小众软件 - Appinn
lazarfreezer 是一款 CPU 类控制软件, lazarfreezer 可以“冷冻”程序,令其不占用 CPU ,将 CPU 腾出来给其他程序. “冷冻”的过程并不会杀掉程序的进程,而是进入了 CPU 的等待队列,等待你发号施令,程序才可以使用. lazarfreezer 使用方法很简单:.

《Erlang编程指南》读后感

- David Ruan - Tim[后端技术]
在云时代,我们需要有更好的能利用多核功能及分布式能力的编程语言,Erlang在这方面具有天生的优势,因此我们始终对它保持强烈关注. 按:此为客座文章,投稿人为新浪微博基础研发工程师赵鹏城(http://weibo.com/iamzpc),以下为原文. 在对一个分布式KV存储系统的研究过程中,我有幸遇到了Erlang语言.

Erlang十分钟快速入门

- - 水煮沉浮
Erlang概述Erlang不但是一种编程语言,而且它具有比编程语言更加贴近操作系统的一些特性:并发线程、作业调度、内存管理、分布式、网络化等. 据说使用Erlang编写的Yaws Web服务器,其并发性能是apache的15倍. 这个Erlang初始开源版本包含了Erlang的实现,同时它也是用于构建分布式高可用性系统的Ericsson中间件的最大组成部分.

whatsapp深度使用Erlang有感

- - 系统技术非业余研究
原创文章,转载请注明: 转载自 系统技术非业余研究. whatsapp深度使用Erlang有感. 这么多年过去了,社区还在讨论erlang是不是小众语言,各种怀疑的时候,whatsapp已经把erlang用到了极致. 更为搞笑的是 主要开发者Rick Reed(rr@whatsapp.com),之前在Yahoo!, SGI工作,有着深厚的系统性能的背景.

Erlang进程堆垃圾回收机制

- - CSDN博客推荐文章
原文: Erlang进程堆垃圾回收机制. 作者:http://blog.csdn.net/mycwq. 每个Erlang进程创建之后都会有自己的PCB,栈,私有堆. erlang不知道他创建的进程会用到哪种场合下,所以一开始分配的内存比较小. 如果分配的空间不够了,erlang gc会动态调整堆大小以满足需求,如果分配的空间大了,就会收缩堆,回收内存.

让Erlang自动编译并加载代码

- Andy - Intridea East Blog
最近参与的项目使用了ejabberd,得此锲机第一次接触了Erlang. 作为一个函数式编程语言(functional language),除了函数式语言本身特点之外, 因为Erlang是为分布式,高并发,高容错系统量身设计的,所以也有一些属于自己的独门秘籍. 譬如热更新(hot swapping): 系统可以在运行过程中替换部分代码,更神奇的是,新旧代码还可以部分共存.

高性能集群服务器(Erlang解决方案)

- BeerBubble - 淘宝核心系统团队博客
高性能集群服务器(Erlang解决方案) View more presentations from Feng Yu.

Erlang集群自动化添加节点指南

- KnightE - Erlang非业余研究
原创文章,转载请注明: 转载自Erlang非业余研究. 本文链接地址: Erlang集群自动化添加节点指南. Erlang的集群是由各个节点组成的,一个节点有一个名字来标识,而不管这个节点在网络的物理位置,所以在部署Erlang集群的时候就很方便. 只要在集群里新启动一个节点,给个相对固定的引导的节点,让新节点和这个引导节点取得联系,由引导节点把新节点介绍入集群就OK了.

Erlang代码反编译以及查看汇编码

- KnightE - Erlang非业余研究
原创文章,转载请注明: 转载自Erlang非业余研究. 本文链接地址: Erlang代码反编译以及查看汇编码. Erlang的代码是先翻译成abstract_code,再到目标代码的,如果有符号信息很容易恢复源代码,通常我们部署系统的时候需要把符号信息去掉,reltool就可以干这个事情. 想查看模块的汇编码,也很容易,这样就好:.