V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Actrace
V2EX  ›  分享创造

mMonitor - 开源服务器监控

  •  
  •   Actrace · 2013-10-25 16:41:47 +08:00 · 7790 次点击
    这是一个创建于 3829 天前的主题,其中的信息可能已经有所发展或是发生改变。
    突然心血来潮写了个服务器监控.
    完全PHP实现,可以实现以下信息的记录.
    -CPU使用率
    -内存使用率
    -负载信息
    -网络状态
    -磁盘使用率

    老套路,由服务端主动采集监控点数据,然后画个图.
    用了SQLITE数据库,一年下来大概300M左右的数据,每分钟一条记录(5种状态信息)的频率.
    目的是简约,专注.
    支持实时模式和日志模式.

    设计师正在制作这个程序的安装界面,应该很快能出个内测版~
    第 1 条附言  ·  2013-10-25 18:04:08 +08:00
    给大家个体验地址吧.
    国际账号密码.
    http://test.maxfs.org/serm/
    43 条回复    1970-01-01 08:00:00 +08:00
    Actrace
        1
    Actrace  
    OP
       2013-10-25 16:44:24 +08:00
    Actrace
        2
    Actrace  
    OP
       2013-10-25 16:44:42 +08:00
    为毛我发不了图....
    mahone3297
        3
    mahone3297  
       2013-10-25 16:45:35 +08:00
    服务器怎么主动采集?
    shiny
        4
    shiny  
       2013-10-25 16:46:51 +08:00
    有没有考虑基于 snmp 做数据采集? 很有兴趣。
    lanceli
        5
    lanceli  
       2013-10-25 16:47:31 +08:00
    Actrace
        6
    Actrace  
    OP
       2013-10-25 17:07:46 +08:00
    @shiny 我一开始的时候是用SNMP采集的,不过折腾了3天都搞不清楚怎么调用,最后用PHP直接调系统工具采集数据了...

    @mahone3297 crontab 啊,有写了一个多线程的采集程序.
    qiuai
        7
    qiuai  
       2013-10-25 17:34:13 +08:00
    @Actrace Q 39831817 希望可以马上拿到个版本玩.....
    mahone3297
        8
    mahone3297  
       2013-10-25 17:49:13 +08:00
    @Actrace php调用系统工具集是什么意思? shell命令?比如 free?loadavg?
    服务端怎么采集各个服务器的数据?在各个服务器上都起了一个进程去监听等待服务器连接?
    mille
        9
    mille  
       2013-10-25 17:55:10 +08:00
    这孩子....猴急猴急的....
    Actrace
        10
    Actrace  
    OP
       2013-10-25 17:55:33 +08:00
    @qiuai 大家别急...这个版本还只是刚刚完成功能,,安装界面木有,源代码里面的注释什么的我都没写好呢....想要体验的话可以用国际通用账号密码登陆,登录页在http://test.maxfs.org/serm/


    @mahone3297 是的,用EXEC来调用IFCONFIG,TOP,DF,目前就用到这3个.监控点需要有HTTP服务器+PHP运行环境(apache+php之类的).然后放一个PHP探针.服务端会定时访问那个探针的地址来采集数据.
    Actrace
        11
    Actrace  
    OP
       2013-10-25 17:56:54 +08:00
    顺路说一下 @mille 是mMonitor的UI设计师.
    mille
        12
    mille  
       2013-10-25 17:58:00 +08:00
    @Actrace .....!!!!!挖个洞匿了...
    rrfeng
        13
    rrfeng  
       2013-10-25 17:58:02 +08:00
    如此复杂……
    Actrace
        14
    Actrace  
    OP
       2013-10-25 18:01:32 +08:00
    @rrfeng Centos系统可以很简单啊...yum install ...service httpd start....
    rrfeng
        15
    rrfeng  
       2013-10-25 18:05:18 +08:00
    @Actrace
    为了被监控还需要安装 httpd ,php ,等等……

    类似的模式不如直接用 nagios 的 nrpe

    更好的当然是 snmp

    画的图不错~
    xmbaozi
        16
    xmbaozi  
       2013-10-25 18:29:52 +08:00 via iPhone
    snmp吧,像监控宝那样。严重建议!
    qiuai
        17
    qiuai  
       2013-10-25 18:58:06 +08:00
    @Actrace 国际通用账户?是啥
    Actrace
        18
    Actrace  
    OP
       2013-10-25 18:58:52 +08:00 via iPhone
    @xmbaozi 可以加入snmp模块,很容易就能添加其它的数据采集模式,关键是我一直没搞懂snmp怎么收数据,大神你来做?
    Actrace
        19
    Actrace  
    OP
       2013-10-25 18:59:24 +08:00 via iPhone
    @qiuai admin,,,
    qiuai
        20
    qiuai  
       2013-10-25 19:13:47 +08:00   ❤️ 1
    @Actrace admin/admin登录不进去?
    richiefans
        21
    richiefans  
       2013-10-25 19:24:14 +08:00
    @qiual
    admin/123456
    Actrace
        22
    Actrace  
    OP
       2013-10-25 19:25:01 +08:00 via iPhone
    @qiuai 你可以趁这个机会提升一下猜密码的能力,
    xmbaozi
        23
    xmbaozi  
       2013-10-25 19:48:48 +08:00   ❤️ 1
    @Actrace 如果需要,我倒是乐意,求企鹅号联系?
    Actrace
        24
    Actrace  
    OP
       2013-10-25 19:51:37 +08:00
    @xmbaozi 605853742
    Actrace
        25
    Actrace  
    OP
       2013-10-25 20:11:18 +08:00
    @rrfeng 可以让探针自身实现http服务,不过这个和snmp有啥差别吗?snmp也是需要安装...没有编译器你怎么编译,编译器也要装吧....实际上我认为偷懒的程序员才是好程序员......大多数服务器应该都有web环境吧...把探针上传就好了....
    做这个东西是因为之前折腾过各种监控软件,感觉都麻烦了....
    soli
        26
    soli  
       2013-10-25 20:23:21 +08:00
    一般都用 snmp+rrdtools

    不过 rrdtools 画出来的图太丑了。
    rrfeng
        27
    rrfeng  
       2013-10-25 21:09:27 +08:00
    @Actrace
    snmp 成熟可靠,哪个发行版都有现成的安装包吧。

    另外为了几个字节的数据就开一个 http + php 的环境,代价是否太大了?

    另外想想为何不客户端主动发送消息给采集服务器?一个 shell 脚本 + crontab 就搞定了……

    真正的运维环境,就算你的数据画的图再好再精确,也不会提倡你这种采集方式的。


    『大多数服务器应该都有web环境吧...把探针上传就好了....』
    业务和监控必然要分离啊!哪能随便上传东西
    liuhang0077
        28
    liuhang0077  
       2013-10-25 22:17:53 +08:00
    关注一下
    coolair
        29
    coolair  
       2013-10-25 22:26:27 +08:00 via Android
    开源的?最近我也在做这么一个东西,用snmp。楼主的代码在哪,学习下。
    Actrace
        30
    Actrace  
    OP
       2013-10-25 22:31:27 +08:00
    @coolair 等所有准备就绪以后,就会发布.今天功能刚好完结,有点激动,就上来发大家看看~我的理念是:即使是开源产品,也不能给人一种粗制滥造的感觉,必须负起责任,提供优秀的产品.
    jingwentian
        31
    jingwentian  
       2013-10-26 01:48:13 +08:00
    Sidney
        32
    Sidney  
       2013-10-26 09:04:39 +08:00
    推荐一下collectl, 各种性能指标都有, CPU/IO/Network/NFS...
    可以ssh进去服务器跑collectl采集数据, 把结果传回. 这样不用配新的http端口, 直接利用现有的ssh通道.

    http://collectl.sourceforge.net
    leiz
        33
    leiz  
       2013-10-26 09:52:45 +08:00
    请问画图用的是哪个库?最近也有类似的需求
    dreampuf
        34
    dreampuf  
       2013-10-26 12:20:21 +08:00
    @leiz highchart

    和手头维护的工具早期架构类似。
    建议替换掉SQLite,无法在线迁移,维护麻烦,一般程度的优化性能低
    ms2008
        35
    ms2008  
       2013-10-26 12:31:46 +08:00
    @leiz 同问?图画的不错
    Actrace
        36
    Actrace  
    OP
       2013-10-26 12:48:49 +08:00
    @ms2008
    @leiz
    绘图用的是highcharts.com提供的JS插件.

    @dreampuf 考虑了很多才用SQLITE,因为我们打算做的是一个轻量化的监控,而不是一个复杂的系统,从界面上大家应该能看出来一直都是在针对单个对象的监控.这正是一开始的目的,专注,简单.


    @Sidney 实际上这套系统足够开放,通过添加新的数据接入模块就可以利用各种方法采集数据.不过目前的精力仅限于用PHP实现,对我来说.
    mille
        37
    mille  
       2013-10-26 15:23:01 +08:00
    show下登录界面...轻喷...=.=!!
    zythum
        38
    zythum  
       2013-10-29 10:32:28 +08:00
    @lanceli 抱歉朱一的id略难记....

    zythum 很久以前在埃及是一种酒的名称。 当初看柯南的后遗症,又想和自己名字扯上关系。就有了这个蹩脚的名字。
    mahone3297
        39
    mahone3297  
       2013-10-30 13:59:10 +08:00
    @Actrace 日啊,这就是我想做的东西啊。。。只监控这几项。。。顶!
    另外,我觉得,设计策略是否可以换一下?
    比如,在server上起进程监听,然后client端,跑top,df等,收集数据,发请求到server端。
    这样,不用在client装各种东西了。。。比如php环境
    Actrace
        40
    Actrace  
    OP
       2013-10-30 17:44:56 +08:00
    @mahone3297 大爷别日我~菊花早已残.....不好意思我只会PHP....centos下yum安装还是挺方便挺快的啊....发送数据这种方式我考虑过,不过这样不太好控制数据频率,对画监控图不利...
    mahone3297
        41
    mahone3297  
       2013-10-30 23:03:29 +08:00
    @Actrace 频率的话,crontab跑。。。你服务器端发请求,假如你管理1000台服务器,你需要同时去开1000个进程去访问各个client端?如果client自己收集数据上报的话,就相当于服务器接收数据,应该是可以的。
    Actrace
        42
    Actrace  
    OP
       2013-11-05 17:06:20 +08:00
    @mahone3297 其实是一样的,你1000台服务器的监控主动发送数据,负责收集数据的服务器也是需要那么多进程去处理的.另外如果有1000台服务器的话我想也不太适合用mmonitor这种轻量级的程序了吧. ...
    thinkxen
        43
    thinkxen  
       2013-11-18 11:14:56 +08:00
    非常赞~~~~~~~~~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2673 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:01 · PVG 10:01 · LAX 19:01 · JFK 22:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.