Home > ocollector

ocollector

Ocollector is a project mainly written in PERL and SHELL, it's free.

we stole the name from tcollector

ocollector

ocollector通过内置的多种数据收集器进行数据处理与合并,发送到opentsdb中。

有别于其他客户端的地方,

  • 零模块:不需要安装任何模块,程序只有一个文件。
  • 零安装:./ocollector --help,指定几个命令行参数,there you go!
  • 支持Windows和Linux:Windows和Linux使用相同的代码,Windows提供exe直接部署。
  • 版本迭代速度快:有了零部署的支持,我们来向hids展示什么叫plugin.
  • 有sdo特色的xx主义: 做其他开源项目没做过的,做适合于内部系统的,做我们觉得cool的

问题

tsd的接口已经够简单了,为什么还?

yes,已经够简单了。echo 'put blah blah blah...' | nc op.sdo.com 4242

但如果让10个人实现,第一个用nc,第二个用java写socket,第三个人php调tsd的REST接口,最后又乱了。

所以应该禁止分裂,否则OIWBID

OIWBID = Otherwise I Will Burn it Down.

There should be one—and preferably only one—obvious way to do it. -- The Zen of Python

那ocollector准备怎样?

  • 解决公司内Windows和Linux共存的问题

    OK,任何脚本语言Perl, Ruby, Python都是跨操作系统的,但脚本部署什么都不跨。

    Windows下Perl有Cygwin, ActivePerl, Stawbarry Perl三种, 乘以Windows32/64两个版本, 乘以Windows2K和Windows2K3,一共有12种可能。

    假设Linux上只有一种,那至少有13种组合,除去通用的多数,总有2,3个情况需要区别对待。 如果这些细节需要每个脚本考虑,那部署出去的脚本会乱成什么样子?

  • 给定一个问题,只有一种最好实现,ocollector保证不是最差的。

    例如,Windows和Linux取当前连接数,有以下几种做法:

    1. Linux: netstat -ant | grep -c 'ESTABLISHED'
    2. Linux: netstat -st | grep -c 'connections established'
    3. Windows: netstat -ano | grep -c 'ESTABLISED'
    4. Windows: snmp -v 2c -c your_community some_oid_to_obtain_netstat

其中2和3是很糟糕的做法,当连接数一多,就会耗用大量CPU.

$ time netstat -st | grep 'connections established'
    12129 connections established
    real    0m0.002s

$ time netstat -ant | grep -c 'ESTABLISHED'
    11813
    real    0m1.669s

显示不是每人都知道哪种实现最好。 尽管ocollector也不能,但它可以修改内部实现,对外参数维持不变。否则今天是:check_linux_connections.sh, 明天是check_linux_connectionsEx.sh

你又重新造轮子了?

我们做出了一个艰难的决定:去偷别人好的代码,并把它转化为ocollector的类。 现在请重新定义什么叫重新造轮子吧。

使用方式

Windows

  1. 没有perl,且无法安装: 使用打包的exe,大概1.25MB

    $ curl -LO op.sdo.com/download/ocollector.exe
  2. 没有perl,但可以安装: 有两种选择,一是安装ActivePerl, 二是装cygwin,利用其自带的Perl:Cygwin

  3. 装有cygwin且有curl,那么:

    $ curl -LO op.sdo.com/download/ocollector

Linux, etc.

Linux只要:

    $ curl -LO op.sdo.com/download/ocollector

FAQ

  • 提示找不到Error.pm和version.pm

某些环境偶尔会报找不到Error.pm或是version.pm,请去Issue中提交。 然后用yum安装(先用起来):

    $ yum -y install Perl-Error Perl-version
  • Windows中如何让命令在后台运行?

    见Command Line Kung Fu, 用start命令能模拟nohup,但的确还有一个框。未来会改为服务形式,但不是近阶段目标。

    $ start /MIN perl ocollector /s /b *ocollection_options*
  • 如何不用服务也不哟啊框?

    可利用cygwin的bash执行脚本,当cygwin的ssh超时时间到后,脚本就会成为一个没有框的进程。

  • Windows下远程桌面启动ocollector,会随着远程桌面退出而关闭

    因为会话被注销了。请先执行命令:tscon 0,然后启动ocollector。tscon命令参考这里:Connect to Another Session by Using the TSCON Command

收集器介绍

参考Wiki或内部metric介绍网站

或者 ./ocollector -h的输出以及相关wiki。