`
jzhihui
  • 浏览: 266242 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Tsung源码分析(四):Tsung服务器监控

阅读更多

Tsung在进行压力测试同时,也可以监控服务器结点上的CPU、内存、系统负载等信息(详见监控一节)。

 

         Tsung提供了三种监控方式:ErlangSNMPMunin。在tsung_controller启动的第二个阶段,会通过ts_os_mon:activate启动服务器监控。activate函数的执行很简单,通过ts_config_server:get_monitor_hosts拿到要监控的服务器列表,根据配置的监控方式调用ts_os_mon_sup:start_child来启动相应类型的监控进程,比如配置的监控类型为Erlang,那么ts_os_mon_sup:start_child最终会调用到ts_os_mon_erlang:init,对应SNMP,则是ts_os_mon_snmp:init。下面分别分析ts_os_mon_erlangts_os_mon_snmp的实现(Munin不了解,暂不做分析)

 

ts_os_mon_erlang:init的关键代码如下:

init( {Host, {}, Interval,  MonServer} ) ->
    {ok, LocalHost} = ts_utils:node_to_hostname(node()),
    case list_to_atom(LocalHost) of
        Host -> % same host, don't start a new beam
            Pid = spawn_link(?MODULE, updatestats, [Interval, MonServer]),
            {ok, #state{node=node(),mon=MonServer, host=Host,interval=Interval,pid=Pid}};
        _ ->
            erlang:start_timer(?INIT_WAIT, self(), start_beam),
            {ok, #state{host=Host, mon=MonServer, interval=Interval}}
    end

当要监控服务器是当前服务器结点的时候,直接创建一个进程,执行updatestats函数,该函数会每隔Interval时间自调用一次,通过node_data函数收集服务器的监控数据,并发送到负责统计的进程。如果要监控的服务器是远程结点,init函数通过start_beam调用先在远程结点上启动一个Erlang虚拟机,并把跟监控相关的几个模块的代码加载到虚拟机中,然后执行的代码就跟本地的执行类似,只不过统计数据要发送到主控结点上的统计进程。updatestats函数的具体代码如下:

updatestats(Interval,Mon_Server) ->
    Node = atom_to_list(node()),
    {Cpu, FreeMem, RecvPackets, SentPackets, Load} = node_data(),
    ts_os_mon:send(Mon_Server,[{sample, {cpu, Node}, Cpu},
                     {sample, {freemem, Node}, FreeMem},
                     {sample, {load, Node}, Load},
                     {sample_counter, {recvpackets, Node}, RecvPackets},
                     {sample_counter, {sentpackets,  Node}, SentPackets}]),

    timer:sleep(Interval),
    updatestats(Interval,Mon_Server)
 其中的Mon_Server参数就代表主控结点。

         node_data实现比较简单,有Erlang通用接口可以使用的就直接调用,比如CPU相关的通过cpu_sup模块相关函数;如果没有通用接口,则根据系统的具体类型,通过os:cmd直接执行命令来获取,比如内存,Linux下通过freeSolaris通过vmstat

ts_os_mon:add的实现如下:

send(Mon_Server, Data) when is_pid(Mon_Server) ->
    Mon_Server ! {add, Data};
send(Mon_Server, Data) ->
    gen_server:cast(Mon_Server, {add, Data})
 也就是如果在本地的话,直接发送到监控进程,如果监控远程服务器,则监控数据发回到主控结点(至于数据如何处理后续文章会继续分析)。

 

         SNMP类型的监控原理上同Erlang监控类似,只不过在初始化时,ts_os_mon_snmp会检查要监控的目标服务器上SNMP服务有没有启动。如果没有,通过application:start(snmp)先加载snmp应用,再通过snmpm:start启动SNMP服务,然后按照SNMP的协议获取服务器的相关信息,并通过ts_os_mon将监控数据发送到主控结点的数据统计进程。

0
1
分享到:
评论

相关推荐

    Tsung_测试XMPP_安装使用说明

    1.6在远程服务器或snmp上,使用erlang代理对os进行监控,主要是监控它的cpu,内存,网络流量等 1.7 xml配置系统: 1.8动态场景: 我们可以从负载的服务器得到动态数据并把它重新注入到随后的请求,当字符串或正则式...

    tsung用户手册 linux

    压力测试 压力测试 tsung linux

    tsung脚本及说明

    tsung的测试脚本,包含发送单人消息,群组消息,获取花名册等

    Tsung负载测试tigase

    针对消息通知服务xmpp服务器,可以用tsung来测试消息通知服务能承受多大的压力。 在Ubuntu上装好tsung之后,首先要用ulimit修改系统支持的最大fd数量(ulimit-n 20480),否则tsung最多只能创建不到1024个连接,测试...

    tsung里面测试websocket的插件

    tsung里面测试websocket的插件含 websocket.xml 等

    Openfire 3.9.3 Load Test Tsung配置xml

    Openfire 3.9.3 Load Test Tsung配置xml,10万用户下集群测试的Tsung压力测试工具的jabber_cluster.xml,session 5分钟

    Tsung安装使用详细解说

    Tsung安装使用的详细解说,主要针对xmpp的服务端(比如openfire的测试),编写测试场景的脚本配置详细说明。本人使用的是ubuntu操作系统、Tsung1.4.1

    MQTT压力测试之Tsung的使用

    MQTT压力测试之Tsung的使用 MQTT压力测试之Tsung的使用

    tsung+erlang包

    tsung+erlang测试工具,初学者应用必备,内部放置tsung源程序文件和erlang文件

    tsung-react-stats:从 json 报告中显示 tsung 统计信息

    tsung-react-stats 从 json 报告中显示 tsung 统计信息

    Tsung用于压测MySQL服务器的脚本

    这个MySQL服务器压测的需求是:Tsung用于压测MySQL服务器的脚本环境:LinuxRHEL5U4X86-64,24G内存,16核.MySQL服务器在10.232.36.100上。  这个MySQL服务器压测的需求是:  环境:LinuxRHEL5U4X86-64,24G内存,16核....

    tsung1.6.0

    tsung为一个开源的多协议分布式负载测试工具,使用erlang语言开发的。具体安装使用可以参考URL:http://www.51ste.com/share/det-222.html

    tsung高并发测试工具搭建(自己亲测,详细的一逼)

    tsung高并发测试工具搭建(自己亲测,详细的一逼),改文档是自己一步一步摸索出来的,主要是安装tsung整个过程很详细,搭过的人,知道tsung的搭建依赖很恶心,不是一时半会能搞出来的

    RedDiamond_Tsung_tests:RedDiamond的负载测试

    RedDiamond_Tsung_tests:RedDiamond的负载测试

    tsung测试总结

    tsung 测试 java erlang

    tsung安装使用

    关于tsung工具的安装步骤以及使用过程中会遇到的常见问题解答

    tsung:性能测试工具

    tsung:性能测试工具

    tsung最新用户手册

    tsung最新用户手册,包含HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, and Jabber/XMPP servers压力测试模版,错误说明等。

    tsung安装使用说明

    tsung安装使用,参数说明,模拟openfire注册用户,模拟用户openfire登录、状态更改、发送消息,对openfire长时间压力测试

    tsung安装相关文件

    —tsung-1.5.0.tar.gz —libtemplate-perl_2.20.orig.tar.gz —gnuplot-4.4.0.tar.gz —otp_src_R15B.tar.gz —perl-HTML-Tagset-3.10-2.1.1.noarch.rpm —perl-HTML-Parser-3.55-1.fc6.x86_64.rpm —...

Global site tag (gtag.js) - Google Analytics