对常见的4种资产采集方案比较分析——应用于CMDB

简介: CMDB 资产采集的方案总共有四种·      Agent·      SSH类·      Saltstack·      Puttet方案设计,从性能上考虑下面前三种是用Python开发的,目标是兼容三种采集方式的软件原理要明白如何实现自动采集?subprocessLinux基本命令v = subprocess.

CMDB 资产采集的方案总共有四种

·      Agent

·      SSH类

·      Saltstack

·      Puttet

方案设计,从性能上考虑

下面前三种是用Python开发的,目标是兼容三种采集方式的软件

原理要明白

如何实现自动采集?
subprocess
Linux基本命令
v = subprocess.getoutput('ls')

1 Agent方式

·      API:Django接收数据并入库

·      程序:放置在每台服务器

应用场景:机器多的时候

每台服务器都有程序,程序实现采集数据(执行subprocess),然后把数据发送到api

API 接收数据并入库(Django)

·      url

·      发送数据格式

·      返回值

agent程序放在每台服务器

agent程序放在每台服务器,这是采集本机的数据,速度快,采集完后发送到API
subprocess.getoutput('ifconfig')

agent程序

importsubprocess

v1 = subprocess.getoutput('ipconfig')  # 查看的是本机IP

v2 = subprocess.getoutput('dir')  # 查看本机

importrequests

url = 'http://127.0.0.1:8000/asset.html'

response = requests.post(url, data={'k1': v1, 'k2': v2})  # 使用request模块进行post进行访问

print(response.text)

api程序

fromdjango.shortcuts importrender,HttpResponse

defasset(request):

    ifrequest.method == "POST":

        print(request.POST)  # 打印接收的内容

        returnHttpResponse("1001")  # 返回值

    else:

        returnHttpResponse("用post访问")

当agent程序访问的时候,api就接收到了数据,这里还有一点是,Django中先把csrf注释

2 SSH

场景:paramiko(机器少)

·      API:Django接收数据并入库

·      程序:放在中控机,中控机远程连接机器,这里借助paramiko

或者

·      Paramiko,中控机放一份远程连接服务器,执行命令,获取结果

·      将结果发送API

ssh方式

    封装了Python的paramiko

    fabric

    ansible

中控机

远程连接服务器,执行,
结果发送到api

中控机连接中的程序

·      注意端口和密码

·      接收到的数据是字节,需要decode

importparamiko

# 创建SSH对象

ssh = paramiko.SSHClient()

# 允许连接不在know_hosts文件中的主机

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接服务器

ssh.connect(hostname='192.168.11.126', port=8888, username='root', password='密码')

# 执行命令

stdin, stdout, stderr = ssh.exec_command('ls')

# 获取命令结果

result = stdout.read()

# 关闭连接

ssh.close()

print(result.decode())  # 把字节数据转换

importrequests

url = 'http://127.0.0.1:8000/asset.html'

response = requests.post(url, data={'k1': result})  # 使用request模块进行post进行访问

print(response.text)

3 Saltstack

场景:机器多的时候,公司(乐维)正在用

salt-master 的interface设置成主机的IP,salt-minionshe

安装

参考: http://repo.saltstack.com/#rhel

Master

1. 安装salt-master

    yum installsalt-master

2. 修改配置文件:/etc/salt/master

    interface: 0.0.0.0    # 表示Master的IP

3. 启动

    service salt-masterstart

Minion

1. 安装salt-minion

    yum installsalt-minion

2. 修改配置文件/etc/salt/minion

    master: 10.211.55.4           # master的地址

    或

    master:

        - 10.211.55.4

        - 10.211.55.5

    random_master: True

    id: c2.salt.com                    # 客户端在salt-master中显示的唯一ID

3. 启动

    service salt-minion start

注意:

在修改配置文件的时候,interface master 冒号后面要有空格

查看启动状态

systemctl status salt-master systemctl status salt-minion

配置

配置主要是/etc/salt/master 和/etc/salt/minion

