LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 24159|回复: 0

自动化运维是干嘛的?自动化运维要掌握哪些技能?

[复制链接]
发表于 2024-1-5 15:25:58 | 显示全部楼层 |阅读模式
所谓自动化运维,即在最少的人工干预下,结合运用脚本与第三方工具,保证业务系统7*24小时高效稳定运行。这应该是所有业务系统运维终极目标。
按照运维的发展成熟度来看,运维大致可分为三个阶段:
  • 依靠纯手工,重复的进行软件的部署与运维;
  • 通过编写脚本,方便的进行软件的部署与运维;
  • 借助第三方工具,高效的进行软件的部署与运维;

我们对运维的要求通常是:
1、事前预警
         对各业务系统和底层的软硬件进行监控,以保证业务系统的正常运行。做到事前预警,避免故障来临,后知后觉。
2、事中解决
   天有不测风云,即使是再完美的方案也可能有预料之外的故障,为保证在最短时间内恢复业务,系统必须能快速定位故障点。并进行告警分派并解决
3、事后闭环
   这里更加强调运维管理的流程方法,针对已产生的告警进行告警分派,解决。形成告警的闭环管理。
要实现以上要求,需要一个经验丰富且高效的运维团队,随着我们的业务系统不断增加,业务量的不断上升,传统依靠纯手工的运维方式,逐渐被淘汰。
我们更多的将注意力集中在通过脚本与借助第三方工具的运维方式上,这样不仅能满足我们对运维的要求,解放生产力,还能使我们的运维管理更加规范化,标准化,从而真正意义上的实现自动化运维。
自动化运维的实现工具(脚本与第三方工具,通常这两者须结合使用。)
脚本(SHELL、DOC)
1、硬件状态监控:通过编写脚本,对CPU、MEM、DISK、TOPProcesses、Network等关键硬件参数状态进行实时监控,发现异常触发告警信息给管理员;
2、业务拨测:通过编写脚本对常用业务的网站实时进行拨测,发现网站页面异常触发告警信息给管理员;
3、系统安全加固:通过编写脚本对常用的Windows、Linux、Unix服务器进行快速的安全加固;
4、数据备份:通过编写脚本实现关键业务数据,关键日志,数据库,操作系统,中间件等的快速备份(本地与异地);
第三方管理工具(运维监控系统--PIGOSS BSM )
针对一些比较重要的业务系统,我们建议可以使用比较成熟的第三方运维监控工具。运维监控工具一般都能实现以上运维需求,而且管理操作起来也更加方便。
服务器监控
PIGOSS BSM可通过带外、带内方式对PC服务器、小机及刀箱底层硬件状态进行全面的监控,包括处理器、内存、硬盘、电源、风扇、温度、插槽等硬件状态和配置信息,代替管理员的日常机房巡检工作,使管理员实时了解到服务器底层硬件的运行情况
***、虚拟化、AIX等专业的应用监控
PIGOSS BSM 对于***的监控是汲取了专业的*** DBA的一线经验,把实际应用场景对于***的关注信息沉淀到产品中,其中SQL-TOP排序、ORA错误日志等功能得到用户的极大认可,通过一体化视图呈现***的整体运行状态。
虚拟化监控通过图形化方式构建出宿主机、虚拟机、虚拟网络、数据存储间资源使用情况,从全局到局部的一体化视图,便于用户直观全面了解当前虚拟化环境的健康状况。
业务大屏
PIGOSS BSM的业务大屏对各类业务系统,从基础网络、系统服务、中间件、数据库和存储设备多个层级进行全方位监控,为运维管理人员提供全局的业务健康度一览。业务雷达图及状态矩阵实时扫描各业务系统的最新告警及业务健康度,产出故障可直接追溯到最底层的告警源设备,便于运维工程师快速找到故障点。
第三方的运维工具是运维工作中不可或缺的一部分,如何构建适合自己的运维工具,每家的需求不一样,每个运维面对的痛点也不尽相同,但不管有什么需求,多少需求,万变不离其宗。运维监控的路上,我们一起前行。
代码上线,上线开始,把代码从代码版本管理器(svn、git)里面拿出来,然后copy到服务器,每一个步骤都是相同的,还得手巧代码非常费劲,那就写个shell,每次上线,我就执行shell就搞定了,如果十几二十几台服务器还能这么搞,多了估计你都乱了。这里面就需要使用自动化的一些工具:如,ansible、Saltstark、Puppet等,看你自己需求。
这些自动化运维工具,基本属于运维必备技能了,好多公司也都有要求。下面就详细唠唠自动化运维。
自动化运维-初级
自动化发布:利用自动工具,shell 。比如: ansible + shell + jenkins + gitlab 解决一些自动化发布问题
自动化部署: 利用 shell、ansible,编写playbook 做一些 标准化东西,例如:服务器初始化、服务初始化(nginx、mysql等等)
日志管理:可以用 rsyslog 管理日志,日志量多了,再打个包,或者弄个NFS存储,保留多少天。
监控自动化: 可以利用zabbix ,监控一些标准化的指标,根据服务器及业务的实际性能。
在这期间你都可以用shell 解决大部分问题,例如:mysql备份、代码发布、服务器初始化、日志管理等等。
这里面有个问题,当你服务器管理越多,你维护的成本越高,尤其是这里面还涉及到资源的管理、资源利用率、机器效能、SLA当你在弄这些的时候就比较麻烦。这时候你就需要弄个简单的CMDB类似的这种。当然开源的产品其实挺多的,但是适合你们公司估计就少了很多。这里面大部分都是用Python写的,当然也有java、go写的
这里的面的大部分问题,基本上运维工程师都能搞定,代码开发量很少(Shell),所需技术栈


