一、传统运维方式和自动化运维的区别

二、CMDB的介绍

三、CMDB的四种方式

四、项目的目录架构介绍以及配置文件的升级编写

五、比较low的项目架构书写

六、可插拔式收集资产

七、对收集的服务器信息进行清洗

八、整个项目的总结

九、收集资产遇到的唯一标识的大坑

十、开启线程池并发采集

十一、后台目录结构设计

十二、API请求认证

十三、后台数据表结构设计

十四、后台数据表生成

十五、资产清洗入库

十六、硬盘数据入库

十七、AES加密数据

十八、将数据展示前端

十九、bootstraptable行内进行编辑

二十、layui的使用

二十一、使用echarts,highcharts进行画图

Python的几个方向:

 1、Python自动化运维

 2、爬虫(数据分析)

 3、web开发

 4、人工智能(AI)

一、传统运维方式和自动化运维的区别

  传统运维:

    项目上线的流程:

      第一步:产品经理进行前期调研(需求分析)

      第二步:和开发进行评审

      第三步:开发进行开发

      第四步:测试人员进行测试

      第五步:交给业务运维人员进行上线 (重点讨论这个)--怎么上线-->直接将代码给业务运维人员(代码打一个包用qq传过来),让业务运维人员把代码放到服务器上(拿到代码解压,然后放到服务器上)。服务器上需要配一下域名(就跟百度一样www.baidu.com)才能够对外服务。

  

缺点:

  增加运维的成本

针对这种传统的方式有什么解决优化方案?

改进一:专门搞一个自动分发程序代码的系统。

  a.这个系统的基础是得有服务器的信息(ip、hostname、等)

  b.能不能报警自动化

  1. SMTP
  2. 一千台服务器上放微博的项目,尾部项目出问题了会触发服务器上一个报警(每台服务器中都有),发邮件,发短信或者打电话到运维人员手机上。

怎么发现服务器报错信息?

  c.装机系统

    传统的装机和布线:idc运维-->用大量的人力物力来进行装机。    

    自动化运维?--->把服务器放到机架上,插一根网线。把服务器ip还有hostname信息告诉一个专门装机的系统。    

  1. 我发送一个命令,centos就能够装好。

collober

 

 d.收集服务器元信息

    1.Excel

      缺点:人为干预太严重,统计的时候也会有问题

    2.搞一个系统---->这就叫CMDB

      作用:自动的帮我们收集服务器的信息,并且自动的记录我们的变更信息。    

二、CMDB的介绍

  自动的帮我们收集服务器的信息,并且自动的记录我们的变更信息。让所有的操作都变得自动化。

  

三、CMDB的四种方式

大体流程:

开始收集服务器的元数据:怎么收集虚拟机服务器所有的信息?---->怎么汇报给实体机,数据库里?

获取ip地址:

获取主机名:

获取硬盘信息:

获取内存信息:

1.实体机发命令虚拟机执行ifconfig

2.虚拟机执行命令得到执行的结果可以通过socket发送给实体机

3.需要通过正则或者Python的一些字符串函数将ip信息给分析出来

在实际开发中,收集服务器的信息总共有4中方案:

第一个方案:agent方式 (代理中介的意思)

  第一步:在每台服务器上写Python脚本(脚本内容),且python代码执行的结果还在每台服务器上。

  1. import subprocess
  2.  
  3. # res = subprocess.getoutput('ipconfig')
  4. res = subprocess.getoutput('ifconfig')
  5.  
  6. print(res)
  7.  
  8. # 用正则,字符串分割函数...拿到想要的结果

test.py

  第二步:定时(crontab)的执行收集代码

  1. linux命令crontab,可以指定在哪一时刻执行某一个脚本。

crontab

  第三步:将执行的结果返回给那台专门收集信息的服务器。用requests模块,post请求

  第四步:专门收集的服务器收集到所有的服务器信息后放到DB(数据库)服务器里。

  第五步:搞一个给管理人员或者想要用CMDB系统的人看的Django页面

注:我们把每一台服务器叫每一个agent。开启一个agent代表的意思是,在我们每一台服务器上,我们布一个agent脚本(就是我们写的test.py脚本)。agent脚本目前三行代码,但将来实际上会非常非常的大。

缺点:每台服务器都要安装agent

优点:速度快

应用场景:适用服务器多的时候,大公司

agent方式:

  agent脚本

  API

  web界面

第二种方案:ssh连接   另外目前市面上除了使用paramiko模块本身外,还有fabric,ansible等,它们内部都是基于paramiko模块实现的

  1. # # ssh类 用于连接远程服务器并执行基本命令
  2. # import paramiko
  3. #
  4. #
  5. # # 创建SSH对象
  6. # ssh = paramiko.SSHClient()
  7. # # 允许连接不在know_hosts文件中的主机
  8. # ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  9. # # 连接服务器
  10. # ssh.connect(hostname='zhangrenguo', port=22, username='root', password='1')
  11. #
  12. # # 执行命令
  13. # stdin, stdout, stderr = ssh.exec_command('ifconfig')
  14. # # 获取命令结果
  15. # result = stdout.read()
  16. # print(result.decode('utf-8'))
  17. # # 关闭连接
  18. # ssh.close()

