使用 Splunk 监控 AWS 服务状态

Monitor AWS Service Status using Splunk

问题

如果您依赖亚马逊AWS服务进行运营,您需要密切关注他们的服务状态。 Amazon 使用网站 http://status.aws.amazon.com/,它提供指向特定地区特定服务的 RSS 提要的链接。

我们的服务使用 S3、CloudFront 和其他服务来运行。我们希望了解在运行期间可能出现故障的任何服务,并在出现问题时自动执行我们应该做的事情。

我们使用 Splunk 来记录我们所有的服务。

要求

例如,如果应用程序在写入 S3 时出现错误,我们想知道这是否是由 AWS 中的潜在中断引起的。

解决方案

  • 您可以使用 Syndication Input 应用程序从 AWS Status 收集 RSS 源数据
  • 创建一个查询,以获取有错误的 RSS 项并存储在 syndication 源类型下的 Splunk 索引中。
  • 根据查询创建警报,一个 since 字段,以便我们可以随时间调整警报。

如何

  1. 请您的 Splunk 团队在您需要的环境中安装应用程序“Syndication Input”。

  2. 之后,只需收集所需的每个 RSS 提要并将它们添加到 Settings -> Data Input -> Syndication Feed。从 Amazon Status RSS 提要中获取所有 URL,并将它们用作 Splunk 数据输入,以一定间隔填写表格:

完成后,聚合应用程序将具有以下内容:

  1. 在发生错误时使用搜索,调整“开始”日期,以便您可以为结果创建警报。为了显示目的,我添加了过去的一天。

    • since 应该是您开始监控 AWS 的某个开始日。当 Amazon 发布从文本 Informational message:.
    • 捕获的新错误时,这有助于查询产生任何新事件
    • 查询不应 return 任何新内容,因为 since 不会 return 任何日期。
    • 由于标记 RESOLVED 附加到新的 RSS 提要项目,我们将它们从警报中排除。

.

sourcetype=syndication "Informational message:" NOT "RESOLVED" 
   | eval since=strptime("2010-08-01", "%Y-%m-%d") 
   | eval date=strptime(published_parsed, "%Y-%m-%dT%H:%M:%SZ") 
   | rex field=summary_detail_base "rss\/(?<aws_object>.*).rss$" 
   | where date > since 
   | table aws_object, published_parsed, id, title, summary 
   | sort -published_parsed

  1. 使用查询创建警报。例如,发送电子邮件: