Chinaunix

标题: 有没有人有兴趣用 erlang 写一套监控系统? [打印本页]

作者: q1208c    时间: 2014-08-11 09:17
标题: 有没有人有兴趣用 erlang 写一套监控系统?
RT.

基于 erlang 先天的监控树机制, 可以快速的反应出被监控节点的状态.

欢迎有经验的兄弟指点 !!
欢迎有兴趣的兄弟一起研究 !!


作者: crazyhadoop    时间: 2014-08-11 16:40
可以详细说说应用场景哇
作者: q1208c    时间: 2014-08-11 17:14
回复 2# crazyhadoop

可以.

对于一般的管理中. 机器的监控多数采用snmp + ping . 但这有个问题, 就是 polling time, 一般的监控中. 都是定期执行的. 比如 每15分钟, 也有 每5分钟的.

但当机器太多时, 查询间隔就会增加, 因为监控进程无法控制更多的监控进程/线程了.

所以, 我想用 erlang 写一个 c/s 架构的应用. 或者称之为 agent / server 模式吧.

有一台(或多台)集中的server, 用来集中监控的信息.

每一台被监控的机器上有一个 agent, 用 erlang的 机制, 把它们连接起来, 在server 端 用监控树来监控每一个agent.

如果 agent 挂掉并且, 起不来了, 就说明被监控的机器down了, 或者忙到响应不过来了.

在中间, agent可以监控系统的资源使用情况, 定期(正常值时)/不定期(异常值需要马上向上汇报)向上汇报.

大概就是这个结构. 因为目前 erlang 能运行在绝大多数平台上, 所以, 这个 agent 应该比较合适.

更细节的技术问题, 我也没想好. 因为, 我对erlang还不熟. 选择它, 主要看重了它的监控树, 不用我自己来实现这一堆东西.

当然, 这个后面还有另外一个功能, 监控, 只是其中比较小的一部分.
   
作者: laputa73    时间: 2014-08-18 14:40
1.用来监控主机理论是可以的,但是实用价值不太高
因为erlang的安装太复杂,作为主机监控agent来说,不是很方便。
而传统的snmp,ping agent功能基本都是主机自带的。
一些第三方的agent,基本也是有一个相对简单的安装程序。
很难想象,在一台被管主机上,需要先装gcc,再编译erlang,再装agent程序。
如果都是windows/linux可能还好点。

2。我对erlang的监控树用得不多,  但是它的定制应该不是很容易吧。

作者: q1208c    时间: 2014-08-18 15:10
回复 4# laputa73

安装并不复杂. 我已经成功把 erlang程序打包为一个发行包. 被监控的机器上不需要 erlang 的任何东西. 这个包放过去 , 执行一下 install.sh 直接可用. 当然, 前提是需要架构相同, 比如都是 都是 linux x64.

如果架构不同, 那就只发行 beam 包. 不发布 erlang 虚拟机. 这样, 每台机器上只要有erlang虚拟机就可以了. 除了Windows, 可以预先编译后打包发布.

snmp并不是一个好的选择, 主要是响应不够快. 还有就是有些监控点可能还取不到, 自定义不是那么方便.

其它的监控工具我也看过几个, 多数是用 perl 或 python 写成. 也同样存在跟 snmp 类似的问题.

监控树的问题比较容易解决, 我虽然还不熟, 但我看到 couchbase 中有完整的监控代码, 我不一定要copy, 但 参考一下总是可以的吧.
作者: laputa73    时间: 2014-08-18 15:23
这个东西在大规模的探针监控可能会用得到.
我目前的方案是通过http协议实现探针的注册,上报,心跳,任务下载.
如果换成erlang,那么监控,注册,心跳这块就可以简化.
有个问题就是如果探针运行在内网,erlang的进程通信会不会有问题?
作者: q1208c    时间: 2014-08-18 16:19
回复 6# laputa73

这个我想过, 如果全在内网, 当然是没问题的.

如果有内网, 有外网, 那需要一个加密的封装. 加密这一块, 我还没研究过.

准备是先把内网搞好, 然后再考虑加密网关这一块. 必要时, 采用多个监控节点, 用http或其它的方式与主机(中心节点)联系.
   
作者: shijiang1130    时间: 2014-08-19 13:31
前台展示用什么呢?:wink:
作者: q1208c    时间: 2014-08-19 14:01
回复 8# shijiang1130

第一步当然是 web . yaws 如何?
   
作者: arserangel    时间: 2014-08-24 19:01
我在写了。。。。专门用来监控服务器集群的,加入讨论组,一起研究吧,见我签名
作者: q1208c    时间: 2014-08-25 06:48
谢谢, 我不喜欢QQ.
作者: shijiang1130    时间: 2014-08-30 23:23
arserangel 发表于 2014-08-24 19:01
我在写了。。。。专门用来监控服务器集群的,加入讨论组,一起研究吧,见我签名
代码是在github上么?
作者: arserangel    时间: 2014-08-31 08:47
回复 12# shijiang1130


    代码我放在 svn 上面了,不过,现在才起个步,而且也没有有 snmp 协议
作者: shijiang1130    时间: 2014-09-03 00:08
erlang程序设计第2版 279页写道:
Mnesia有一个内建的SNMP表类型,它让实现SNMP管理系统变得非常简单。
作者: q1208c    时间: 2014-09-03 08:22
回复 14# shijiang1130

这个我以前也知道, 只是, 这些东西, 最初设计是为了erlang自己的.
   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2