通过自动化日常安全事件的处理流程,您的组织将能够做出更快速的反应,减少人工操作中的失误,并显著提升产出效率。
译自 5 Ways to Supercharge Incident Remediation with Automation,作者 Greg Chase 是PagerDuty自动化和Rundeck的产品营销总监。他在软件公司的营销和工程部门呆了太多年,一直在推广和构建自动化平台、开发者工具和数据工程框架。在加入PagerDuty之前,Greg曾在......
对于当今数字化的组织来来,软件问题常常会成为业务问题。随着公司的收入和客户体验越来越多地转向在线,事故和中断以及相关的宕机时间会对收入、客户满意度和员工生产力产生更大的影响。
事实上,许多IT中断是合理可控的,无论是在诊断还是补救上——即使你只是临时修复问题。来自噪音服务的警报诊断通常始于相同的步骤。“立即修复”的补救措施也经常相同,涉及简单的服务重启和容错切换。
这些重复性的操作非常适合应用自动化,以实现更快的响应,避免中断主题专家(SME)的工作,减少错误并提高效率。
IT运维人员必须尽快解决严重的宕机,这就是为什么他们会跟踪诸如平均恢复时间(MTTR)和错误预算等指标。在这些情况下,服务恢复具有最高优先级,不管谁的工作被中断。
一旦满足服务级别目标(SLO),提高IT支持效率就成为一个问题。所有不太严重的事故、IT事件和监控警报都可能增加支持成本,并打断高级工程师的主要工作,降低新功能的交付速度。不幸的是,许多组织的情况远非理想。研究表明,由于 IT事故和宕机导致的非计划性工作的中断,五分之一的组织遭受“高度影响”(相当于25%或更高的工作效率损失)。对47%的组织来说,影响“显著”,意味着10%至25%的工作效率损失。
这些消耗中的很大一部分可以追溯到操作人员没有知识或访问权限自行解决问题,需要将问题上报给高级工程师才能解决。原因是许多运维中心的第一响应者缺乏对企业运行的各种系统的了解,很可能也缺乏诊断和修复问题的技能,除非有明确的操作指引,例如运行手册。他们也可能没有进行测试或修改生产环境所需的访问权限,无论是由于技能水平较低,还是公司出于合规要求需要保持环境的锁定。
在处理IT事件时,响应人员通常会淹没在大量的警报和信号中,难以从中筛选出真正的问题并采取有效措施。这会导致他们不得不将问题升级到高级工程师处,即使是基本的分类任务也需要高级工程师的参与,因为他们拥有受影响系统的访问权限。这些不必要的升级会占用工程师大量的时间,让他们无法专注于开发项目。此外,事件还可能涉及过多的人员,他们会进行一些基本的检查,例如运行测试以证明他们的代码没有造成问题。
通过自动化事件中可预测的重复步骤,可以减少将问题升级到专家处的必要性,赋予初级响应人员更多的自主权,并最终实现完全自动化,无需任何人工干预。考虑一个典型的事件响应工作流程:
采用AIOps从警报中检测问题并标记事件是提高事件响应速度和效率的主要方法之一。通过AIOps,您可以避免响应人员手动查看大量信息,并能够从大量的重复噪音和误报中筛选出真正需要解决的问题。通过让AIOps负责触发事件工作流,您可以自动化从问题发现到解决的整个过程,包括问题解决、关闭甚至最终的修复。
上图显示了很多通过自动化提高事件响应能力的机会。但是,您应该从哪里开始呢?
平衡对自动化的信心、事件的价值或成本以及任务发生的频率。对于具有可验证的自动化诊断和补救步骤的常见事件,使用 AIOps 触发自动化是一个很好的选择。从那里开始,遵循类似的过程来优先考虑您的事件响应策略。
对于严重故障,自动化诊断和补救步骤以加快解决速度。然后,专注于通过自动化跨多种事件发生的后端诊断和补救操作来提高效率。对于低风险的操作,例如只读诊断拉取,您可以使用 AIOps 安全地自动化和触发,即使他们被呼叫,也可以为下游人员提供所需的信息。
您可以自动化常见的补救操作并使其可供响应者使用。这种自动化可以利用秘密管理工具(例如 Vault)在生产环境中启用特权操作,而无需共享凭据,从而更安全地委托给响应者。当事件的可能原因很明显,并且补救自动化已经得到验证时,您可以让 AIOps 触发补救以实现自修复,而无需呼叫任何响应者。
您选择自动化优先会带来机会成本。因此,找到可以产生最大财务影响的任务是您成功的途径。
以下五个关键设计原则将帮助组织自动化事件修复,显著减少员工负担,释放人才创新能力,并优化事件解决方式。
-
从简单开始:不要为每种事件创建过于复杂的定制自动化。构建基本的任务和操作,并将它们重用为更复杂工作流的组成部分。从风险较低的操作开始,比如那些不改变生产环境或可以用较低访问权限执行的操作。保持执行时间短。避免跨越太多技术领域。
-
建立防护机制:每当一个自动化任务开始或停止时,都要通过电子邮件、事件响应控制面板、Slack消息或其他方法发送通知。避免循环,至少在组件自动化内。也许你的事件管理工作流运行几次重试,但你希望这些规则是可见的,而不是埋在其他自动化中。对if/then/else语句等条件语句也是如此。将这些留给事件响应工作流中可见的业务规则。始终报告执行状态:成功、失败、错误。
-
提供有意义的结果: 自动化必须对最终用户有意义,以便他们可以从输出中获得最大和即时的价值。考虑你的用户是谁,他们具有什么技能和背景知识。请记住,许多一线响应人员可能不具有高级专家所拥有的深入的技术系统知识。例如,你可能需要简化诊断信息以改进和加速支持单路由的决策。这是关于获取原始数据并将其转换为最终用户实际需要的信息。
-
推动一致性: 在前一点的基础上,确保广泛的人员能够支持更多运维的关键是提供一致和简化的最终用户体验。这可能包括标准化代码风格、输入参数和目录展示。你的组织可能在Azure环境中使用Ansible,或者在 AWS中使用CloudFormation和Terraform,甚至是BASH和Python脚本的组合。关键是使最终用户体验在所有环境或工具之间保持一致,这样就不需要个人专门掌握各种工具。你的响应者可以支持多少应用程序?
-
记录过程: 始终在调用点记录自动化。一些流程可能不会经常运行,所以你不应该期望响应者记住几个月前的培训。同样,一些组织的一线响应者流动性很高,所以文档有助于弥补培训可能不完整的地方。这种文档应该以标准化的方式指导用户,以增强理解和可维护性。
自动化不是事件响应的灵丹妙药。其思想是在可能的情况下,让机器承担手动和重复的任务。当事件复杂或新的时,需要人工参与。即使在需要专家介入的情况下,自动化流程也可以通过主动收集他们确定根本原因和正确修复步骤所需的详细诊断数据来加速他们的工作。
在数字优先的世界里,自动化应该是每个IT部门的待办事项清单上的首位。