Agent实现方式

简言之:Angent方式,本质就是服务器上自己跑subprocess.getoutput(‘命令’),获取关键信息,再将信息返回给API,主机API接收到消息后经过处理,将数据存入数据库,最终通过web界面展现给用户
图示:
在这里插入图片描述
优点:速度快
缺点:需要为每台服务器部署一个Agent程序,
适合服务器较多(>100台)的情况

ssh类的实现方式

本质:基于paramiko模块,需要一台中控机

实现方式:

中控机通过paramiko模块,登录到各个服务器,然后执行linux命令,获取各个服务器的信息,再将信息返回给API,主机API接收到消息后经过处理,将数据存入数据库,最终通过web界面展现给用户

图解:

在这里插入图片描述
优点:不需要Agent,无需部署
缺点:速度慢,中控机连接速度慢
适合服务器较少(<100台)的情况

saltstack

本质:此方案的实现流程和第二种ssh类的实现差不多的流程,中控机发送命令给服务器执行,服务器将结果放到一个队列中,中控机从队列中获取信息,再将信息发送到API中进而录入数据库,最后通过web展示给用户

实现方式:借助第三方工具saltstack

优点: 快,开发成本低
缺点:依赖第三方工具
适用场景:服务器上已经部署了salt-stack或者想要使用salt-stack的企业
图示
在这里插入图片描述

1、安装和配置
master端:

1、安装salt-master

yum install salt-master -y

如果无法安装请先安装源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2、修改配置文件:

vim /etc/salt/master
interface:0.0.0.0 修改为本机的ip地址

3、启动服务

service salt-master start

4、查看进程是否启动

ps aux | grep salt
slave端

1、安装salt-minion

yum install salt-minion -y

如果无法安装请先安装源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2、修改配置文件:

vim /etc/salt/minion
master:0.0.0.0 修改为的master地址

3、启动服务

service salt-minion start

4、查看进程是否启动

ps aux | grep salt
2 授权
salt-key -L        # 查看已授权和未授权的slave
salt-key -a slave_id     #接收指定id的slave,(hostname即可)
salt-key -r slave_id      #拒绝指定id的slave
salt-key -d slave_id     #删除指定id的slave
salt-key -A                  # 接收所有的申请slave
3、执行命令

在master服务器上对slave进行远程操作

salt ' slave_hostname' cmd.run ‘命令'

基于API的方式

import salt.client
local = salt.client.LocalClient()
result = local.com('c2.salt.com'', 'cmd.run', ['ifconfig'])

Puppet(ruby语言开发)

每隔30分钟,通过RPC消息队列将执行的结果返回给用户

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