不会 Python 的运维都将失业?(内含福利)

Posted mayite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不会 Python 的运维都将失业?(内含福利)相关的知识,希望对你有一定的参考价值。

 

技术分享图片

导言:2017年无疑是Python最火的一年,为什么Python这么火,这里面功劳最大的或许就是AlphaGo了,你知道吗?AlphaGo是用Python开发的哦!从技术领先的运维工具到人工智能学习程序,你都能看到Python的身影。那么对于运维来说,不会Python就将要失业吗?我想看了作者对在Linux 系统运维中Python都有哪些应用的分析你就会知道Python对运维的重要性了。

Python现阶段分析

现阶段,掌握一门开发语言已经成为高级运维工程师的必备技能。如果你不会开发,那么你就不能充分理解你们系统的业务流程,那么你就不能帮助调试和优化开发人开发的程序。开发人员有的时候很少关注性能相关的问题,这些问题谁来做呢?还是得运维人员来做。

不信?举个栗子一个业务上线了,导致 CPU 使用过高,内存占用过大。怎么办?这是运维来解决还是开发来解决?

如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用这么多,然后呢?通常情况下就直接交给开发人员处理了,开发人员一头雾水的处理问题,不能交付问题原因这样咋体现你运维的价值?

另外,大一点的公司,服务器都上几百,上千,甚至数万台,这种情况下怎样做自动化运维?用 SHELL 写脚本 FOR 循环?呵呵,歇了吧, SHELL脚本数量一多,你用什么来管理SHELL脚本? SHELL脚本也就适合简单的系统管理工作。

构建复杂的自动化任务还得是要用专门的开发语言。现有的开源软件如 puppet\saltstack\zabbix\nagio 这类软件很多。

但这些都是独立的系统软件,在运维自动化追求统一管理的今天,跨平台的维护你还能忍吗?不做定制、不做二次开发可行吗?可是你不会,咋办嘞?找开发部门?开发部门不懂运维的实际业务逻辑,写出来的东西烂,烂到不能用,这活最后还得交给运维开发人员来做。

其次,不会运维开发,你就不能自己写运维平台\复杂的运维工具,一切要借助于找一些开源软件拼拼凑凑,如果是这样,那就请不要抱怨你的工资低,你的工作不受重视了。

那为什么是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自动化主要帮助企业解决日常繁杂的工作事务,数据化、可视化的监控日常的业务运行情况。

欢迎一起交流和补充!

本文由高效运维原创作者投稿,高效运维社区致力于陪伴您的职业生涯,与您一起愉快的成长。











以上是关于不会 Python 的运维都将失业?(内含福利)的主要内容,如果未能解决你的问题,请参考以下文章

Linux运维都要会哪些shell编程技能?

50%运维都迷糊的Socket基础知识!

生产环境出现事故,开发和运维都有责任,到底该谁背锅

国内第二个Python自动化运维实名社群成立

运维团队组织架构设计

聊聊运维证明你是坏运维的七个迹象,不要做CPR运维