Elastic: 创建一个 Elastic 邮件警报 - 7.7 发行版

在之前的文章“创建一个Elastic alert - 7.7 发布版”,我介绍了如何使用 Elastic 在7.7发布版中使用免费的功能来发送警报到一个索引或者到Server log里去。在今天的文章中,我们将详细讲述如何把通知发送到一个邮件中。在 Elastic 的白金版订阅中,它提供如下的方式推送警报:

其中 Index 及 Server log 是免费的。

在今天的练习中,我们将使用如下的环境配置:

我们在Mac OS上安装 Elasticsearch及 Kibana,它们都分别运行于 IP 地址192.168.0.100。由于今天的这个功能是7.7发行版才有的功能,所以我们必须安装7.7版的Elasticsearch及Kibana。上面的这个IP地址是我自己的电脑的私有地址。依赖于你自己系统的地址不同而不同。我在另外一个Ubuntu OS 上运行 Filebeat。它可以访问 Mac OS。

 

安装

Elasticsearch

我们可参考我之前的文章“如何在Linux,MacOS及Windows上进行安装Elasticsearch”来安装我们的7.7 版的Elasticsearch。在安装完后,我们需要做如下的调整。打开config/elasticsearch.yml文件,并修改:

cluster.name: elasticsearch
network.host: 0.0.0.0
discovery.type: single-node

在这里我们配置一个节点的Elasticsearch,同时我们配置network.host: 0.0.0.0,这样保证我们的Elasticsearch绑定于每一个网路接口上。如果你还不知道自己的IP地址,你可以打入如下的命令来找到自己的IP地址:

ifconfig

修改完上面的配置后,我们重新启动Elasticsearch:

 

我们可以在Elasticsearch启动的Log里找到相应的启动地址。我们在浏览器中打入上面显示的地址:192.168.0.100:9200

如果我们能够看到上面的输出,那么则表明我们的Elasticsearch安装是成功的。

Kibana安装

我们接下来安装Kibana。我们可以参考我之前的文章“如何在Linux,MacOS及Windows上安装Elastic栈中的Kibana”来进行我们的安装。为了能够使得我们的Kibana能访问Elasticsearch及被我们的Beats所访问到,我们必须修改config/kibana.yml的相应的配置:
 

server.host: "192.168.0.100"
elasticsearch.hosts: ["http://192.168.0.100:9200"]

请根据自己的电脑上的IP地址进行上面的修改。你可以通过上面介绍的ifconfig来得到自己电脑上的IP地址。

我们在自己的浏览器中打入如下地址:

如果你能发现上面的界面,则表明你的Kibana的安装是成功的。

为了能够实现对log的监控,我们必须使用Start a 30-day trial授权:

Filebeat安装

就如同我们上面介绍的那样,我们的Filebeat运行于Ubuntu OS 18.04中。如果大家还不知道如何来进行安装的话,请参阅我之前的文章“Vagrant 入门教程”。那个教程非常简单直接。一旦我们的Ubuntu已经安装起来后,那么我们该如何安装Filebeat呢?

我们打开我们的Kibana界面:

我们点击Add log data:

我们找到System logs:

Ubuntu OS是Debian系统。我们选择DEB平台,让后严格地安照上面的信息来进行安装。在这里我必须指出的是:我们必须修改/etc/filebeat/filebeat.yml文件的配置以使得filebeat能够连接上我们的Kibana及Elasticsearch。为此,我们打开filebeat.yml配置文件:
 

sudo vi /etc/filebeat/filebeat.yml

 我们对该文件进行如下的修改:

在这里,我们必须注意的是:替换上面的IP地址为你自己电脑上的IP地址。这个IP地址是你的Elasticsearch及Kibana的运行IP地址。你可以通过ifconfig命令来获得。

由于在一下的部分,我们要使用到syslog,所以我们必须记得启动system 模块:

sudo filebeat modules enable system

一旦完成上面的配置后,我们安装Kibana中的命令:

sudo service filebeat start

来启动filebeat这个服务。如果我们安装正确的话,我们可以在Kibana中看到数据进来:

如果我们能够看到有数据在上面的Discover中来,则表明我们的Filebeat的安装是成功的。

我们可以在Ubuntu的terminal中打入如下的命令:


sudo logger -t JUSTME this is message 2

等过一点时间,我们通过Kibana来查询我们的数据:

上面的命令生成一个process.name为JUSTME的log信息。我们可以在Kibana中查询到这个信息。

好了,到目前为止,我们已经安装好我们所有需要的Elastic Stack相关的部分。下面我们来进行邮件警报的测试。

 

邮件警报配置

创建警报

打开Kibana:

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

xpack.encryptedSavedObjects.encryptionKey: 'fhjskloppd678ehkdfdlliverpoolfcr'

我们再次进入Kibana:

点击Connectors:

点击 Create connector 按钮:

我们点击 Email:

针对我的配置:

Sender: 

liu_xiao_guo@hotmail.com

Host:

smtp-mail.outlook.com

Username:

liu_xiao_guo@hotmail.com

我们完成上面的信息的填入,点击 Save 按钮:

这样就完成了我们 Email connector 的创建。这个 connector 将可以被任何一个想要发送邮件警报的 alert 所使用。

我们接下来点击 Alert:

点击 Create alert:

点击 Index threshold:

 

 

 

点击上面的 Save 按钮,这样就生成了我们的第一个 Index threshold 警报:

 

测试警报

我们接着在Ubuntu OS的 console里输入如下的命令:

我们接连输入以上的指令。这个指令会在syslog里生成相应的含有JUSTME的log。

从上面,我们可以看出来,我们已经生产了相应的通知。这个通知是因为 filebeat-* 索引在5分钟的时间里,收到超过3个文档,从而触发了通知。 

我们可以在Kibana中把mute 启动,那么它就不会发送通知了,尽管5分钟之内有超过三个时间:

 

结论

Elastic 7.7发布版的警报使你方便地定义 Index threashold 及 Metricbeat threashold 警报。当你使用相关数据时,通常会发生创建警报的想法。 无论你是否完全沉浸在APM,指标,Uptime或SIEM应用程序中,都可以通过丰富的弹出菜单立即创建警报。你可以轻松地在你相应的APM,Metrics, Uptime 及 SIEM 应用中根据当前的上下文进行方便地创建相应的警报。