如果想要进阶,参考下面
自动化运维- 进阶

  • 首先要弄个 CMDB,你可以叫基础信息管理、服务器信息管理等等或者资源信息。

    • 通常情况,我们会收集服务器信息,作为基础信息,后面写一些跟这个相关都需要使用这些基础信息,如:发布系统、监控管理、配置中心等等。
    • 这里面我们选择写这个系统的语言,大部分都是会使用Python+Django+bootstrap
    • 这里面还涉及到一个服务树的概念,后面再说

    发布系统,主要解决,代码自动发布。这里面有几个选择吧
    • 自己从头到尾写,包括设计、开发等等
    • 调用其他比较成熟的devops 工具,例如: 可以调用jenkins API、 或者gitlab runner 的API等

    无论你用哪种方式去写,都需要用到开发语言
  • 配置中心,主要解决,管理软件服务中的配置文件和代码中的配置文件。

    • 当然这里面有些成熟的配置中心可以做参考,但是不一定适用你们,如:disconf、Apollo等
    • 或者自己撸个程序。

    域名管理系统
    • 内网域名 管理,这里主要是指: IDC 机房内部、或者云上内部,例如:我们之前适用bind做内网解析的使用,天天维护配置文件,很烦。那我们就可以自己搞个系统。把配置文件这些数据都写到数据库中进行管理就会方便很多。
    • 外网域名管理,其实这个就是调用第三方接口,进行域名更改,例如: 万网API、Dnspod等等

    堡垒机,
    • 这里面也有开源产品,比较出名的 jumpserver
    • 或者自己撸系统

升级状态这块,其实都需要你具备一定开发技能,这里面大多数都用使用Python、Django来写,因此运维开发这个职位也就来了
当然如果你们公司已经上 docker、k8s,那你就需要去调用 k8s API 等等,这些都需要一定的开发基础
今天的主题来了,在众多的开发语言中,我选的是Python,我说下我为啥选Python
入门容易,你如果有Shell基础、学习这个基本问题不大
网上资料丰富,还有好多别人已经写好的包,直接拿过用就行,比较省事
对于你职业发展可有好处,运维开发、开发运维都是在相互渗透。业界比较推崇的Devops、Google的SRE
难点
面向对象那块有点模糊。尽量多敲、调试代码理解吧
选则框架的时候,尽量选易学的,好多公司也在用的,例如Django,如果之后你要跳槽,不至于再重新学个框架
一定要,根据需求写,例如: 自己写个blog练个手,然后再结合实际等等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表