minion要指定指定的IP是主的IP

授权

salt-key-L                    # 查看已授权和未授权的slave

salt-key-A     全部授权  

salt-key-a  salve_id     # 接受指定id的salve

salt-key-r  salve_id     # 拒绝指定id的salve

salt-key-d  salve_id     # 删除指定id的salve

遇到错误:
Minion did not return. [No response]

解决:
rm -fr pki/minion/minion_master.pub

重启服务:
systemctl restart salt-minion

参考:
http://www.cnblogs.com/phennry/p/5419451.html

centos 修改主机名

vim/etc/hostname

通过nmtui修改,之后重启hostnamed

systemctl restart systemd-hostnamed

salt '*' cmd.run 'ls'

salt原理:
RPC
默认维护了消息队列

发送:master--》消息队列-》minon1/minon2

接收:minon1/minion2--》临时队列--》master

4 puppet(ruby开发的)

slive 每30分钟自动执行,然后发送到master



转自

4种资产采集方案带你了解CMDB

(出处: 乐维论坛)



相关文章
|
XML Web App开发 人工智能
SVG图像——为 PPT 增添视觉趣味/03/O365智能系列(二)
SVG图像——为 PPT 增添视觉趣味/03/O365智能系列(二)
1816 0
SVG图像——为 PPT 增添视觉趣味/03/O365智能系列(二)
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
252782 0
|
数据可视化 数据挖掘 Python
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(下)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
|
11月前
|
运维 安全 物联网
物联网:NB卡在使用过程中存在的一些限制和需要特别注意的操作事项
物联网NB卡(通常指的是窄带物联网(NarrowBand Internet of Things, NB-IoT)卡)是专为物联网设备设计的无线通信模块,主要用于连接物联网设备与移动网络,实现远程数据交换和控制。然而,在使用物联网NB卡时,确实存在一些限制和操作上的考虑因素。以下是一些主要的限制和操作注意事项:
|
机器学习/深度学习 人工智能 运维
智能化运维:AI在现代IT管理中的应用
随着人工智能(AI)技术的飞速发展,其在IT运维领域的应用正逐步改变着传统的运维模式。本文将探讨AI技术如何赋能运维工作,提升效率和准确性,并分析其在实际场景中的运用案例。
|
运维 数据可视化 测试技术
Lag-Llama:第一个时间序列预测的开源基础模型介绍和性能测试
2023年10月,我们发表了一篇关于TimeGPT的文章,TimeGPT是时间序列预测的第一个基础模型之一,具有零样本推理、异常检测和共形预测能力。 虽然TimeGPT是一个专有模型,只能通过API访问。但是它还是引发了对时间序列基础模型的更多研究。到了2024年2月,已经有了一个用于时间序列预测的开源基础模型:laglllama。
543 2
|
Prometheus Cloud Native 网络安全
Prometheus+Grafana+Alertmanager部署教程(超详细)
Prometheus+Grafana+Alertmanager部署教程(超详细)
2888 0
Prometheus+Grafana+Alertmanager部署教程(超详细)
|
传感器 存储 Java
一起玩转树莓派(17)——BMP180数字压力传感器应用
BMP180是一款高级的温度气压传感器,通过测量的气压值也可以计算出当前海拔高度。其压力测量范围为300-1100hPa,对应的海拔高度为正9000m-负500m。工作电压在1.8V到3.6V之间。体积小,精度高,采用I2C接口,使用非常方便。BMP180传感器在GPS导航,天气检测,海拔测量和垂直方向速度检测等方面有广泛的应用。本实验,我们尝试使用树莓派的I2C接口来读取BMP180的温度和气压值,并进行海拔高度的计算。
18152 0
|
API Android开发 Windows
包体积优化 · 彩蛋篇 · Android编译期PNG自动化转换WEBP
包体积优化 · 彩蛋篇 · Android编译期PNG自动化转换WEBP
592 0
包体积优化 · 彩蛋篇 · Android编译期PNG自动化转换WEBP