Funktionen, die ein ausgereiftes automatisiertes Betriebs- und Wartungssystem haben sollte

Im Folgenden die Antworten einiger Experten,Sehr wertvoll.

Autor:Messergriff fünfgliedrig:https://www.zhihu.com/question/23228213/answer/116940889
著作权归作者所有。Für kommerziellen Nachdruck kontaktieren Sie bitte den Autor zur Genehmigung,Bitte geben Sie die Quelle für den nicht-kommerziellen Nachdruck an。

Kombinieren Sie den aktuellen Entwicklungstrend von Cloud Computing und DevOps,Ich denke, eine ausgereifte automatisierte Betriebs- und Wartungsplattform sollte die folgenden Funktionen umfassen:

einer、支持混合云的CMDB

现在越来越多的服务器都转到了云上,Die Mainstream-Public Cloud、Private Cloud-Plattformen verfügen über relativ vollständige Ressourcenverwaltungs-APIs,

Diese APIs sind auch die Grundlage für den Aufbau einer automatisierten CMDB。

Die neue Generation der automatisierten Betriebs- und Wartungsplattform sollte in der Lage sein, Server basierend auf diesen APIs automatisch zu warten und zu verwalten、Lagerung、Das Internet、Ressourcen mit Lastenausgleich。

Operationen auf Ressourcen über API sollten als Operationsprotokolle aufgezeichnet werden,Zur Vorbereitung als Basisdaten für das Folgebetriebsaudit。

CMDB klingt wie ein Klischee,Aber das ist tatsächlich die Infrastruktur aller Betriebs- und Wartungstools。

Der größte Ärger für den Betrieb und die Wartung von Plattformen auf Basis von Open-Source-Tools,So vereinheitlichen Sie CMDB zwischen verschiedenen Tools。

CMDB ist nicht vereinheitlicht,Dies bedeutet, dass Sie, sobald Sie einen Server hinzufügen müssen,Es muss möglicherweise in verschiedenen Betriebs- und Wartungstools synchronisiert werden,

Das ist immer noch sehr werfen。。。

zwei、比较完备的监控+应用性能分析(APM)

能支持对平台的可用性、Serverleistung、Diverse Dienste (Webdienste、Anwendungsservice、Datenbankdienst) Leistungsüberwachung。

Besser zu machen sollte in der Lage sein, tiefer zu gehen、Oder Korrelationsleistungsanalyse。

Heutzutage sind Ressourcenleistungsüberwachung und Anwendungsleistungsüberwachung (APM) im Allgemeinen gemischt auf dem Markt.,Da sind tatsächlich viele Produkte drin

重叠的两方面都会涉及到

开源的性能监控系统主流有的Zabbix、Nagios,国产的开源监控平台有小米OpenFalcon但这些基本都只

是做基本的资源监控(服务器磁盘网络等)和简单的服务软件的性能监控(中间件数据库等)

而市面上的APM系统更主打的功能是应用性能分析比如能精确定位到某个应用的URL的访问速度快慢

某些SQL执行速度的快慢这些对于开发人员和运维人员快速定位问题还是很有帮助的

APM这方面的商业工具国外比较主流的有New ReclicDynatrace国内的也就是透视宝Oneapm

听云等他们也提供了API进行集成

APM这方面的开源工具有pinpoint(一个韩国团队开源的)zipkin(twitter开源)cat(大众点评开源)

有一个还不错UI的批量运维工具

在业务发展比较快的情况下从几台服务器到几十台服务器再到几百台服务器批量运维的需求很自然

就产生了老板也希望越少的人干越多的活

现在也有不少开源的批量运维工具也都比较成熟了比如puppetchefansiblesaltstack

puppet和chef都是ruby做的实话实说ruby的熟手市面上很少比python不是难招一点

我个人比较推荐使用ansible或者saltstack这两个系统都是python写的代码质量和社区活跃度都挺不错的

ansible有官方的web ui—Tower但实话实说不好用所以我们也在重新做一套自己用起来更顺手的WEB UI

日志集中分析工具

线上系统最常规的问题定位方式就是日志分析了

随着服务器的增多日志的分析定位也成为一个难点和痛点(想象一下系统出故障之后要去几十甚至

数百个节点去上去查日志是有多折腾)

国内有一家叫日志易的公司是专门做日志分析方面的运维工具的

另外还有一家log insight也是做这个领域但产品好像还处于beta阶段

日志分析这个领域现在是一个热点现在的开源方案也比较多了比如著名的ELKStack

还有Flume+Kafka+Storm的体系
上面这两个方案相对重一些部署比较复杂网上介绍的文章也不少

比较轻量级的开源日志集中采集方案有python做的Sentry他是通过改造各种语言的日志采集框架来实现日志

的集中采集各种主流的开发语言的日志框架都支持得很完整了比如java的log4j和logpack

Sentry的官网在此

SentryTrack exceptions with modern error logging for JavaScript, Python, Ruby, Java, and Node.js

持续集成和发布工具

这方面其实比较难有统一的需求很多公司集成发布的做法都差异挺大的

持续集成方面一般用jekins的比较多这方面网上介绍的文章也很多

