Elastic:使用ElastAlert发送通知

何鲁丽同志简历Elastic:使⽤ElastAlert发送通知
为了说明问题的⽅便,我的环境如下:
在我的环境中,我使⽤iMac电脑运⾏Elasticsearch及Kibana,⽽在另外⼀个虚拟机上运⾏我们的filebeat。filebeat把Ubuntu机器⾥的syslog 传⼊到Elasticsearch中供分析,同时ElastAlert周期性地从Elasticsearch中获取数据,并依据制定的规则来发送通知。
准备⼯作
创建Slack账号
我们⾸先需要创建⼀个⾃⼰的Slack账号,并具有⾃⼰的管理员权限。你可以参考链接 “Configuring Slack Account”来配置⾃⼰的Slack账号,并⽣成⼀个相应的⼀个Webhook URL。这个URL将会在Elasticsearch⾥进⾏使⽤。
我们先把上⾯创建的webhook url记下来供下⾯的配置使⽤。
安装Elasticsearch
我们可以按照“如何在Linux,MacOS及Windows上进⾏安装Elasticsearch”介绍的那样安装好我们的Elasticsearch。不过由于我们需要使我们的Elasticsearch被另外⼀个虚拟机所见,在这⾥我们需要对我们的Elasticsearch进⾏配置。⾸先使⽤⼀个编辑器打开在config⽬录下的l配置⽂件。我们需要修改network.host的IP地址。在你的Mac及Linux机器上,我们可以使⽤:
$ ifconfig
来查看到我们的机器的IP地址。针对我的情况,我的机器的IP地址是:10.211.55.2。
等修改完我们的IP地址后,我们保存l⽂件。然后重新运⾏我们的elasticsearch。我们可以在⼀个浏览器中输⼊刚才输⼊的IP地址并加上端⼝号9200。这样可以查看⼀下我们的elasticsearch是否已经正常运⾏了。
安装Kibana
我们可以按照“如何在Linux,MacOS及Windows上安装Elastic栈中的Kibana”中介绍的那样来安装我们的Kibana。由于我们的Elasticsearch 的IP地址已经改变,所以我们必须修改我们的Kibana的配置⽂件。我们使⽤⾃⼰喜欢的编辑器打开在config⽬录下的l⽂件,并到server.host。把它的值修改为⾃⼰的电脑的IP地址。针对我的情况是:
同时到elasticsearch.hosts,并把⾃⼰的IP地址输⼊进去:
保存我们的l⽂件,并运⾏我们的Kibana。同时在浏览器的地址中输⼊⾃⼰的IP地址及5601端⼝:
如果配置成功的话,我们就可以看到上⾯的画⾯。
安装Ubuntu虚拟机
这个不在我的这个教程之内。在⽹上我们可以到许多的教程教我们如何安装Ubuntu虚拟机。
安装filebeat
我们想在Ubuntu机器上安装我们的filebeat来⼿机system log信息。我们⾸先打开我们的Kibana。点击左上⾓的Kibana图标:
点击“Add log data”按钮:
然后点击“System logs”
由于Ubuntu是debian系统,我们选择DEB。安装上⾯的步骤⼀步⼀步地进⾏安装。在配置l
时,我们需要把我们的IP地址输⼊到相应的地⽅:
output.elasticsearch:
hosts: ["10.211.55.2:9200"]
username: "elastic"
password: "123456"
setup.kibana:
host: "10.211.55.2:5601"
上⾯是我的配置情况。你可以根据⾃⼰的实际的IP地址进⾏配置。当我们成功地启动filebeat服务后,我们可以通过如下的命令来检查我们的服务是否已经成功运⾏:
电视剧辘轳女人和井sudo systemctl status filebeat
安装ElastAlert
我们安装如下的步骤进⾏安装:
1)下载elastalert源码:
sudo pip3 install "setuptools>=11.3"
sudo python3 setup.py install
sudo pip3 install -U PyYAML
根据Elasticsearch的版本,您可能需要⼿动安装正确版本的elasticsearch-py。
Elasticsearch 5.0+:
sudo pip3 install "elasticsearch>=5.0.0"
Elasticsearch 2.X:
sudo pip3 install "elasticsearch<3.0.0"
这样我们的安装⼯作就完成了。
配置ElastAlert
配置⽂件
我们可以在ElastAlert源码⽂件的根⽬录下到⼀个叫做ample的⽂件:
我们可以把这个⽂件修改为config.yaml⽂件:
mv ample config.yaml
我们使⽤我们喜欢的编辑器打开这个⽂件,并修改这个⽂件:
我们可以根据⾃⼰的IP地址来进⾏修改。如果我们对Elasticsearch做了安全设置,我们同时也需要填写⽤户名及密码:
做完上⾯的修改后,我们保存config.yaml⽂件。
配置Elasticsearch
ElastAlert将有关其查询和警报的信息和元数据保存回Elasticsearch。这对于审核和调试很有⽤,它使ElastAlert可以重新启动并完全从中断处恢复。 ElastAlert不需要运⾏,但强烈建议使⽤。
⾸先,我们需要通过运⾏elastalert-create-index并按照说明为ElastAlert创建要写⼊的索引。我们进⼊
到ElastAlert的源码根⽬录,并打⼊如下的命令:
elastalert-create-index
创建rule
每个规则都定义要执⾏的查询,触发匹配的参数以及每个匹配要触发的警报列表。我们将使⽤example_rules/example_frequency.yaml作为模板。我们删除其中⼀些不需要的项⽬,最终的⽂件是这样的:
example_frequency.yaml
# Alert when the rate of events exceeds a threshold
# Elasticsearch host
建国大业2017es_host: 10.211.55.2
# Elasticsearch port
es_port: 9200
# (OptionaL) Connect with SSL to Elasticsearch
#use_ssl: True
铁一院# (Optional) basic-auth username and password for Elasticsearch
es_username: "elastic"
es_password: "123456"
# (Required)
# Rule name, must be unique
name: Slack demo
# (Required)
# Type of alert.
# the frequency rule type alerts when num_events events occur with timeframe time
type: frequency
# (Required)
# Index to search, wildcard supported
index: filebeat-*
# (Required, frequency specific)
# Alert when this many documents matching the query occur within a timeframe
num_events: 3
# (Required, frequency specific)
# num_events must occur within this amount of time to trigger an alert
timeframe:
hours: 1
# (Required)
# A list of Elasticsearch filters used for find events
# These filters are joined with AND and nested in a filtered query
# For more info: /guide/en/elasticsearch/reference/current/query-dsl.html
filter:
- term:
process.name: "JUSTME"
# (Required)
# The alert is use when a match is found
alert:
- "slack"
叶村叠罗汉
# (required, email specific)
# a list of email addresses to send alerts to
slack:
slack_webhook_url: Your_Webhook_Url
slack_username_override: "liuxg"
在上⾯请修改es_host为⾃⼰的IP地址,同时也需要把⾃⼰的webhook url写⼊到slack_webhook_url中去。在上⾯我们使⽤index为filebeat-*作为查询的索引,同时我们使⽤⼀个filter。它检查process.name是否为JUSTME字符串。如果是,并且在1个⼩时(timeframe)⾥出现3次(num_events),那么将触发通知。
测试rule
运⾏elastalert-test-rule⼯具将测试您的配置⽂件是否成功加载并在过去的24⼩时内以调试模式运⾏它:
elastalert-test-rule example_rules/example_frequency.yaml
运⾏ElastAlert
我们使⽤Python来直接运⾏Elastalert:
python3 -m elastalert.elastalert --verbose --rule example_frequency.yaml
这样我们的Elastalert已经被成功运⾏起来了。我们在这个时候可以打开我们的Kibana来监视filebeat-*索引,如果在⼀个⼩时内有三次process.name信息有JUSTME字样,那么我们就会在我们的Slack⾥收到⼀个通知。
我们在Ubuntu中打开另外的⼀个terminal,并输⼊如下的命令:毫米汞柱
sudo logger -t JUSTME this is message 1
sudo logger -t JUSTME this is message 2
sudo logger -t JUSTME this is message 3
那么我们可以打开Kibana查看这些消息:
那么这个时候,在我们的Slack中,我们可以看到如下的消息:

本文发布于:2024-09-24 02:29:10,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/432667.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:安装   IP地址   打开   需要   是否   配置
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议