应用系统运维建设必备的几个方面

从知乎上看到有一篇针对应用运维建设讲解的几个必备的方面,个人觉得对运维的整体建设写的不错,特转载到此收藏参考。方便自己以后从下面几个方面参考建设运维体系。



结合现在云计算和DevOps的发展趋势,我觉得一个成熟的自动化运维平台应该包括以下的特性:
一、支持混合云的CMDB
现在越来越多的服务器都转到了云上,而主流的公有云、私有云平台都拥有比较完备的资源管理的API,这些API也就是构建一个自动化CMDB的基础。
新一代的自动化运维平台应该是可以基于这些API来自动维护和管理相关的服务器、存储、网络、负载均衡的资源的。
通过API对资源的操作都应该被作为操作日志记录下来,以备作为后续操作审计的基础数据。

CMDB
这个东西听上去是老生常谈,但这个确实是所有运维工具的基础设施。
而基于开源工具做运维平台最大的麻烦,就是如何在各个工具之间把CMDB统一起来。
CMDB
不统一起来,就意味着一旦要增加一台服务器,可能要在各个运维工具里面都要同步一下,这个还是非常折腾滴。。。

二、比较完备的监控+应用性能分析(APM
能支持对平台的可用性、服务器的性能、各种服务(web服务、应用服务、数据库服务)的性能进行监控。做的好一些应该能进行更深入、或者关联性的性能分析。

现在市面上一般都会将资源性能监控和应用性能监控(APM)混合着讲,这里面的产品确实也有很多都是重叠的,两方面都会涉及到。

开源的性能监控系统主流有的ZabbixNagios,国产的开源监控平台有小米OpenFalcon,但这些基本都只是做基本的资源监控(服务器,磁盘、网络等)和简单的服务软件的性能监控(中间件,数据库等)。

而市面上的APM系统更主打的功能是应用性能分析,比如能精确定位到某个应用的URL的访问速度快慢,某些SQL执行速度的快慢,这些对于开发人员和运维人员快速定位问题还是很有帮助的。
APM
这方面的商业工具,国外比较主流的有New ReclicDynatrace,国内的也就是透视宝、Oneapm、听云等,他们也提供了API进行集成。
APM
这方面的开源工具有pinpoint(一个韩国团队开源的),zipkintwitter开源),cat(大众点评开源)。

三、有一个还不错UI的批量运维工具
在业务发展比较快的情况下,从几台服务器,到几十台服务器,再到几百台服务器,批量运维的需求很自然就产生了,老板也希望越少的人干越多的活。

现在也有不少开源的批量运维工具,也都比较成熟了,比如puppetchefansiblesaltstack
puppet
chef都是ruby做的,实话实说,ruby的熟手市面上很少,比python不是难招一点。

我个人比较推荐使用ansible或者saltstack,这两个系统都是python写的,代码质量和社区活跃度都挺不错的。
ansible
有官方的web ui——Tower,但实话实说不好用,所以我们也在重新做一套自己用起来更顺手的WEBUI


四、日志集中分析工具
线上系统最常规的问题定位方式,就是日志分析了。
随着服务器的增多,日志的分析定位也成为一个难点和痛点(想象一下,系统出故障之后,要去几十甚至数百个节点去上去查日志,是有多折腾)。

国内有一家叫日志易的公司,是专门做日志分析方面的运维工具的。
另外还有一家log insight,也是做这个领域,但产品好像还处于beta阶段。

日志分析这个领域现在是一个热点,现在的开源方案也比较多了,比如著名的ELKStack,还有Flume+Kafka+Storm的体系。
上面这两个方案相对重一些,部署比较复杂,网上介绍的文章也不少。

比较轻量级的开源日志集中采集方案有python做的Sentry,他是通过改造各种语言的日志采集框架来实现日志的集中采集,各种主流的开发语言的日志框架都支持得很完整了,比如javalog4jlogpack
Sentry
的官网在此:Sentry - Track exceptions with modern error logging for JavaScript,Python, Ruby, Java, and Node.js

五、持续集成和发布工具
这方面其实比较难有统一的需求,很多公司集成发布的做法都差异挺大的。
持续集成方面,一般用jekins的比较多,这方面网上介绍的文章也很多。

而如何把打好的包发布至各台服务器,则可以通过批量运维工具或者脚本来完成了。
版本发布的过程涉及到很多细节,包括了版本文件的上传、分发、版本管理、回滚等各种操作。
对于一般不太复杂的项目,我比较推荐的做法是把打包好的文件上传到svn上,然后通过脚本在各台服务器上进行发布操作就行了,这样其实是利用了SVN来完成文件的上传、分发、版本管理、回滚等各种操作。

六、安全漏洞扫描工具
现在一个稍微有点知名度的系统,都会遭受各种各样的安全攻击的折磨。
一般的公司不太可能请得起专职的安全工程师,所以运维工程师最好能自己借助一些安全扫描工具来发现自己系统的漏洞。
安全工具方面我了解不多,不太熟这个领域的开源工具。
之前乌云网推出过一个SaaS化的漏扫平台——唐朝巡航,有对外提供漏洞扫描的API,不过最近乌云网一直在升级,所以也就暂时无法调用了。

个人觉得,如果上述功能都有了,基本上大部分中小规模企业的日常运维工作的高频操作都覆盖到了。
如果是比较大的互联网企业,或者还有一些特殊的业务需求,那就具体问题具体分析了。


 



  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
应用运维工程师是负责管理和维护企业应用系统的专业人员,以下是应用运维工程师必备的技能: 1. 应用部署与配置管理:熟悉应用的部署和配置,能够根据需求进行应用的安装、升级、配置和优化。 2. 熟悉常见应用服务器:如Tomcat、Nginx、Apache等,能够进行应用服务器的安装、配置和监控。 3. 故障排除与性能优化:具备故障排查和问题解决的能力,能够定位应用程序故障,并进行性能优化。 4. 日志分析与监控:熟悉日志分析工具,如ELK、Splunk等,能够对应用日志进行分析和监控,及时发现和解决问题。 5. 数据库管理与优化:熟悉常见数据库(如MySQL、Oracle等)的管理和优化,能够进行数据库备份、恢复和性能调优。 6. 自动化运维:具备自动化运维工具的使用经验,如Ansible、Puppet等,能够编写脚本或使用工具进行自动化部署和配置。 7. 安全管理与防护:了解应用系统的安全基础知识,能够进行漏洞扫描、安全配置和应急响应。 8. 团队协作与沟通能力:良好的团队合作能力和沟通能力,能够与开发团队、测试团队等密切配合,共同解决问题。 9. 持续集成与持续部署:熟悉持续集成和持续部署的概念和工具,如Jenkins、Docker等,能够进行自动化构建和部署。 以上是应用运维工程师必备的一些技能,不同的企业和岗位可能会有一些特定的要求,可以根据实际情况进行学习和提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值