go开发环境搭建

  1. cd ~
  2. wget http://dinp.qiniudn.com/go1.4.1.linux-amd64.tar.gz
  3. tar zxf go1.4.1.linux-amd64.tar.gz
  4. mkdir -p workspace/src
  5. echo "" >> .bashrc
  6. echo 'export GOROOT=$HOME/go' >> .bashrc
  7. echo 'export GOPATH=$HOME/workspace' >> .bashrc
  8. echo 'export PATH=$GOROOT/bin:$GOPATH/bin:$PATH' >> .bashrc
  9. echo "" >> .bashrc
  10. source .bashrc

clone代码

  1. cd $GOPATH/src
  2. mkdir github.com
  3. cd github.com
  4. git clone --recursive https://github.com/XiaoMi/open-falcon.git

编译一个组件(以agent为例)

  1. cd $GOPATH/src/github.com/open-falcon/agent
  2. go get ./...
  3. ./control build

自定义修改归档策略

修改open-falcon/graph/rrdtool/rrdtool.go

二次开发 - 图1
二次开发 - 图2

重新编译graph组件,并替换原有的二进制

清理掉原来的所有rrd文件(默认在/home/work/data/6070/下面)

插件机制

  1. 找一个git存放公司的所有插件
  2. 通过调用agent的/plugin/update接口拉取插件repo到本地
  3. 在portal中配置哪些机器可以执行哪些插件
  4. 插件命名方式:$step_xx.yy,需要有可执行权限,分门别类存放到repo的各个目录
  5. 把采集到的数据打印到stdout
  6. 如果觉得git方式不方便,可以改造agent,定期从某个http地址下载打包好的plugin.tar.gz