自动化运维系统具备的功能

一个成熟的自动化运维系统至少应该包括三个子系统:

机房设备数据系统 (EMDB)

1.录入机房服务器和网络设备的各种信息,比如机器型号,硬盘大小,OS类型,所属应用,运行状态,机房名称,所在房间,机架,位置等等各种信息,这是一个最基础的数据库,最主要的目的是给每个机器从多个维度统一打上各种标签,方便其他系统的使用。

2.提供各种查询API接口,并做好权限控制。目的是能够被上层的各种系统调用,一般是rest接口,xml接口。然后基于各种语言做相应的封装库。

应用监控系统(Appmonitor)

      1.一个统一的数据采集模块,用于采集设备运行信息,包括磁盘IO,网络流量,CPU利用率,网络设备的Session数,PPS。这个采集模块在网络设备上一般可以通过snmp来实现,在服务器上一般通过一个定制化的Agent来实现,这个Agent最基础的能力是采集服务器运行数据,最重要的是能执行各种脚本语言并通过脚本语言实现对服务器的各种操作(如更改配置,分析应用日志并输出结果)。

2.监控数据存储与可视化,数据采集模块采集到各种数据会很多,但对事务性没啥要求,可以用各种NoSQL数据库如Hbase,Cassandra等来实现。数据的可视化是一个可以做的很深且偏应用层面的东西,一般在监控系统上只实现最基本的曲线图展示,提供按时段选择和对比的功能,其他复杂的可视化操作通过各种API来实现。

3.监控项添加和报警通知,监控项是一种层次结构,而不是列表结构。上层节点的配置能够被下层节点的配置覆盖掉。对网络设备来说监控项就是一些不同的oid。借助于底层的数据采集模块,对服务器来说监控项基本上就是一个脚本。可以分为标准监控项和自定义监控项,标准监控项最大化的通用,实现cpu,内存,磁盘,网络等信息的监控。自定义监控项可以用多种系统管理脚本语言(shell,python,perl)等实现,脚本的输出符合一定规范即可,一般采用行结构或json串。每个监控项设定warn,crit报警阈值和若干报警联系人,阈值一般是数值型,特殊的可以是字符串。超过阈值的监控项会发送报警给联系人,报警可以通过短信,邮件,IM软件发出。报警发送要支持合并报警,频率控制,关闭报警。要不然可能一次小故障就能发出成千上万条报警,报警就失去效果了。

4.监控Api接口,并做好权限控制。做法和目的与EMDB一样。开放监控数据获取,报警消息发送,配置推送的接口。主要目的是让监控系统里面的数据能够被外界利用,可以在这些数据基础上做更加绚丽复杂的数据可视化工作,或者做一些更加个性化的监控和报警。次要目的是支持对服务器的统一操作,比如公司所有机器统一升级系统软件的版本。建议统一操作的API接口仅对少数几个人开放,并且权限严格控制。

发布和线上配置管理系统(ReleaseManager)

1.应用发布和依赖库版本管理,应用发布是运维与开发对接的重要环节,一般发布系统会和svn系统紧密结合,svn系统里面会有线上应用的列表,EMDB里面会有各个机器所属的应用。发布系统会用到这些数据,将svn系统里面生成的应用包及其依赖包发布到线上,并且自身对这些应用包和依赖包进行版本管理和控制,在应用发布出现问题时可以回滚到上一个版本。

2.线上配置管理,类似于linux下puppet的功能,主要用于应用服务器上关键配置文件的版本控制,分发,一致性维护工作。大应用一般是若干台服务器组成集群提供服务,要求这若干台服务器的应用配置是一致的,但有时候又存在应用的灰度发布操作,或者某人误更改配置。线上配置管理系统要求提供统一的配置修改入口,对灰度发布提供支持,同时对于误更改配置情况进行纠正。执行操作可以借助于Appmonitor的接口。

以这三个系统为基础可以做更多的自动化工作,比如说财务人员可以用EMDB里面的数据准确的计算Capex&Opex,机房管理人员可以用EMDB通过OOB远程执行各种关机,重装系统,网络设备维护等工作,不在现场也能管理机器,现场工作可以外包完成。应用开发人员可以通过svn系统调用Releasemanager自主打包,发布,回滚应用。应用维护人员可以调用监控系统获取数据和报警信息,通过编写相关脚本,实现一些简单报警的自动化处理工作,提升效率。

