背景 1. 运维工作量逐渐增大 最近几年,Qunar的网络设备数量逐年增加,但是netops的人员还一直维持在很少的几个人,单人运维工作量持续增大; 2. 运维方式效率不高 目前变更操作基于命令行和脚本进行,需要netops手动登录目标设备和执行操作,操作内容包含大量简单和重复的操作; 3. 运维变更存在风险 基于命令行和脚本的变更操作一旦操作疏忽会导致不可估量的风险,除此之外,是谁进行了什么操作,也没有记录,不利于操作审计核查。 概况介绍 基于上述背景考虑,给出相应的优化思路,如下: · 工具命令集成。将运维常用工具和命令集成到平台和服务中,让平台来执行频繁的重复操作; · 操作自动化。分解常见的运维内容为基础指令集,集成到平台中为一系列的可自动执行的任务列表; · 操作逻辑智能检测。对操作预检查,杜绝不可控的变更,原子操作,闭包检查,杜绝异常操作,异常自动回滚; · 操作权限分级控制。任务和用户双向权限分级,不同的操作内容设定不同的权限才可操作,不同的登录用户赋予不同的权限,如此来防止不可控的用户操作; · 操作记录追踪审计。记录每项操作的执行人,内容,时间和结果到数据库,对操作可后期审计,异常操作追溯。 结合上述优化思路和netops日常运维内容,我们上线了qunar网络设备运维平台。平台截图如下: 详细说明 运维平台架构图 平台数据流图 下面逐一介绍平台各个功能模块: 1.权限控制 · 操作权限分级,总共分为5级,权限从低到高分别为访客,只读,读写,管理员和超级管理员;
· 具体原子操作绑定对应级别的权限上,譬如访客只能查看有限的信息,只读用户可以执行读设备信息操作等等; Tips: · 高权限可以赋予比自己低的权限给其他用户,可以查看自己授权的用户的操作日志。用户不能查看和自己相同权限或比自己权限高用户操作日志。 · 同一个待授权的用户可以多次被授予不同级别的临时权限,在完成指定操作之后,撤销授权。在保证安全性的同时保证灵活性。 2.操作及任务 本平台可支持如下的自动化操作: · 扫描抓取核心交换机和接入交换机关联关系; · 抓取,备份,同步交换机全局和各个端口配置配置数据; · 端口up/down,修改端口描述,修改端口速率,端口置为trunk; · 端口分配vlan; · 端口锁定防止操作; 用户确认执行某项操作后,平台立即启动对应的celery任务。本平台任务分为两类任务: · 及时任务。任何平台支持的自动化运维操作对应一项celery及时任务。用户确认操作后,celery启动对应的任务,保证任务执行正确性,如果执行异常,回滚并警告用户。单个设备操作任务事实上也是自动ssh到目标机器上执行相应网络设备变更命令。 · 定时任务。将一些日常运维操作映射为平台内置定时任务,可以由用户手动触发一次性或循环定时操作。 Tips: 所有任务均会自动记录详细日志,用户视权限在日志模块查询相应的操作日志。
3.监控管理 本平台监控两类数据,一类是网络层次,粒度的是交换机和关联的接入交换机组成的小集群;一类是设备层次,粒度是单个交换机端口。 对于网络层次监控,基础数据来源于各个交换机端口监控数据,基于核心交换机和接入交换机关联数据通过weathermap绘图,在平台上渲染展示出来。
平台可以基于设备基础信息进行自动发现: · 发现核心交换机和接入交换机关联关系,绘拓扑图; · 发现各端口状态,发现端口异常状态,譬如端口; · 发现各端口间流量负载情况,发现流量异常情况; 如上图所示,各个设备之间连接流量负载一目了然,灰色表示没有流量,绿色为负载正常,红色表示负载过重。 对于设备端口指标监控,基于collectd的snmp远程抓取来实现。用户在平台上管理和配置设备监控指标和模板。指标和模板变更后,平台自动通知Marathon平台更新collectd抓取集群上的抓取docker实例。 设备监控指标数据抓取架构如下: 平台监控配置有如下特点: · 配置灵活高效。可以从指标,模板,匹配规则三个维度进行配置,一旦配置完毕,新增同类新机器上架,老机器下架监控自动更新; · 动态扩容,负载均衡。使用docker和marathon实现抓取集群的动态扩容和负载均衡;单collectd抓取实例抓取多台网络设备指标,单抓取机启动多个抓取实例,每个机房多台抓取机来实现负载均衡。 Watcher上设备监控指标图如下:
持续优化 结语 Qunar网络设备运维平台为了解决实际运维工作出现的难题而生,提高了运维效率,降低了操作风险,优化了运维流程。后续将针对netops面对的更复杂的问题快速迭代和持续优化。(刘亮原创)
|