1.1.2 什么是成熟的自动化运维平台
现在成熟的自动化运维平台都具备哪些要素呢?一般来说,有以下几点:
(1)需要有支持混合云的配置管理数据库(CMDB)。CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相连,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程来保证数据的准确性。现在更多的企业选择将服务器资源放在云上,无论是公有云还是私有云都提供资源管理接口,利用这些接口构建一个自动化的CMDB,同时增加日志审计功能,通过接口对资源的操作都应该记录,以供后续审计。
(2)有完备的监控和应用性能分析系统。运维离不开监控和性能分析。资源监控(如服务器、磁盘、网络)和性能监控(如中间件、数据库)都是较为基础的监控,开源工具有Zabbix、Nagios、OpenFalcon(国产)。应用性能分析,如某些Web请求的响应速度、SQL语句执行的快慢等对于问题的定位是非常有帮助的,其开源工具有pinpoint、zipkin、cat,商业工具有New Reclic、Dynatrace。
(3)需要具备批量运维工具。如何有效降低运维的成本呢,肯定是更少的人干更多的活。批量运维工具可有效节省大量人力,使用少量的人管理大量的服务器软/硬件资源成为可能。开源的批量运维工具有ansible、saltstack、puppet、chef,其中ansible和saltstack纯由Python编写,代码质量和社区活跃程度都很高,推荐使用。
(4)需要有日志分析工具。随着服务器的增多,日志的采集和分析成了运维中的难点,试想如何快速地从成百上千台服务中采集日志并分析出问题所在呢?日志采集方面工具有Sentry,也是纯由Python打造,日志分析有ELK,两者都是开源的。
(5)需要有持续集成和版本控制工具。持续集成是一种软件实践,团队成员经常集成他们的工作,每次集成都通过自动化的构建来验证,从而尽早发现集成错误。持续集成的工具有Hudson、CruiseControl、Continuum、Jenkins等。版本控制是软件开发中常用的工具,比较著名的是svn、git。
(6)还要有漏洞扫描工具。借助商业的漏洞扫描工具扫描漏洞,保护服务器资源不受外界的攻击。