zoukankan      html  css  js  c++  java
  • CMDB小计1

    1.web开发(Django,flask, tornado)。

    2.自动化运维(CMDB项目)。

    3.爬虫 和 数据分析。

    4.自动化测试。

    4.人工智能,机械学习, 算法

    ```
    CMDB 项目:

    自动化运维:

    运维:管理服务器的

    ps: 分为基础运维,应用运维

    为什么需要自动化运维?

    1.项目上线:

    流程:产品经理调研(画出原型图)------定需求----------三方会谈(产品经理,研发,老大)-----定日期-------测试项目--------最终上线--------应用运维

    目前:是把代码打包给运维,运维解压上线

    问题:随着机器数量的线性增加,运维的工作量也是线性增加,重复而且是无意义的劳动

    解决:

    1,写一个shell脚本,进行部署

    2,搞一个自动化代码上线系统

    必要条件:

    服务器的各种信息(主机名,CPU,硬盘大小等)

    2.监控系统:

    检测服务器的各种信息(硬盘是否满,CPU的使用率,内存的使用率,网站服务运行是否正常)

    问题:之前写简单的脚本,检测服务器的信息,比较麻烦

    解决:想将服务器的各种信息,以图标的形式展示在web界面上(可视化)

    必要条件:
    服务器的各种信息(主机名,CPU,硬盘大小等)

    3.自动装机系统:
    问题:人工工作量大(ps要人一台台装)

    解决:搞一个装机系统(一键装机),cobbler软件
    必要条件:服务器的各种信息(主机名,CPU等)

    4.Excel表格审计管理资产
    cmdb系统:
    配置管理系统:

    运维自动化无法实现

    cmdb实现的核心:

    目标:收集服务器的信息(CPU,内存,网卡,硬盘等)

    实现方式:

    1.linux命令获取CPU,内存

    2.python执行linux的命令:

    subprocess模块, getoutput函数

    ```

    ```
    df -h内存信息
    cat /proc/cpuinfo IP信息

    4种实现方案: agent方案: 其本质上就是在各个服务器上执行subprocess.getoutput()命令,然后将每台机器上执行的结 果,通过request模块返回给主机API,然后主机API收到这些数据之后,放入到数据库中,然后 通过web界面将数据展现给用户 缺点:需要在每一台服务器上进行部署 优点:速度快 使用场景:服务器比较多的时候

     

    ssh类方案: 中控机通过parmiko(py模块)登录到各个服务器上,然后执行命令的方式去获取各个服务器上的信息 API从数据库中获取到未采集的机器列表后发送到中控机服务器中,中控机服务器通过parmiko模块登录到服务器上,进行信息的采集,服务器采集完后再将结果返回给中控机,仍后将从服务器中得到 的信息通过 request模块发送给API,API通过主机名和SN作为唯一标识,将信息录入到数据中,然后通过web界面将数据展现给用户 paramiko模块 缺点: 1:网络有延迟,有一个中控机,网络有延迟,速度较第一种要慢一些(有其是数据比较大的时候更加明显) 优点:不用每台都部署 使用场景: 服务器比较少的时候

     

     

    salt-stack方式: 中控机从API中获取未采集的资产信息后通过队列发送命令给服务器执行。服务器执行完后将结果放到入另一个队列中,中控机将获取到的服务信息结果发送到API进而录入数据库。然后通过web界面将数据展现给用户

    使用场景:公司已经使用salt-stack软件 优点:速度快,开发成本低 缺点:过于依赖salt-stack软件 安装salt-master: yum install salt -master 配置配置文件: interface: 本机IP service salt-master start#(ps启动) 安装 salt-minion yum install salt-minion 配置文件配置: master:10.0.0.51 salt -ket -L:列出所有的minion主机 salt "主机名“ cmd.run "命令"

     

     

    puppet方式:(不用特别学习)

    rubby写的 ​

     

    分为三大部分: 1.服务器数据采集 目标: 实现上述三种方案,然后通过配置,可以任意的切换方案。 规划采集项目: bin:启动文件 conf:配置 lib:库文件或公共文件 src:源代码 test:测试目录 配置文件的管理: django的全局配置文件: 管理一些不常用的默认的配置 比如:语言, email配置等。 核心点: setattr, getattr, dir 的用法 代码: class Settings(): def init(self)


    核心点:
    setattr, getattr, dir 的用法
    代码:
    class Settings():
    def __init__(self):

    ## 整合全局配置文件
    for k in dir(global_settings):
    if k.isupper():
    v = getattr(global_settings, k)
    setattr(self, k, v)

    ## 整合自定义配置文件
    for k in dir(config):
    if k.isupper():
    v = getattr(config, k)
    setattr(self, k, v)
    settings = Settings()

     

     

    2.API获取数据并清洗入DB

    3.web界面的展示 ​```

  • 相关阅读:
    用 Python 脚本实现对 Linux 服务器的监控
    linux系统常用命令
    一小时学会用Python Socket 开发可并发的FTP服务器!!
    Python获取程序运行目录和脚本目录
    哪些情况会导致OOM
    如何查看端口状态
    wait(),sleep(),notify(),join()
    cookie和session的区别与会话跟踪技术
    TCP的可靠性
    OSI和TCP/IP的对比+IP地址分类
  • 原文地址:https://www.cnblogs.com/sudaguo/p/10867377.html
Copyright © 2011-2022 走看看