ssh 连接用paramiko

缺点:依赖于网络,速度慢

优点:不用部署agent

适用于服务器少的

ssh类(parmiko)

  parmiko(获取主机名)

  API

  Web界面展示

第三种方案:saltstack的工作原理--->

安装:

  1. #master端:
  2. """
  3. 1. 安装salt-master
  4. yum install salt-master
  5. 2. 修改配置文件:/etc/salt/master
  6. interface: 10.0.0.7 # 表示Master的IP
  7. 3. 启动
  8. service salt-master start
  9. """
  10. #slave端:
  11. """
  12. 1. 安装salt-minion
  13. yum install salt-minion
  14. 2. 修改配置文件 /etc/salt/minion
  15. master: 10.0.0.7 # master的地址

  16. master:
  17. - 10.211.55.4
  18. - 10.211.55.5
  19. random_master: True
  20. id: c2.salt.com # 客户端在salt-master中显示的唯一ID
  21. 3. 启动
  22. service salt-minion start
  23. """"""

授权

  1. """
  2. salt-key -L # 查看已授权和未授权的slave
  3. salt-key -a salve_id # 接受指定id的salve
  4. salt-key -r salve_id # 拒绝指定id的salve
  5. salt-key -d salve_id # 删除指定id的salve
  6. """

执行命令

  1. #在master服务器上对salve进行远程操作
  2. salt 'c2.salt.com' cmd.run 'ifconfig'
  3.  
  4. #基于API的方式
  5. import salt.client
  6. local = salt.client.LocalClient()
  7. result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])

缺点:所有服务器需要安装saltstack软件

优点:直接用现有的软件,速度快,开发成本低

适用于公司一直使用saltstack,业内最流行的方案

saltstack:

  saltstack软件

  API

  web界面展示

第四种方案:puppet 慢慢被淘汰了

不做了解。

四种方式大致的步骤:

  1.收集服务器信息

  2.数据提交给api

  3.文本页面展示

可视化工具:

https://echarts.baidu.com

https://www.highcharts.com.cn/demo/highcharts

在线画图工具:

www.processon.com

www.draw.io

为什么要使用CMDB?

  因为现在统计资产使用的是Excel表格,但业务业务越来越多。导致变更资产的时候,Excel表格越来越乱。为了让所有的资产收集全部自动化,所以我们做了CMDB。

目标:

三种方式我们都要实现兼容

只需要改配置文件里面的一个配置,我们就能够自如的切换

四、项目的目录架构介绍以及配置文件的升级编写

项目名叫autoclient

core文件夹

conf目录放settings一些自定义配置文件settings.py

bin目录放入口启动可执行的文件start.py

src放一些核心业务的一些逻辑agent.py

db 放数据相关文件

log 放一些日志相关文件

lib 放一些自己写的公共的类公共的模块common.py

test.py测试

配置文件的编写:

  目标:写一个类似于Django的配置方法(有自定义的配置文件,还要有项目默认的配置文件)--->无非是集成自定义配置文件和项目默认的配置文件里面的这些配置。通过面向对象高级里面知识!

代码重复

  1. 可以写一个公共的方法
    可以写一个父类方法
    代码高内聚--->某一个方法就干一件事,剩下的其他的不管。
    代码低解耦--->启动脚本是脚本,不参与业务逻辑。

收集的信息:

  主板信息:hostname、Mac地址

  cpu信息:型号,几个核

  dick(磁盘信息):磁盘大小、几块磁盘

  memory(内存信息):

  nic(网卡信息):ip地址、

可插拔式的收集上述信息-----什么是可插拔式的?-->在配置文件里的配置,想用的时候去掉注释,不想用的时候加上注释。和业务逻辑没关系。

接下来升级可插件的__init__文件。 写代码收集

插件的第一种解决方案:

  a、写一个公共的类

    让其他的所有的类继承Base这个基类

  b、

  

信息已经收集好了---发送给API通过requests模块-->

  

收集的信息:Linux上的命令

  主板信息:hostname、Mac地址

  cpu信息:型号,几个核             cat /proc/cpuinfo

  dick(磁盘信息):磁盘大小、几块磁盘

  memory(内存信息):

  nic(网卡信息):ip地址、

  

  

CMDB(Configuration Management Database)资产管理系统和 运维自动化的更多相关文章

  1. 魅族CMDB运维自动化实践

    一.简介 原创:梁鹏 本文是根据魅族系统架构师梁鹏10月20日在msup携手魅族.Flyme.百度云主办的第十三期魅族技术开放日< 魅族CMDB运维自动化实践>演讲中的分享内容整理而成. ...

  2. 运维自动化之salt笔记

    1:saltstack的基本介绍 2:salt的安装 1:服务端1:安装2:配置文件3:运行4:注意事项2:客户端1:安装2:配置文件3:运行4:注意事项 3:salt的使用: 1:基础知识1:tar ...

  3. 运维自动化之Cobbler系统安装详解

    原文链接 参考文档 参考文档SA们现在都知道运维自动化的重要性,尤其是对于在服务器数量按几百台.几千台增加的公司而言,单单是装系统,如果不通过自动化来完成,根本是不可想象的. 运维自动化安装方面,早期 ...

  4. 运维自动化管理服务器 CheungSSH

    CheungSSH 是一款中国人自主研发的Linux运维自动化管理服务器软件,后端使用 Python 语言+Django 的 Web 框架,前端使用 Bootstrap+Javascript+jQue ...

  5. 开源运维自动化平台-opendevops

    开源运维自动化平台-opendevops 简介 官网 | Github|  在线体验 CODO是一款为用户提供企业多混合云.自动化运维.完全开源的云管理平台. CODO前端基于Vue iview开发. ...

  6. CentOS 下运维自动化 Shell 脚本之 expect

    CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与pri ...

  7. 运维自动化之SALTSTACK简单入门

    运维自动化之SaltStack简单入门 饱食终日而无所事事,是颓也,废也.但看昨日,费九牛二虎之力除一BUG便流连于新番之中,不知东方之既黑,实乃颓颓然而荒废矣.故今日来缀一文以忏昨日之悔. Salt ...

  8. Ansible 运维自动化 ( 配置管理工具 )

    背景 出差背景,要搞项目的自动化部署.因为只直接对接生产分发,机器又非常多,这样以往使用的bat只能作为应急方案了,还是得考虑使用专业化的工具来做这个事情! 当下有许多的运维自动化工具( 配置管理 ) ...

  9. Ansible运维自动化工具19个常用模块使用实例【转】

    一.模块列表 1.setup 2.ping 3.file 4.copy 5.command 6.shell 7.script 8.cron 9.yum 10.service 11.group 12.u ...

随机推荐

  1. Asp.Net Core WebAPI使用Swagger时API隐藏与分组

    1.前言 为什么我们要隐藏部分接口? 因为我们在用swagger代替接口的时候,难免有些接口会直观的暴露出来,比如我们结合Consul一起使用的时候,会将健康检查接口以及报警通知接口暴露出来,这些接口 ...

  2. 【开源分享】2018CRM C# 源码(基于小黄豆CRMv2.0.925.3版本功能更新)

    分享出来的初衷,我分享一下最近我在小黄豆CRM2.0版本(小黄豆CRM+v2.0.925.3)上加的功能,如果有类似需求的,可以把功能代码发你,节约你的开发时间.(这是在小黄豆开源免费CRM①群231 ...

  3. Deepin Linux系统的日常使用总结(日常施工)

    1.登录root权限用户 sudo su 2.安装软件语句 apt-get install <package_name> 相对的, 安装:apt-get install <packa ...

  4. 基于Html5 Plus + Vue + Mui 移动App 开发(二)

    基于Html5 Plus + Vue + Mui 移动App 开发(二) 界面效果: 本页面采用Html5 Plus + Vue + Mui 开发移动界面,本页面实现: 1.下拉刷新.上拉获取更多功能 ...

  5. 360浏览器兼容模式下IE内核版本

    问题 最近在跟客户演示系统时,自己电脑IE 11下好好的,我们web系统最低支持到IE9.在客户电脑上,IE9浏览器下可以正常浏览,但是360兼容模式下,页面什么也不显示. 通过F12调试工具发现,3 ...

  6. 关于写作那些事之利用 js 统计各大博客阅读量

    在日常文章数据统计的过程中,纯手动方式已经难以应付,于是乎,逐步开始了程序介入方式进行统计. 在上一节中,探索利用 csv 文件格式进行文章数据统计,本来以为能够应付一阵子,没想到仅仅一天我就放弃了. ...

  7. 局域网git服务器搭建(基于win7 + bonobo git server)

    公司内网有一台win7系统的服务器. 准备在上面部署git后台, 用于内网项目版本管理. 搜索了相关资料后, 在根据公司环境, 决定采用win7 + bonobo git server + git的方 ...

  8. vue build错误异常的解决方法

    在生成vue项目的时候,出现如下错误 ERROR in static/js/index.d66d806fcdd72b36147b.js from UglifyJs Unexpected token: ...

  9. C#标识符与关键字

    标识符是指在程序中用来表示实物的单词,是分配给类型(类.结构.枚举.接口或委托).成员.变量或命名空间的名称.有效标识符必须遵循以下原则: 标识符不能以数字开头也不能包含空格: 标识符可以包含大小写字 ...

  10. .net core下Redis帮助类

      0.引入.net core环境下Redis的NuGet包,StackExchange.Redis,现目前最新的2.0.519. 帮助类Code: using System; using Syste ...