使用etop工具监测Erlang运行环境

来源:互联网 发布:xp自动修复软件 编辑:程序博客网 时间:2024/05/17 12:56

Erlang提供了一个小工具 etop (Erlang top), 用来查看Erlang运行环境中,内存,ets,binary,进程等相关信息。
这些被收集的信息大部分是通过erlang module的相关bif输出,etop只是做了一个好的展现。
etop位于: erlang/lib/observer-xxx/priv/bin 目录下, etop为CLI,getop为GUI表现,在windows下也可以通过调用etop.bat和getop.bat显示相关信息.
下面是用法:
./etop Args
Args:
 node
被监控的Node Value: atom()
Mandatory setcookie etop节点的Cookie,必须和被监控节点的Cookie一致
 Value: atom() lines 显示多少行Process相关信息
 Value: integer()
Default: 10 interval 刷新频率(秒)
 Value: integer()
Default: 5 accumulate 数据是否以累加方式显示
 Value: boolean()
Default: false sort Process排序依据
 Value: runtime | reductions | memory | msg_q
 Default: runtime (reductions if tracing=off ) tracing etop使用trace机制进行执行时间的检测,当为on时,可以显示runtime,这样作增加了系统负载. 当为off时,无法显示runtime
 Value: on | off
 Default: on
例子:
  ./etop -node xxxxx@127.0.0.1 -setcookie dzhz -lines 5 -sort memory -interval 5 -accumulate true -tracing on
 
显示信息如下:
 ========================================================================================
 xxxxx@127.0.0.1'                                              04:42:04
 Load:  cpu         0               Memory:  total      240999    binary       2071
        procs     121                        processes   42729    code        10677
        runq        0                        atom         1035    ets        159019

Pid            Name or Initial Func    Time    Reds  Memory    MsgQ Current Function
----------------------------------------------------------------------------------------
<5195.125.0>   proc_lib:init_p/5       6705********19372496       0 gen_server:loop/6  
<5195.121.0>   mod_kernel                 013720369 7628400       0 gen_server:loop/6  
<5195.47.0>    application_master:s       0 1031136 1802472       0 application_master:l
<5195.126.0>   proc_lib:init_p/5      11297********  831304       0 gen_server:loop/6  
<5195.145.0>   proc_lib:init_p/5      13493********  743576       0 gen_server:loop/6  
========================================================================================
其中Memory单位为KB

从etop的Shell文件里面-sname可以看出:etop默认启动短名字的节点名,如果你要监测的节点使用长节点名命名的,那么Shell需做如下更改:
Linux版本:
#!/bin/sh

NAME="etop@127.0.0.1"
erl -name $NAME -hidden -s etop -s erlang halt -output text $@

Windows版本:
@ECHO OFF
CALL werl -name etop@127.0.0.1 -hidden -s etop -s erlang halt -output text %*


另外一种启动etop的方式:在节点shell上spwan一个进程,调用etop:start/1
spawn(fun() -> etop:start([{output, text}, {interval, 5}, {lines, 20}, {sort, memory}]) end).
停止etop的方法:
etop:stop().