Elastic:创建一个Elastic Log 及 Index alert - 7.7 发布版

我们很高兴宣布一个新的警报框架,该框架可作为Kibana 7.7版本的一部分,在SIEM,Uptime,APM和Metrics应用程序中提供一流的警报体验。

警报是整个Elastic Stack的基本用例,这就是为什么我们将其纳入Kibana的核心体验。 无论你是监视应用程序事务还是跟踪暴力登录尝试,我们的目标都是提供量身定制的体验,使您能够在正常的任务流程中构建强大的警报。 新的警报框架是从头开始构建的,旨在提供不只是便捷的界面。 我们知道,不仅需要通知人,这就是为什么我们还合并了触发预定义动作的功能的原因,该动作可以执行任何操作,从发送电子邮件到在Slack和PagerDuty等平台上使用全新的第三方集成。

在今天的文章中,我们将介绍如何使用Elastic 7.7发布所提供的新的警报界面来创建一个警报。

 

安装

首先,我们必须需要安装最新的 Elastic Stack 7.7 发布版的软件来进行安装。

Elasticsearch 安装

请参阅我之前的文章“如何在Linux,MacOS及Windows上进行安装Elasticsearch”在自己的电脑上安装最新的 Elasticsearch 7.7发布版。

Kibana 安装

请参阅我之前的文章“如何在Linux,MacOS及Windows上安装Elastic栈中的Kibana”在自己的电脑上进行安装最新的 Kibana 7.7 发布版。

Mertricbeat 安装

我们启动安装好的Kibana,并进入页面:

点击 Add metric data

点击 System metrics:

根据我们的不同的平台分别进行安装Metricbeat。

等我们安装好Metricbeat后,我们可以在Kibana的 Discover 看到导入的metricbeat的数据:

 

设置阈值警报

警报使您可以根据数据更改采取措施。 它是基于以下原则设计的:如果您可以在Elasticsearch中查询某些内容,则可以对其发出警报。 只需定义查询,条件,时间表,要采取的措施,然后警报将完成其余工作。定制触发器将自动化工作流程付诸实践。

在今天的练习中,我们将利用metricbeat的数据来进行侦测。如果我们电脑的内存使用超过80%,那么我们将发送一个警报。在metricbeat中,有一个叫做 system.memory.used.pct 的字段。它表示已用内存的百分比。

我们可以有两种途径来创建警报,针对我们的metricbeat:

方法一:直接在Metrics应用中创建:

当我们第一次创建 alert 时,我们会看到如下的画面:

它显示我们需要为 xpack.encryptedSavedObjects.encryptionKey 设置一个值。点击上面的 Learn how:上面显示我们需要在kibana.yml中设置xpack.encryptedSavedObjects.encryptionKey。点击Learn how 链接,我们可以了解更多关于这个encryptionKey的用法。我们参照链接中的介绍,把这个值设为‘fhjskloppd678ehkdfdlliverpoolfcr’,并重新启动Kibana:


xpack.encryptedSavedObjects.encryptionKey: 'fhjskloppd678ehkdfdlliverpoolfcr'

方法二:是直接从 Alerts and Actions 中来创建:

无论从那种方法来创建,它们的界面都是一样的。在7.7 的发布版中,我们可以在Metrics, SIEM, Uptime 及 APM 中创建警报。

 创建一个Log类型的警报

我们点击上面的 Create alert 按钮 或菜单:

 

 在上面,我们选择每分钟检查一次,并且每一分钟通知一次。我们选择Metric threshold:

从上面可以看出来,目前免费的警报通知只有两个选择:Index 及 Server log。我们选择 Server log

 

点击上面的 Create a connector:

我们提供任何一个喜欢的 Connector 名字。在上面我选择了 Log。这个Log connector 可以为以后其它的Server log所使用。 点击 Save 按钮:

在上面,我们可以点击在 message 右边的那个小图标查看我们可以在 message 输入框中可以使用的一些变量。点击 Save 按钮:

这样我们警报就设置好了。我们可以点击Edit进行编辑,或点击右边的三个点来进行删除。或mute的动作。

这个时候,我们可以查看一下Kibana运行的console,不出意外,我们可以看到如下的输出:

它说明,我们的警报设置是成功的。

创建一个Index 类型的警报

我们接着创建一个Index类型的警报。这次,我们不是在 Metricbeat 应用中创建的,我们可以在 Management 中开始。

和上面的大部分步骤是一样的,只是我们在Action中需要选择 Index:

数据将写入到my_index索引。 点击 Save 按钮

请注意上面的数据结构是一个JSON的对象。这个一定要注意。我们输入一下的内容:

{
    "actual": "{{context.valueOf.condition0}}",
    "threshold": 0.8
}

关于 context.metricOf.condition0,我们可以参阅之前的 Server Log 里介绍的那样。点击 Save 按钮:

我们可以查看 my_index :

GET my_index/_search

我们可以看到事件都被写入到my_index索引中了。