而如何把打好的包发布至各台服务器则可以通过批量运维工具或者脚本来完成了

版本发布的过程涉及到很多细节包括了版本文件的上传分发版本管理回滚等各种操作

对于一般不太复杂的项目我比较推荐的做法是把打包好的文件上传到svn上然后通过脚本在各台服务器上

进行发布操作就行了这样其实是利用了SVN来完成文件的上传分发版本管理回滚等各种操作

安全漏洞扫描工具

现在一个稍微有点知名度的系统都会遭受各种各样的安全攻击的折磨

一般的公司不太可能请得起专职的安全工程师所以运维工程师最好能自己借助一些安全扫描工具来发现

自己系统的漏洞

安全工具方面我了解不多不太熟这个领域的开源工具

之前乌云网推出过一个SaaS化的漏扫平台—唐朝巡航有对外提供漏洞扫描的API不过最近一直在升级

所以也就暂时无法调用了

个人觉得如果上述功能都有了基本上大部分中小规模企业的日常运维工作的高频操作都覆盖到了

如果是比较大的互联网企业或者还有一些特殊的业务需求那就具体问题具体分析了
Autor:董俊杰 链接:https://www.zhihu.com/question/23228213/answer/23996269著作权归作者所有
Für kommerziellen Nachdruck kontaktieren Sie bitte den Autor zur Genehmigung,Bitte geben Sie die Quelle für den nicht-kommerziellen Nachdruck an。
一个成熟的自动化运维系统至少应该包括三个子系统:

  • 机房设备数据系统 (EMDB)
  1. 录入机房服务器和网络设备的各种信息比如机器型号硬盘大小OS类型所属应用运行状态机房名称所在房间机架位置等等各种信息这是一个最基础的数据库最主要的目的是给每个机器从多个维度统一打上各种标签方便其他系统的使用
  2. 提供各种查询API接口并做好权限控制目的是能够被上层的各种系统调用一般是rest接口xml接口然后基于各种语言做相应的封装库
  • 应用监控系统(Appmonitor)
  1. 一个统一的数据采集模块用于采集设备运行信息包括磁盘IO网络流量CPU利用率网络设备的Session数PPS这个采集模块在网络设备上一般可以通过snmp来实现在服务器上一般通过一个定制化的Agent来实现这个Agent最基础的能力是采集服务器运行数据最重要的是能执行各种脚本语言并通过脚本语言实现对服务器的各种操作(如更改配置分析应用日志并输出结果)。
  2. 监控数据存储与可视化数据采集模块采集到各种数据会很多但对事务性没啥要求可以用各种NoSQL数据库如Hbase,Cassandra等来实现数据的可视化是一个可以做的很深且偏应用层面的东西一般在监控系统上只实现最基本的曲线图展示提供按时段选择和对比的功能其他复杂的可视化操作通过各种API来实现
  3. 监控项添加和报警通知监控项是一种层次结构而不是列表结构上层节点的配置能够被下层节点的配置覆盖掉对网络设备来说监控项就是一些不同的oid借助于底层的数据采集模块对服务器来说监控项基本上就是一个脚本可以分为标准监控项和自定义监控项标准监控项最大化的通用实现cpu,内存磁盘网络等信息的监控自定义监控项可以用多种系统管理脚本语言(Schale,Python,perl)等实现脚本的输出符合一定规范即可,一般采用行结构或json串每个监控项设定warn,crit报警阈值和若干报警联系人阈值一般是数值型特殊的可以是字符串超过阈值的监控项会发送报警给联系人报警可以通过短信邮件IM软件发出报警发送要支持合并报警频率控制关闭报警要不然可能一次小故障就能发出成千上万条报警报警就失去效果了
  4. 监控Api接口并做好权限控制做法和目的与EMDB一样开放监控数据获取报警消息发送配置推送的接口主要目的是让监控系统里面的数据能够被外界利用可以在这些数据基础上做更加绚丽复杂的数据可视化工作或者做一些更加个性化的监控和报警次要目的是支持对服务器的统一操作比如公司所有机器统一升级系统软件的版本建议统一操作的API接口仅对少数几个人开放并且权限严格控制
  • 发布和线上配置管理系统(ReleaseManager)
  1. 应用发布和依赖库版本管理应用发布是运维与开发对接的重要环节一般发布系统会和svn系统紧密结合svn系统里面会有线上应用的列表EMDB里面会有各个机器所属的应用发布系统会用到这些数据将svn系统里面生成的应用包及其依赖包发布到线上并且自身对这些应用包和依赖包进行版本管理和控制在应用发布出现问题时可以回滚到上一个版本
  2. 线上配置管理类似于linux下puppet的功能主要用于应用服务器上关键配置文件的版本控制分发一致性维护工作大应用一般是若干台服务器组成集群提供服务要求这若干台服务器的应用配置是一致的但有时候又存在应用的灰度发布操作或者某人误更改配置线上配置管理系统要求提供统一的配置修改入口对灰度发布提供支持同时对于误更改配置情况进行纠正执行操作可以借助于Appmonitor的接口

Hinterlasse eine Antwort