今天面试,遇一面试经理,直接抛给我这样的问题~!我的回答给他不是满意的。所以来这提问下。


现阶段,掌握一门开发语言已经成为高级运维工程师的必备计能,不会开发,你就不能充分理解你们系统的业务流程,你就不能帮助调试、优化开发人开发的程序, 开发人员有的时候很少关注性能的问题,这些问题就得运维人员来做,一个业务上线了,导致 CPU 使用过高,内存占用过大,如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用这么多,然后呢?然后就交给开发人员处理了,这样咋体现你的价值?

另外,大一点的公司,伺服器都上几百,上千,甚至数万台,这种情况下怎样做自动化运维?用 SHELL 写脚本 FOR 循环?呵呵,歇了吧, SHELL 也就适合简单的系统管理工作。到复杂的自动化任务还得要用专门的开发语言。你可能说了,自动化管理有专门的开源软体\监控也有,直接拿来用下就好了,但是现有的开源软体如 puppetsaltstackzabbix
agio 多为通用的软体,不可能完全适用你公司的所有需求,当你需要做定制、做二次开发的时候,你咋办?找开发部门?开发部门不懂运维的实际业务逻辑,写出来的东西烂烂不能用,这活最后还得交给运维开发人员来做。

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

那为什么是Python?PYTHON 第一是个非常牛 B 的脚本语言, 能满足绝大部分自动化运维的需求,又能做后端 C/S 架构,又能用 WEB 框架快速开发出高大上的 WEB 界面,只有当你自已有能力做出一套运维自动化系统的时候,你的价值才体现出来,你才有资格跟老板谈重视, 否则,还是老老实实回去装机器吧。

下面我们来说说主要的几个在Linux运维中的应用吧:

第一、Python开发的jumpserver跳板机

jumpserver跳板机是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。

企业主要用于解决:可视化安全管理

特点:完全开源,GPL授权

Python编写,容易再次开发

实现了跳板机基本功能:认证、授权、审计 ,集成了Ansible,批量命令等、支持WebTerminal

Bootstrap编写,界面美观 ,自动收集硬体信息 ,录像回放 、命令搜索 、实时监控 、批量上传下载

第二:Python开发的Magedu分散式监控系统

以自动化运维视角为出发点,自动化功能、监控告警、性能调优,结合saltstack实现自动化配置管理等内容进行了全方位的深入剖析。

企业主要用于解决:自动化监控常用系统服务、应用、网路设备等

监控系统需求讨论:

监控常用系统服务、应用、网路设备等?一台主机上可监控多个不同服务、不同服务的监控间隔可不同?同一个服务在不同主机上的监控间隔、报警阈值可不同?告警级别?数据可视化,如何做出简洁美观的用户界面?如何实现单机支持5000+机器监控需求?采取何种通信方式?主动、被动?

第三:Python开发的Magedu的CMDB

cmdb的开发需要包含三部分功能:采集硬体数据、API、页面管理。

企业主要用于解决:自动化管理笔记本、路由器等常见设备的日常使用

执行服务的过程如下:伺服器的客户端采集硬体数据,然后将硬体信息发送到API,API负责将获取到的数据保存到资料库中,后台管理程序负责对伺服器信息的配置和展示。

第四:Python开发的任务调度系统

Python任务调度系统的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。

企业主要用于解决:自动化把一个服务进程分布到其他多个机器的多个进程中

一个服务进程可以作为调度者,将任务分布到其他多个机器的多个进程中,依靠网路通信。想到这,就在想是不是可以使用此模块来实现一个简单的作业调度系统。

第五:Python运维流程系统

使用python语言编写的调度和监控工作流的平台内部用来创建、监控和调整数据管道。任何工作流都可以在这个使用Python来编写的平台上运行。

企业主要用于解决:自动化创建、监控和调整数据管道

是一种允许工作流开发人员轻松创建、维护和周期性地调度运行工作流(即有向无环图或成为DAGs)的工具。这些工作流包括了如数据存储、增长分析、Email发送、A/B测试等等这些跨越多部门的用例。

这个平台拥有和 Hive、Presto、MySQL、HDFS、Postgres和S3交互的能力,并且提供了钩子使得系统拥有很好地扩展性。除了一个命令行界面,该工具还提供了一个基于Web的用户界面让您可以可视化管道的依赖关系、监控进度、触发任务等。

——————————

以上为常见的五种应用,请指点!

Python自动化主要帮助企业解决日常繁杂的工作事务,数据化、可视化的监控日常的业务运行情况。

欢迎一起交流和补充!


因为人生苦短。
1、公司层面,运维自动化的要求。2、自己方面,学会python,将python应用到运维自动化,可以涨工资。
搬运一下答案:

「让系统易于管理,是一个工程。只有像puppet(ruby),saltstack(python)
这样的自动化管理工具,才能完整的描述整个系统,并且让系统管理的方方面面纳入统一的体系,而不是一堆脚本。

python在伺服器管理工具上非常丰富,配置管理(saltstack) 批量执行( fabric, saltstack) 监控(Zenoss, nagios 插件) 虚拟化管理( python-libvirt) 进程管理 (supervisor) 云计算(openstack) ...... 还有大部分系统C库都有python绑定。


对于流程确定的事情,最终一定是纳入系统管理的体系,写成程序,成为系统的一部分。而不是无法复用游离与整体的各种脚本。
随著云计算时代的来临,中小型公司,不需要运维了。大型公司,没有工程开发能力的运维,是没有竞争力的。

作者:范三山


链接:Python 在 Linux 系统运维中都有哪些应用? - 范三山的回答
相关问题
  • 为什么要学 Python? 31 个回答
  • 你为什么要学编程? 16 个回答
  • 怎样学 Python? 16 个回答
  • 为什么 Python 不是 lexical scoping? 12 个回答
  • 有一定的基础,如何学python? 13

-------------------------

我估计(1)他们团队用python的比较多(2)理论上,运维用bash+linux cmd或者小应用的b格更高而且更简单,但是bash毕竟语法有点恶心,你见过哪个编程语言if/fi的

所以 python是脚本语言中,语法相对来说比较简单,比较强大,还比较好学的


纯粹的运维,发展肯定不如会开发的运维好!一些运维的小工具,自己能开发最好了如果一个运维,能有不错的开发基础,可以更深入的参与到项目的开发中,能理解软体开发的需求和难题,能跟得上开发的思维,能更好的跟开发沟通!最重要的是,能吹牛B,能涨工资!最近运维自动化,非常火,然后其中以Python占多,因为Python的是一种胶水式的语言,什么都能做!Python简单易学,代码容易读!
你努力让运维与PYTHON发生关系就可以了。
推荐阅读:
查看原文 >>
相关文章