cmdb是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmdb是啥意思相关的知识,希望对你有一定的参考价值。
参考技术A相信大家都听过CMDB这个词,但是你知道它代表着什么吗?一起来了解一下。
CMDB的含义
CMDB即配置管理数据库,有时也被称为运营自动化,通过识别、控制、维护,检查企业的IT资源,从而高效控制与管理不断变化的IT基础架构与IT服务,并为其它流程,例如事故管理、问题管理、变更管理、发布管理等流程提供准确的配置信息。
配置管理数据
库配置管理数据库是与IT系统所有组件相关的信息库。它包含IT基础架构配置项的详细信息。和CMDB类似的信息库已经被IT部门使用了多年,但CMDB的概念源自ITIL。在ITIL里面,CMDB是IT环境下重要部件的权威配置。CMDB帮助组织理解这些部件之间的关系,并跟踪它们的配置。
CMDB是ITIL框架的配置管理流程中的基础部分,CMDB的实现一般需要联合,即从其它数据源,如资产管理系统,获取数据并纳入CMDB中,期间数据的控制权仍然在数据源。联合有别于ETL,期间数据是复制进CMDB的。
总的来说,CMDB即配置管理数据库,有时也被称为运营自动化,成功实施CMDB的关键要素是对配置项信息的自动发现,以及对信息变动的跟踪。
cmdb客户端代码完善2
目录:
1.面试提问
2.完善采集端代码
3.唯一标识的问题
4.API的验证
1.面试会问到的问题:
# 1. 为啥要做CMDB?
# - 实现运维自动化, 而CMDB是实现运维自动化的基石
# - 之前公司统计资产的时候,使用Excel来统计, 为了年底资产审计方便,因此需要做CMDB
#
# 2. CMDB的架构以及你们公司采用的架构是啥?
# Agent
# ssh类
# saltstck
#
#
# 3. 你做这个项目的时候, 主要负责哪一块?
#
# - 数据的采集和发送
#
# a.数据的采集:
# - 高级的配置文件 (整合了自定制的配置文件和全局的配置文件)
# - 高内聚低耦合的思想, 实现了插件采集的可插拔式
#
# 参考了django的配置和django的中间件
#
# - 数据的二次清洗和加密
#
#
# - 数据的展示(图表部分)
#
# 4. 遇到了那些问题? 怎么解决的?
#
# - linux的命令不熟 -----> 找运维 或者 百度
# - 沟通问题, 和产品经理的沟通
# - 唯一标识的问题
2.完善采集端代码
已经完成了采集数据,现在是要发送数据,一开始想到的是在启动文件中直接写代码
from lib.config.config import settings import json import requests from src.plugins import PluginsManger if __name__ == ‘__main__‘: if settings.MODE == ‘agent‘: res = PluginsManger().execute() requests.post(‘http://127.0.0.1:8000‘, data=json.dumps(res)) else: res = PluginsManger().execute()
而逻辑代码是不能写在启动文件中的,所以在src创一个文件client.py
from lib.config.config import settings import json import requests from src.plugins import PluginsManger if settings.MODE == ‘agent‘: res = PluginsManger().execute() requests.post(‘http://127.0.0.1:8000‘, data=json.dumps(res)) else: res = PluginsManger().execute()
但是以上又是面向过程的思想,所以要面向对象的思想
服务端的IP地址写在custom_settings。py里
import os BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) MODE = ‘agent‘ SSH_USERNAME = ‘root‘ SSH_PASSWORD = ‘123‘ SHH_PORT = 22 ### APIurl地址 API_URL = ‘http://127.0.0.1:8000/getInfo/‘ DEBUG = True PLUGINS_DICT = { ‘basic‘:‘src.plugins.basic.Basic‘, ‘board‘: ‘src.plugins.board.Board‘, ‘disk‘: ‘src.plugins.disk.Disk‘, ‘memory‘: ‘src.plugins.memory.Memory‘, ‘cpu‘:‘src.plugins.cpu.Cpu‘, ‘nic‘:‘src.plugins.nic.Nic‘ }
client.py(先对agent采集模式进行测试)
from src.plugins import PluginsManger import json import requests from lib.config.config import settings class Agent(object): #收集数据并发送 def collectAndPost(self): res = PluginsManger().execute() for k,v in res.items(): print(k,v) requests.post(settings.API_URL, data=json.dumps(res))
start.py
from src.client import Agent if __name__ == ‘__main__‘: Agent().collectAndPost()
起一个django (我的是2.0版本) 服务端,应用项目是api
from django.contrib import admin from django.urls import path,re_path from api import views urlpatterns = [ path(‘admin/‘, admin.site.urls), re_path(‘getInfo/‘, views.getInfo), ]
将settings中drf注掉
# a. request.body中永远都是有数据的
#
#
# 当 Content-Type: application/x-www-form-urlencoded, request.POST中才会有值
# 当 Content-Type‘:"application/json" 这是采集端发送数据的头形式
views.py
from django.shortcuts import render,HttpResponse # Create your views here. def getInfo(request): print(request.body) return HttpResponse(‘ok‘)
以上是关于cmdb是啥意思的主要内容,如果未能解决你的问题,请参考以下文章