PagerDuty,或者为什么运营部门晚上无法入睡

系统越复杂,随着各种警报的增长就越多。 并且需要响应这些非常警报,将它们汇总并可视化。 我认为许多人在紧张之前就已经熟悉了这种情况。

讨论的决定并不是最意外的,但是搜索并没有得出有关该主题的完整文章。

因此,我决定分享FunCorp的经验,并讨论如何建立值班流程,谁在打电话,为什么以及如何看待这一切。



什么是PagerDuty?


因此,为了解决所有这些问题,我们开始寻找一种方便的工具。 经过短暂搜索,我们选择了PagerDuty。 PD对我们来说似乎是一个相当完整和简洁的解决方案,具有许多集成和设置。 她是什么样的人?

简而言之,PagerDuty是一个事件处理平台,可以通过各种集成来处理传入的事件,调整值班顺序,然后根据事件的级别来警告值班工程师(高级别-呼叫,低级别-来自应用程序/ SMS的推送) 。

谁是值班人员?


这可能是开始设置PD的第一件事。

与其他公司一样,FunCorp在职务上也享有荣誉职位。 它每天在工程师之间传输一次。 对PagerDuty的警报有所谓的第一和第二响应行。 假设到达高优先级警报,并且如果从第一行打给服务员的呼叫后10分钟没有对他的反应(即他没有转移到确认或已解决的状态),则呼叫转到第二位值班工程师。 这是通过升级策略在PagerDuty本身中配置的。



如果第二个服务员没有响应,则通知会返回给主要服务员。

因此,任何传入的高优先级警报都无法保持未处理状态。

现在,让我们看看事件可能来自何处。

我们使用什么集成?


来自各种服务的许多各种事件被注入PD。 现在,我们大约有25种这样的服务,对于它们的处理,我们使用一些现成的集成。

  • 普罗米修斯

主要的指标收集系统是Prometheus。 关于Habré的文章很多,我只是说我们有几种针对不同环境的工具:一种是从虚拟机和docker收集指标,另一种是从Amazon服务收集指标,第三种是从“铁器”收集信息。 Telegraf主要用作度量标准的导出器。

  • 电邮

在这里,我也认为名字很清楚。 此集成用于从在表冠上执行的某些脚本发送通知。 PD给您发送信件的特定地址。 使用这种集成创建服务时,您可以设置优先级,以什么顺序处理传入事件,如何创建警报(对于每个传入字母,一个传入字母+某个规则等)。



  • 松弛

我认为这是一个非常有趣的整合。 有时会发生某些事情,但事件并未涵盖。 因此,我们添加了Slack的集成来创建事件。 也就是说,在公司Slack中,您可以编写/ calloftyty,一切都会变慢,很快就会崩溃 ,PD会对此进行处理并将事件发送给值班工程师。

我们做:



我们看到:



  • API

HTTP集成。 实际上,这里没有什么特别有趣的,只是带有JSON格式主体的POST请求。 例如,从一个有趣的例子开始:我们使用https://www.statuscake.com/将它用于外部监视。 这项服务会检查我们在世界各地的站点的可用性。 在我们收到不可接受的响应代码(例如502)的情况下,将创建一个事件,然后一切都沿着上述链条进行。 StatusCake本身具有监视内部URL,SSL证书或域到期的能力。

  • Librenms

这是另一个监视系统,有关更多信息,请参见其网站https://www.librenms.org/ 。 借助其帮助,我们可以从服务器监视网络接口和iDRAC。



也有诸如Datadog,CloudWatch之类的集成。 关于它们的更多信息可以在这里找到。

可视化


主要的事件报告系统是Slack。 所有进入PD的事件都将写入一个特殊的聊天中,并且如果它们的状态发生变化,该事件也会显示在聊天中。



当可以在天花板下的显示器的屏幕上显示有用的数据时,我们突然意识到我们(在devops部门中)没有任何可显示的内容。 有一个很棒的Grafana,但是无法覆盖,员工会响应警报,而不是图表。

在GitHub上进行了全面但不成功的搜索后,找到了PD的简明扼要的“公告板”,我们决定编写自己的文件-仅使用所需的内容。 尽管起初有一种显示PD接口本身的想法,但看起来更加不便。

要编写它,您所需要做的就是获得具有只读权限的PD密钥。
这是我们得到的:



屏幕显示当前的未解决事件,所选计划中的现任值班工程师的姓名以及没有高优先级事件的时间(具有高优先级事件的面板将以红色突出显示)。

请在此处查看此实现的源代码

结果,我们有了一个方便的仪表板来查看所有事件。 如果您能从我们的经验中受益,我将感到非常高兴。

Source: https://habr.com/ru/post/zh-CN481656/


All Articles