Skip to content

ueffort/dragonfly-agent

Repository files navigation

<<<<<<< HEAD

dragonfly-agent

=======

该项目为监控平台的agent组件

用于分布式搭建命令代理执行器,可以指定或者批量执行特定的脚本任务,并回传执行结果

与运维工具的区别:

  1. 首先是权限问题,运维工具通常要开启root的权限,但agent只是执行查询任务,权限级别低
  2. 异步任务的模式
  3. 对服务器的侵入小,使用go作为开发语言,跨平台,也不会要求系统有多余的依赖
  4. 针对只需要ssh的运维工具来说,就是避免了一些问题
  5. 该工具不是面向运维的,是用于简化系统中数据获取的复杂度,用于实现数据接口化

不通过ssh执行命令的原因:

1. ssh会有断开链接的问题
2. ssh还会开设服务端链接数的限制
3. 每台服务器都要配置密钥验证(这点还行,一般都会设置)
4. 对于目前的容器化方案来说,还需要安装ssh-server,并且端口是冲突的

依赖组件

  1. consul/etcd:自动服务发现及配置共享
  2. redis:消息发送及消息回传

为何依赖以上组件:

  1. 首先是高可用,通过以上组件能满足整个系统的高可用
  2. 定义了一个异步通信的机制,简化了组件实现的难度
  3. 解耦组件之间的关系,能方便的进行组件的扩展

通信:

使用protobuf进行数据通信,通过redis的订阅发布实现异步消息的分布式发送

主机名

通过参数设定:advertise,可以是主机名可以是ip

角色

通过与Server通信获取本机对应的角色列表 Server通过匹对advertise进行查找

redis中订阅发布的规范:

  1. 每个agent启动后,订阅多个channel,订阅格式:$prefix/$advertise
  2. 定时将自己注册到channel,避免master意外退出 , 格式: $prefix/$master/register | prefix/master = path/file = scheme.path
  3. Data根据api的定义发送任务信息到对应的channel,并订阅一个channel
  4. agent执行完毕后,将结果发送到对应的channel,channel信息会在任务信息中传递

开发

  1. 将该目录加入GOPATH
  2. 使用Godep作为依赖管理:在目录执行godep restore
  3. 添加新的依赖后,需执行godep save, 提交源码时将依赖文件也提交

release/v0.1.0

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published