就在刚才,不会 Python 的那个运维被炒了

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

Python现阶段分析

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

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

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

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

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

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

那为什么是Python?

Python 第一是个非常牛的胶水语言,能满足绝大部分自动化运维的需求,又能做后端 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页面设置任务,传输到任务调度系统服务器上的客户端,客户端收集数据反馈给服务器端,服务器端根据任务具体内容调度后端的集群服务器做定时任务。

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

总结

几个实战项目之间的结合,可以理解成运维流程系统,就是规范运维的每一步操作,审批通过后,通过调用任务调度系统来定制批量操作。任务调度系统操作的过程中,可以通过CMDB资产管理系统来获取服务器的详细信息:ip地址、用户名、密码等。

如果是需要运维人员直接登陆到服务器上操作,需要通过跳板机来登陆服务器,记录谁登陆了哪台服务器,具体做了什么操作等。

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

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

*声明:推送内容与图片均源自公开互联网,部分内容会有所改动,侵删。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180724A1BTJ900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券