时间: 2024-11-07 15:41:29

自动化运维系统具备的功能的相关文章

程序员简单打造一个灵活智能的自动化运维系统C#实例程序

你是一个程序员,被派去管理公司500台计算机.这些机器可能需要执行一些自动化任务,一台台手动操作会把你累死.重复性的工作还是交给电脑处理,怎么解决这个问题呢?一个自动化的运维系统是必须的.自己实现的好处是直观,可以掌握运维的每一个环节. 思路 可以在这些电脑上安装一个程序,此程序定期执行一个请求,去我们的中心服务器上获取指令,然后执行这些指令就可以了.这些指令可以是一个脚本文件,但最通用的应该是一个包含指令的压缩包.大体的步骤就是:下载->解压->运行. 实现 客户端开发,C#开发一个wind

CheungSSH国产中文自动化运维堡垒机3.0

CheungSSHWeb3.0   前言 虽然不优秀,但请给予支持和理解 在当今互联网的发展大势下,云计算和大数据已经成为主导.在两大趋势下,企业的服务器数量日益增多,如何有效的管理众多的服务器,已经成为了各大公司考虑的问题.在传统的人工管理模式下,已经很难做到高效的维护,是人管理服务器?还是服务器管理人? 为了解决这个问题,我痴迷于运维自动化研究,目前后端使用的Python语言+Django的Web框架,前端使用Bootstrap+Javascript+jQuery框架开发的CheungSSH

ansible自动化运维必备工具详解

第2章 ansible简单介绍: 2.1 ansible是什么? ansible是新出现的 自动化 运维工具 , 基于Python研发 . 糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. 仅需在管理工作站上安装 ansible 程序配置被管控主机的 IP 信息,被管控的主机无客户端. ansible 应用程序存在于 epel( 第三方社区 ) 源,依赖于很多 python 组件 python语言是运维人员必会的语言!ansible是一个基于Python开

从零到一 | 如何搭建数据库自动化运维体系

需求背景: 随着业务的增长.对运维效率和质量的要求不断提高,对自动化运维体系的需求也不断增强. 目前笔者服务的很多中大型企业客户,运维其实还停留在“刀耕火种”的原始状态. 这里所说的“刀”和“火”就是运维人员的远程客户端,例如 xshell 和Windows 远程桌面. 这种工作模式有很多局限性, 比如服务器.数据库.中间件等的安装.初始化,应用软件部署.服务发布和监控都是通过手动方式来完成的. 这就需要运维人员登录到服务器上,一台一台去管理和维护. 如果有个几十上百台,累就累死人了. 笔者曾运

企业实战脚本案例3:批量管理自动化运维100台小规模服务器

批量管理自动化运维100台小规模服务器 目录 1.脚本背景介绍 2.脚本技术需求分析 2.1 SSH免登陆认证 2.2 Expect实现key分发 2.2 PSSH家族命令详解 3.脚本功能及实现过程 3.1 脚本运行环境介绍 3.2 脚本功能介绍 3.3 脚本编写思路 3.4 脚本编写案例 一.脚本背景介绍 在企业中经常会用遇到小规模的集群服务器,在日常的管理中经常会遇到重复性的动作,如更新备上百台服务器上的ssh公钥.备份上百台服务器上的/etc/passwd配置文件等等,通常情况下采用专用

自动化运维之Cobbler部署系统

一 .Cobbler简介 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP.DNS.yum仓库.构造系统ISO镜像. Cobbler支持命令行管理,web界面管理,还提供了API接口,方便二次开发 Cobbler客户端Koan支持虚拟机安装和操作系统重新安装,使重装系统更便捷. Cobbler提供的功能 使用C

简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环)

简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环) http://www.cnblogs.com/M18-BlankBox/p/5881700.html

自动化运维工具Ansible详细部署

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 =========================================================

Ansible自动化运维工具部署及使用

一.Ansible介绍 1.简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inven