CMDB服务器管理系统【s5day88】:采集资产之Agent、SSH和Salt模式讲解
在对获取资产信息时,简述有四种方案。
1、Agent (基于shell命令实现)
原理图
Agent方式,可以将服务器上面的Agent程序作定时任务,定时将资产信息提交到指定API录入数据库
优点:速度快 缺点:需要为每台服务器部署一个Agent程序
2、Paramiko类 (SSH形式,基于Paramiko模块)
中控机在获取未采集资产信息的服务器(服务器主机名,密码),依赖于Paramiko(py模块)通过SSH方式去获取
优点:无Agent 缺点:速度慢
如果在服务器较少的情况下,可应用此方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname = 'c1.salt.com' , port = 22 , username = 'wupeiqi' , password = '123' ) # 执行命令 stdin, stdout, stderr = ssh.exec_command( 'df' ) # 获取命令结果 result = stdout.read() # 关闭连接 ssh.close() |
3、SaltStack
此方案本质上和第二种方案大致是差不多的流程,中控机在获取到未采集资产信息的服务器(主机名),再而将命令放入一个队列中,服务器来获取。服务器将结果放入另一个队列中,中控机获取将服务信息发送到API进而录入数据库。
基于SaltStack的master上的pillar以及远程执行命令实现
1
2
3
|
import salt.client local = salt.client.LocalClient() local.cmd( '*' , 'cmd.run' , [ 'whoami' ]) |
优点:快,开发成本低 缺点:依赖于第三方工具
4、Puppet(ruby语言开发)
基于Puppet的factor和report功能实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
puppet中默认自带了 5 个report,放置在【 / usr / lib / ruby / site_ruby / 1.8 / puppet / reports / 】路径下。如果需要执行某个report,那么就在puppet的master的配置文件中做如下配置: ######################## on master ################### / etc / puppet / puppet.conf [main] reports = store #默认 #report = true #默认 #pluginsync = true #默认 ####################### on client ##################### / etc / puppet / puppet.conf [main] #report = true #默认 [agent] runinterval = 10 server = master.puppet.com certname = c1.puppet.com 如上述设置之后,每次执行client和master同步,就会在master服务器的 【 / var / lib / puppet / reports】路径下创建一个文件,主动执行:puppet agent - - test |
1、自定义factor示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
在 /etc/puppet/modules 目录下创建如下文件结构: modules └── cmdb ├── lib │ └── puppet │ └── reports │ └── cmdb.rb └── manifests └── init.pp ################ cmdb.rb ################ # cmdb.rb require 'puppet' require 'fileutils' require 'puppet/util' SEPARATOR = [Regexp.escape(File::SEPARATOR.to_s), Regexp.escape(File::ALT_SEPARATOR.to_s)].join Puppet::Reports.register_report(:cmdb) do desc "Store server info These files collect quickly -- one every half hour -- so it is a good idea to perform some maintenance on them if you use this report (it's the only default report)." def process certname = self.name now = Time.now.gmtime File.open("/tmp/cmdb.json",'a') do |f| f.write(certname) f.write(' | ') f.write(now) f.write("\r\n") end end end ################ 配置 ################ /etc/puppet/puppet.conf [main] reports = cmdb #report = true #默认 #pluginsync = true #默认 |
小结:
- 采集资产信息有四种不同的形式(但puppet是具于ruby开发的)
- API提供相关处理的接口
- 管理平台为用户提供可视化操作
三种方法对比表
CMDB服务器管理系统【s5day88】:采集资产之Agent、SSH和Salt模式讲解的更多相关文章
- CMDB服务器管理系统【s5day91】:如何实现允许临时修改主机名
一.sn号唯一 & 如何实现允许临时修改主机名 1.物理机 1.sn,物理机唯一 2.后台管理: 买服务器,清单:SN号,硬盘,内存... 作业:python 读取excel,xldt 3.资 ...
- CMDB服务器管理系统【s5day89】:采集资产之整合资产
1.业务逻辑单独写 1.代码目录结构 2.client.py from src.plugins import PluginManager class BaseClient(object): def p ...
- CMDB服务器管理系统【s5day88】:兼容的实现
比较麻烦的实现方式 类的继承方式 目录结构如下: auto_client\bin\run.py import sys import os import importlib import request ...
- CMDB服务器管理系统【s5day87】:需求讨论-设计思路
自动化运维平台愿景和服务器管理系统背景 服务器管理系统 管理后台示例 需求和设计 为什么开发服务器管理系统? 背景: 原来是用Excel维护服务器资产,samb服务[多个运维人员手动维护] 搭建运维自 ...
- CMDB服务器管理系统【s5day92】:服务器管理回顾
一.服务器管理回顾 1.requests 发送: requests.post(url='',data=,json=) requests.get() Django接受: request.POST, co ...
- CMDB服务器管理系统【s5day88】:采集资产-文件配置(一)
django中间件工作原理 整体流程: 在接受一个Http请求之前的准备 启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器. ...
- CMDB服务器管理系统【s5day88】:采集资产-文件配置(二)
上节疑问: 1.老师我们已经写到global_settings里了,为什么还要写到__init__.py setting 这的作用是为了:整合起两个的组合global_settings和setting ...
- CMDB服务器管理系统【s5day88】:采集资产之整合插件
以后导入配置文件不用去from conf而是导入from lib.config,因为在这可以导入global_settings和settings.py import sys import os imp ...
- CMDB服务器管理系统【s5day91】:资产采集相关问题
资产采集唯一标识和允许临时修改主机名 class AgentClient(BaseClient): def exec(self): obj = PluginManager() server_dict ...
随机推荐
- LeetCode算法题-Number Complement(Java实现-五种解法)
这是悦乐书的第240次更新,第253篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第107题(顺位题号是476).给定正整数,输出其补码数.补充策略是翻转其二进制表示的位 ...
- 超哥笔记--shell 基本命令(4)
一 linux 命令行的组成结构 自定义命令行结构 PS1变量来控制 \u \W 最后一位工作目录 \w 绝对路径工作目录 \t 显示24h制的时间 \h PS1="[\u@\h \w \t ...
- 【Python 11】汇率兑换4.0(函数)
1.案例描述 设计一个汇率换算程序,其功能是将美元换算成人民币,或者相反. 2.0增加功能:根据输入判断是人民币还是美元,进行相应的转换计算 3.0增加功能:程序可以一直运行,知道用户选择退出 4.0 ...
- ASP.NET基础知识汇总之WebConfig各节点介绍
web.config虽然一直用,接触最多的也就是节点appSettings和connectionSettings,今天系统的梳理一下,了解一下webconfig各个节点的含义,先简单的浏览一下具体的w ...
- 【转】VUE 爬坑之旅-- 如何对公共JS,CSS进行统一管理,全局调用
原文:https://blog.csdn.net/zgh0711/article/details/78664262 vue 中,将页面分为了各个组件,我们写好组件,就可以将这个组件运用到其他各个页面中 ...
- realm swift调研--草稿
realm swift调研: After you have added the object to the Realm you can continue using it, and all chang ...
- 分布式 cephfs
参考链接: http://docs.ceph.com/docs/mimic/cephfs/
- Linux Hung Task分析
关键词:khungtaskd.TASK_UNINTERRUPTIBLE.nvcsw.nivcsw.last_switch_count等等. 经常会遇到内核打印“INFO: task xxx:xxx b ...
- 1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(来看一下怎么样监听网络数据,监听电脑上位机软件的数据)
首先安装网络监听软件 运行这个软件 这个软件安装到电脑上,默认是监听咱电脑上的网络通信 咱们先监听电脑的软件的网络通信数据,然后再说怎么监听Wi-Fi和APP的软件的网络通信数据 咱就监听咱基础篇的 ...
- MyExceptionFilter 异常注入
public class MyExceptionFilter : IExceptionFilter { private ILogService logService; public MyExcepti ...