《课件-基于Python的企业级运维平台》由会员分享,可在线阅读,更多相关《课件-基于Python的企业级运维平台(23页珍藏版)》请在金锄头文库上搜索。
1、基于Python的企业级运维平台华图教育 郭宏泽企业运维面临的挑战系统架构随着IAAS云化, 容器化,PAAS 智能化,依赖 库多样化, RUNTIME复杂 化,运维人员 无法应对新时 代的运维要求。技术债务由于资源成本 压力,中小企 业的IT运维及IT 系统存在大量 历史债务,其 结果就是在产 品和服务上无 法满足需求, 形成恶性循环人员流动由于系统的混 乱,高层不懂 技术,导致牛 人招请不起, 技术好的招不 来,来了待不 久,技术人员 流动率大,系 统稳定性,可 持续性极差。战略规划大多中小企业 没有IT战略规 划,在IT资源 投入上分配不 合理,该花钱 的没花,不该 花的浪费严重, 技术
2、团队无法 支撑企业IT的 实际要求。运维平台的发展自动化平台化ITIL流程配置管理分工模糊运维平台流程系统脚本工具手工运维智能运维智能运维智能报警、数据分析平台开发理念平台设计理念敏捷开发快速迭代灰度发布模块化开发不断重构经验沉淀运维平台功能纵览设备采购 合同管理 成本管理 预算管理 运营报表 考核管理运营模块资产管理IDCNetworkServer虚拟化CDN操作系统DNS应用配置软件包配置文件监控属性业务属性架构属性权限属性运营属性运维平台API统一运维门户(OSS运营支撑系统)部署自动化 配置自动化 巡检自动化 作业管理 故障自愈 部署流水线运维模块基础监控 系统监控 应用监控 业务监控
3、 服务监控 终端监控准入管理 用户管理 权限管理 角色管理 授权管理 操作审计事件管理 变更管理 资源管理 发布管理 知识管理 流程规范数据分析 事件分析 性能分析 趋势预测 智能决策 ChatOps智能模块监控模块安全模块流程模块后台技术选型uJava+SSH | Spring Cloud+OracleuRuby on rail + PostgreSQLuPython+Django | Flask + MysqlDjangoMTV极速开发URLControllerDatabaseModels数据平面控制平面展现平面VIEWTemplateStatic1、Requests 2、Forward
4、3、Call 4、ORM 5、Return Data 6、Templete 7、Render 8、Response前端资源uAdminlte 主体框架uBootstrap 图形条目uJquery特效应用ufont-awesome 图标字体uLayer 弹窗组件uEcharts 监控图表资产管理CMDB 表设计 Host 服务器 Group 服务器组 IDC 所在机房 Cabinet 机柜 Asset_type 资产类型 Asset_status 资产状态 产品线 工程 负责人 认证中心基于CMDB的应用配置信息CMDB整合Ansible自动上报资产API接口 使用Django HTTP SER
5、VER而非Socket 使用Http Post方法上传 使用Json传递数据 数据处理后直接插入数据库csrf_exempt token_verify() def collect(request): asset_info = json.loads(request.body) if request.method = POST: vendor = asset_infovendor disk = asset_infodisk cpu_model = asset_infocpu_model cpu_num = asset_infocpu_num memory = asset_infomemory sn
6、 = asset_infosn host.save()Agent设计原则 Python 2.7兼容3.x语法 Shell直接提取数据 Psutil数据采集 其它数据采集(SNMP) 使用Http Post Json数据到服务器API接口 Schedule 循环采集 使用Systemd或supervisor进程守护 mem: available: 2798, used: 764, , hostname: adminset, token: eMRdmYHXcb3P, net: nic_name: lo, traffic_out: 5, traffic_in: 5 , , disk: mountpo
7、int: /, total: 57.78, used: 5.12, free: 52.66, percent: 8.9 , mountpoint: /boot,token验证的实现def token_verify():def decorator(view_func): def _wrapped_view(request, *args, *kwargs): set_token = get_dir(token) error_info = “Post forbidden, your token error!“ if request.method = POST: post_token = json.l
8、oads(request.body) if set_token = post_token“token“: return view_func(request, *args, *kwargs) else: return HttpResponse(error_info, status=403) if request.GET: post_token = request.GETtoken if set_token = post_token: return view_func(request, *args, *kwargs) else: return HttpResponse(error_info, st
9、atus=403) return HttpResponse(error_info, status=403)return _wrapped_view基于celery的异步任务中心基于celery的异步任务中心任务1任务2任务3任务4TasksBrokerwork1work2work3work4监控平台 不要使用关系型数据库存储监控数据 推荐使用influxdb rrdtool prometheus存储监控数据 本例使用mongodb进行存储监控数据 使用Echarts或Grafana图表展现 使用Json数据传递 使用JS异步回调实时刷新数据监控平台会调用cmdb中的主机信息,自动维护监控条目。监控上报模式运平台化AgentAgentAgentMQServerDBEcharts运维任务自动处理运平台化开发自助化AgentAgentAgentMQServer监控DBEcharts策略报警自愈CMDB故障处理自动化部署THANKS