不会 Python 的运维都将失业?
作者:汤哥-马哥Python自动化运维课程助理研发人
导言:2017年无疑是Python最火的一年,为什么Python这么火,这里面功劳最大的或许就是AlphaGo了,你知道吗?AlphaGo是用Python开发的哦!从技术领先的运维工具到人工智能学习程序,你都能看到Python的身影。那么对于运维来说,不会Python就将要失业吗?我想看了作者对在Linux 系统运维中Python都有哪些应用的分析你就会知道Python对运维的重要性了。
Python现阶段分析
现阶段,掌握一门开发语言已经成为高级运维工程师的必备技能。如果你不会开发,那么你就不能充分理解你们系统的业务流程,那么你就不能帮助调试和优化开发人开发的程序。开发人员有的时候很少关注性能相关的问题,这些问题谁来做呢?还是得运维人员来做。
不信?举个栗子一个业务上线了,导致 CPU 使用过高,内存占用过大。怎么办?这是运维来解决还是开发来解决?
如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用这么多,然后呢?通常情况下就直接交给开发人员处理了,开发人员一头雾水的处理问题,不能交付问题原因这样咋体现你运维的价值?
另外,大一点的公司,服务器都上几百,上千,甚至数万台,这种情况下怎样做自动化运维?用 SHELL 写脚本 FOR 循环?呵呵,歇了吧, SHELL脚本数量一多,你用什么来管理SHELL脚本? SHELL脚本也就适合简单的系统管理工作。
构建复杂的自动化任务还得是要用专门的开发语言。现有的开源软件如 puppetsaltstackzabbix agio 这类软件很多。
但这些都是独立的系统软件,在运维自动化追求统一管理的今天,跨平台的维护你还能忍吗?不做定制、不做二次开发可行吗?可是你不会,咋办嘞?找开发部门?开发部门不懂运维的实际业务逻辑,写出来的东西烂,烂到不能用,这活最后还得交给运维开发人员来做。
其次,不会运维开发,你就不能自己写运维平台\复杂的运维工具,一切要借助于找一些开源软件拼拼凑凑,如果是这样,那就请不要抱怨你的工资低,你的工作不受重视了。
那为什么是Python?
PYTHON 第一是个非常牛 B 的胶水语言, 能满足绝大部分自动化运维的需求,又能做后端 C/S 架构,又能用 WEB 框架快速开发出高大上的 WEB 界面,还能做机器学习,只有当你自已有能力做出一套运维自动化系统的时候,你的价值才体现出来,你才有资格跟老板谈重视, 否则,还是老老实实回去装机器吧。
Python在Linux运维中的常见应用
第一、静态文件服务器
重点练习使用redux管理状态。前端api与后端交互、数据封装、状态变化等。
第二、Python开发的jumpserver跳板机
jumpserver跳板机是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。
企业主要用于解决:
可视化安全管理
- 特点:
完全开源,GPL授权,Python编写,Django开发框架,容易再次开发 - 实现了跳板机基本功能:
认证、授权、审计。集成了Ansible、批量命令等。功能强大。
通俗点就是起到监控谁在服务器上做了什么操作等。录像回放、命令搜索、实时监控、批量上传下载等。
第三:Python开发的Magedu分布式监控系统
以自动化运维视角为出发点,自动化功能、监控告警、性能调优,结合saltstack实现自动化配置管理等内容进行了全方位的深入剖析。
企业主要用于解决:
自动化监控常用系统服务、应用、网络设备等。分布式可监控更多服务器,分区域监控再汇总。Zabbix监控结合Python自定义监控脚本。
- 监控系统需求分析:
监控常用系统服务、应用、网络设备等?一台主机上可监控多个不同服务、不同服务的监控间隔可不同?同一个服务在不同主机上的监控间隔、报警阈值可不同?告警级别?数据可视化,如何做出简洁美观的用户界面?如何实现单机支持5000+机器监控需求?采取何种通信方式?主动or被动?
第四:Python开发的Magedu的CMDB
企业主要用于解决:
项目功能,采集硬件数据、Api、页面管理。统计资产,例如服务器存放位置,服务器上的账号等等。
- cmdb的开发需要包含三部分功能:
采集硬件数据、API、页面管理。 - 执行服务的过程如下:
服务器的客户端采集硬件数据,然后将硬件信息发送到API,API负责将获取到的数据保存到数据库中,后台管理程序负责对服务器信息的配置和展示。
第五:Python开发的任务调度系统
Python任务调度系统的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。
企业主要用于解决:批量管理crontab定时任务。原理用户通过web页面设置任务,传输到任务调度系统服务器上的客户端,客户端收集数据反馈给服务器端,服务器端根据任务具体内容调度后端的集群服务器做定时任务。
一个服务进程可以作为调度者,依靠网络通信将任务分布到其他多个机器的多个进程中。想到这,就在想是不是可以使用此模块来实现一个简单的作业调度系统。
第六:Python运维流程系统
使用Python语言编写的调度和监控工作流的平台内部用来创建、监控和调整数据管道。任何工作流都可以在这个使用Python来编写的平台上运行。
企业主要用于解决:通俗点说就是规范运维的操作,加入审批,一步一步操作的概念。
是一种允许工作流开发人员轻松创建、维护和周期性地调度运行工作流(即有向无环图或成为DAGs)的工具。这些工作流包括了如数据存储、增长分析、Email发送、A/B测试等等这些跨越多部门的用例。
这个平台拥有和 Hive、Presto、MySQL、HDFS、Postgres和S3交互的能力,并且提供了钩子使得系统拥有很好地扩展性。除了一个命令行界面,该工具还提供了一个基于Web的用户界面让您可以可视化管道的依赖关系、监控进度、触发任务等。
来个小总结
几个实战项目之间的结合,可以理解成,运维流程系统,就是规范运维的每一步操作,审批通过后,通过调用任务调度系统来定制批量操作。任务调度系统操作的过程中,可以通过CMDB资产管理系统来获取服务器的详细信息,ip地址,用户名,密码等。
如果是需要运维人员直接登陆到服务器上操作,需要通过跳板机来登陆服务器,记录谁登陆了哪台服务器,具体做了什么操作等。
以上为常见的五种应用,请指点!
Python自动化主要帮助企业解决日常繁杂的工作事务,数据化、可视化的监控日常的业务运行情况。
欢迎一起交流和补充!
马哥教育2017年Python自动化运维开发实战班,马哥联合BAT、豆瓣等一线互联网Python开发达人,根据目前企业需求的Python开发人才进行了深度定制,加入了大量一线互联网公司:大众点评、饿了么、腾讯等生产环境真是项目,课程由浅入深,从Python基础到Python高级,让你融汇贯通Python基础理论,手把手教学让你具备Python自动化开发需要的前端界面开发、Web框架、大监控系统、CMDB系统、认证堡垒机、自动化流程平台六大实战能力,让你从0开始蜕变成Hold住年薪20万的Python自动化开发人才。
咨询方式:微信搜索:18614299620(豌豆)