调查基于Elasticsearch数据进行警报通知的方法

X-Pack的观察者警报

开发者:Elastic
收费的

让我们开始使用 Watcher

尝试使用Elasticsearch警报检测插件“Watcher”
遇到和应对Elastic Stack警报的问题与解决方法
可视化Elastic Stack预警检测结果-异常检测通知
使用Elasticsearch插件“Shield”和“Watcher”进行非法访问审计
尝试使用Elastic Stack的X-Pack(Watcher部分)

Kibana中的X-Pack警报和操作设置

开发者:弹性搜索

 

Kibana 警报

使用Elastic Stack、Prometheus和Fluentd相结合来监视Kubernetes。
参考文章链接:https://www.elastic.co/jp/blog/monitoring-kubernetes-with-the-elastic-stack-using-prometheus-and-fluentd

在 Prometheus 的部署中,Alertmanager 被禁用了。如果使用 Elastic Stack 收集日志和指标,可以使用 Kibana Alert 来实现警报功能,而不是使用 Alertmanager。不仅可以利用 Prometheus 的指标,还可以利用 Elasticsearch 中存储的日志和其他索引的数据,还可以实现更高级的基于机器学习的警报功能。

弹性警报

开发者:Yelp
使用Python进行开发。
使用Python库”elasticsearch-py”。
https://pypi.org/project/elasticsearch/
采用Apache License 2.0许可证
版本为0.2.4 (2020/04/17)
https://pypi.org/project/elastalert/

・仅仅基于命令和设置文件(YAML)进行操作。
・从0.2.0b2开始支持Elasticsearch 7.x。
・从0.2.0开始支持Python3。
・不再修复错误或添加功能。
・不支持Python 3.9及以上版本。
・不支持Elasticsearch 8。
请不要让它消亡。ElastAlert的用例非常强大。#2947
是否有其他人来维护这个项目?#2946
ElastAlert项目的现状#2911

AWS的OpenSearch

    • 対応していない。正常に動かない(内部のElasticsearch バージョンは7.10.2だが、バージョンを1.0.0と返してしまう。バージョンチェックでElasticsearch 5の処理にいってしまう)

 

    ElastAlert2は対応を開始した。

Elasticsearch的Bearer认证

    • 対応していない。

 

    ElastAlert2は対応してる。

Elasticsearch的ApiKey认证方式.

    • 対応していない。

 

    ElastAlert2は対応してる。

Elasticsearch的代理连接

缺少代理配置功能

    • 対応していない。

 

    ElastAlert2も対応していない。

Python 3.9及其以后的版本无法正常运行。

在Python 3.9中,blist不再起作用。
Elastalert在Python 3.9上由于blist依赖项出现故障。

    ElastAlert2は対応してる。

只有按照以下方式编写,AWS SNS才能正常运行。

    alert:
      - sns:
          aws_region: 'us-east-1'
    sns_topic_arn: 'arn:aws:sns:us-east-1:123456789:somesnstopic'
    aws_access_key_id: 'XXXXXXXXXXXXXXXXXX'
    aws_secret_access_key: 'YYYYYYYYYYYYYYYYYYYY'

当搜索结果超过10,000条时,在搜索结果页面将显示10,000条以上。

如果将track_total_hits设置为true,就可以搜索超过10,000次命中的结果,但是当前的实现不支持将track_total_hit设置为true的配置更改。

当将Elasticsearch升级至7.X版本后,命中数(hits)变为10,000。

在黑名单、白名单中,有一个1024的限制。

黑名单过滤器包含10,000多个条目,速度极慢
当文件中的黑名单规则超过1024个条目时,“解析查询失败”
黑名单行数限制

电子邮件提醒的限制

    • Microsoft 365(旧名称Office 365)はfrom_addrに設定に対応していません。to,cc,bccに指定は問題無し。

 

    Gmailをfrom_addrに設定する場合、Googleの設定で安全性の低いアプリのアクセスを有効にしないとメールの送信ができません。

Kibana的仪表盘相关功能无法正常运行。

目前的Elasticsearch版本命名为.kibana*,但我们的内部逻辑中引用了kibana-int这个索引。因此,我们必须修改程序才能正常运行。另外,关于Dashboard的逻辑也不兼容Elasticsearch 7。

    • elastalert-rule-from-kibana

 

    • use_kibana_dashboard

 

    • use_kibana4_dashboard

 

    • kibana4_start_timedelta

 

    • kibana4_end_timedelta

 

    download_dashboard

下载仪表板文件存在问题。
仪表板文件的下载链接如下:
https://elastalert.readthedocs.io/en/latest/recipes/writing_filters.html#loading-filters-directly-from-kibana-3
https://github.com/Yelp/elastalert/issues/1481

当前的写作

filter:
  download_dashboard: "My Dashboard Name"

准确的记录

filter:
  - term:
      download_dashboard: "My Dashboard Name"

ElastAlert的警报通知接收者

 

アラート通知先備考Commandアラート通知確認済Emailアラート通知確認済
gmailまたはoffice365でうまくいかないというissueを見かける問題ありそう。gmailまたはoffice365はfrom_addrに指定しなければ大丈夫Jira以下のものがドキュメントに記載し忘れている
・jira_assignee
カスタムフィールドで正常に動かない情報あり
Jira customfield not taking argument #3073
Trying to assign Epic Link to Jira ticket #3108OpsGenie以下のものがドキュメントに記載し忘れている
・opsgenie_addr
・opsgenie_proxy
・opsgenie_detailsAWS SNSドキュメントの記載が古い
・aws_access_key→aws_access_key_id
・aws_secret_key→aws_secret_access_key
・profile→aws_profileHipChatHipChatは2019/02にサービス終了しているStrideStrideは2019/02にサービス終了しているMicrosoft Teamsアラート通知確認済Slackアラート通知確認済
以下のものがドキュメントに記載し忘れている
・slack_ca_certs
・slack_ignore_ssl_errors
・slack_timeoutMattermostアラート通知確認済Telegramアラート通知確認済
以下のものがドキュメントに記載し忘れている
・telegram_proxy_login
・telegram_proxy_passGoogleChat
PagerDuty
PagerTree最新の0.2.4で正常に動作しない
以下のものがドキュメントに記載し忘れている
・pagertree_proxyExotelExotelは日本でサポート外のため未確認Twilioアラート通知確認済VictorOpsアラート通知確認済Gitterアラート通知確認済ServiceNowアラート通知確認済Debug
Stomp最新の0.2.4で正常に動作しない
以下のものがドキュメントに記載し忘れている
・stomp_sslAlertaアラート通知は動いているという情報あり
以下のものがドキュメントに記載し忘れている
・alerta_api_skip_sslHTTP POST
Line Notify最新の0.2.4で正常に動作しないTheHiveアラート通知は動いているという情報あり
以下のものがドキュメントに記載し忘れている
・hive_verifyZabbix・ドキュメントで「zbx_item」という記載されているのは「zbx_key」。zbx_itemと書くと「Missing required option(s): zbx_key」のエラーが出る。
・設定を追加して動かすとエラーが出る。バグがあるようです。
(expected 2, got 1)Could not import module zabbix: not enough values to unpack
Zabbix alert #2601
Zabbix alert module error #2621
Elastalet fails if alerter type zabbix is used: “ValueError: not enough values to unpack” [bug] #2586
以下の対応で正常に動作します。動作確認手伝いました
Bugfix and better error handling on zabbix alerter #2640

弹性警报服务器Docker镜像

我对ElastAlert Server的未来维护感到不安。bitsensor/elastalert处于不维护的状态。考虑到未来可能需要通过johnsusek/elastalert-server的fork进行自己的维护,我认为值得考虑采用以下解决方案:
– 对新的Node.js进行适配。
– 对Elasticsearch进行主要版本升级的适配(最近的版本为8.x)。
– 如果要使用ElastAlert2,除了praecoapp/elastalert-server和karql/elastalert2-server这两个选项外,没有其他选择。

Dockerイメージ名タグElastAlert備考bitsensor/elastalert2.0.10.1.39Elastcserach 7.xで問題が発生bitsensor/elastalertlastet0.1.39Elastcserach 7.xで問題が発生bitsensor/elastalert3.0.0-beta.00.2.0b2
bitsensor/elastalert3.0.0-beta.1未確認
servercentral/elastalertlatest0.2.1bitsensor/elastalertフォークdaichi703n/elastalert0.2.1-dev20.2.1+bugfixservercentral/elastalertフォーク
jfcantu/elastalert:v0.1.1のイメージ使用?。その他のバグ修正は以下のサイトを参照。
Praeco + ElastAlert2.0 + ES7.x 構成の不具合対応方法
daichi703n/elastalert-server (GitHub)karql/elastalert2-serverlatestElastAlert2 2.9.0bitsensor/elastalertフォーク
node.jsからTypeScriptに変更しているpraecoapp/elastalert-serverlatestElastAlert2 2.9.0servercentral/elastalertフォーク
Praeco用ElastAlert Serverの最新版
Elasticsearch 8対応

由于索引打开过多,导致Java堆内存枯竭。

有时会发生circuit_breaking_exception故障
→ 调整ElasticSearch的堆大小
→ 修改ElasticSearch的indices.breaker.total.limit
→ 删除ElasticSearch的索引数据,或关闭不需要的索引数据
由于Elasticsearch打开过多的索引,导致堆内存耗尽
elastalert感到非常不高兴(circuit_breaking_exception,数据太大)#2485
circuit_breaking_exception,数据太大#349
升级至6.2.4后,回路中断数据太大异常#31197
Elastalert部署失败

请参考网址。

使用Elastic Stack监控Kubernetes系统
使用ElastAlert监控和通知Elasticsearch索引
希望使用elastalert自动检测并通知应用程序异常
通过elastalert和ElasticSearch简便灵活地设置警报
使用ElastAlert创建自定义规则
希望在发现错误日志时通过ElasticSearch和Elastalert进行通知
通过扩展ElastAlert的监控规则来获得一点点幸福
使用Elasticsearch进行服务监控,稍稍感到幸福
通过ElastAlert监控AWS ElasticSearch Service的日志
希望通过twitter -> fluentd -> elasticsearch -> elastalert -> slack实现自我监视的人生。
使用elastalert向slack发送警报
通过EFK Stack对Kubernetes事件进行警报
使用ElastAlert进行大规模的Elasticsearch警报,第一部分
使用Elastalert监控磁盘增长情况

样品

elastalert/example_rules
andromedarabbit/elastalert-rule.yaml
使用elastalert发送到slack的警报

CPU使用率的Elastalert规则
执行Elastalert规则时出错:IOError: [Errno 2]没有找到’config.yaml’文件或目录
ELK:基于ElasticSearch数据的ElastAlert报警
manankalra/elastalert-tutorial
– elastalert_cpu_watch.yaml
– elastalert_filesystem_watch.yaml
– elastalert_memory_watch.yaml

弹性警报的分支版本

大数据精品/弹性警报

    • ElastAlert 0.2.4ベース

 

    • crontrigger, must_notなどを追加している。

 

    • Python 3.9以降は動きません。

 

    Elasticsearch 8に対応していません。

自动1-OSS/弹性预警

    • ElastAlert 0.2.1ベース

 

    • auto resolve alert、generate_kibana6_linkなどを追加している。

 

    • Python 3.9以降は動きません。

 

    Elasticsearch 8に対応していません。

sherifabdlnaby/elastalert的版本是v0.4.0。

    • ElastAlert 0.2.1ベース

 

    • Jinja2 Optionsなどを追加している。

 

    • Python 3.9以降は動きません。

 

    Elasticsearch 8に対応していません。

JasperJuergensen的elastalert

    • ElastAlert 0.2.4ベース

 

    • Python 3.9以降は動きません。

 

    Elasticsearch 8に対応していません。

v0.3.0(2020/6/20)
请访问以下链接了解更多信息:
https://github.com/JasperJuergensen/elastalert/blob/master/changelog.md

重组
将规则类型放在它们自己的模块中,而不是一个文件中
将警报器放在它们自己的模块中,而不是一个文件中
将增强功能放在它们自己的模块中,而不是一个文件中
将加载器放在它们自己的模块中,而不是一个文件中
使用新的全局配置对象,而不是一个字典
添加
MAAS规则
用于突发和突发度量聚合规则的新指标
相关性规则
查询
规则类,覆盖了之前由elastalerter对象提供的一些功能
用于执行规则过程中的异常的EARuntimeException
用于配置规则阶段引发的异常的EAConfigExceptions
修复
修复了突发度量聚合规则的窗口问题

jsonar/elastalert的中文释义为:Jsonar/elastalert

    • ElastAlert 0.1.35ベース

 

    • Python 3.8、elasticsearch-pyバージョンアップなど

 

    • Python 3.9以降は動きません。

 

    Elasticsearch 8に対応していません。

弹性警报2

维护者:Jason Ertel
这个版本的Elastalert2有一些Yelp/elastalert中没有的功能。
许可证为Apache License 2.0。
2.9.0版本于2022年12月12日发布。
详情请参考https://pypi.org/project/elastalert2/。

・重构代码,添加测试代码。
・支持Python 3.10。
・适配Elasticsearch 7、8和Opensearch。
・新增Datadog、Discord、Chartwork、Dingtalk、Rocket.Chat、Amazon SES、Tencent SMS、Alertmanager、HTTP POST 2等作为报警通知的目标。
・修复了许多bug(Line Notify、Stomp、Zabbix、Pagertree正常运行,修复了AWS SNS的bug等)。
・还提供了Docker镜像和Helm图表。

 

弹性警报 Kibana 插件

开发者:BitSensor
许可证为3条款的BSD许可证(改版)
版本号1.1.0(2019/07/22)

・ElastAlert规则文件编辑器
・可以将ElastAlert嵌入到Kibana选项卡中。
・只能管理警报规则目录下的文件。
・当存在相同名称的规则文件时,新建相同名称的规则文件会进行覆盖。
・还不能参考规则模板文件夹来创建规则文件。
・支持Kibana 7.2.0~7.5.0版本。
・建议不与Praeco一起使用。
<原因>
如果使用了Praeco不支持的设置进行编辑,当在Praeco中更改了警报规则的启用/禁用时,编写的设置会消失。
需要注意的是,这种行为是由使用者错误的使用方式引起的,并且我认为这是一个设计规范。

对于ElastAlert Kibana插件的想法

由于最新版本的Kibana无法使用(官方只支持到Kibana 7.5.0),所以无法推荐采用。
如果能够进行改进,以确保将来不会出现无法运行的情况,我认为可以考虑采用最新版本的Kibana。

Kibana的版本范围可以从6.8.1到6.8.10、7.5.1到7.9.3,以及7.10.0到8.5.3。

Kibana插件支持版本范围为7.10.0~8.5.3。
链接地址为:https://github.com/karql/elastalert-kibana-plugin。
Kibana插件还兼容的版本有6.8.1~6.8.10、7.5.1~7.9.3。
链接地址为:https://github.com/nsano-rururu/elastalert-kibana-plugin/releases。

Kibana 6.8.x 在中文环境下也可运行吗?

无法安装elastalert-kibana-plugin-1.0.3-6.8.0.zip到Kibana 6.8.3 #123

Kibana的版本从7.5.1到7.8.1可运行。

下载elastalert-kibana-plugin-1.1.0-7.5.0.zip,并更新kibana/elastalert-kibana-plugin/package.json中的Kibana版本,然后将其压缩为zip文件。这样可以在Kibana 7.5.1和7.5.2上运行。对于Kibana 7.6.0~7.8.1,除了更新package.json中的Kibana版本外,还需要替换elastalert.js文件。

弹性警报-Kibana插件[7.5.0]与Kibana[7.5.1]不兼容#139
插件与Kibana 7.6.0不兼容#141
[遗留]当启用有效负载验证时,路由负载必须设置为’parse’#57777
更新Elasticsearch到7.6.2;另外,修复问题idaholab#119

如果要创建一个包含ElastAlert插件的Docker镜像并在Kibana中安装的情况下

我已经撰写了一篇关于创建Kibana 7.5.1~7.8.1 Docker镜像的方法的文章,并包括安装elastalert-kibana-plugin的步骤。

如果要在docker-compose的命令中安装ElastAlert插件,请使用以下选项。

# (参考情報)elastalert-kibana-plugin-1.1.0-7.5.1.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.5.1.zip
unzip elastalert-kibana-plugin-1.1.0-7.5.1.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.5\.1/g" kibana/elastalert-kibana-plugin/package.json
zip elastalert-kibana-plugin-1.1.0-7.5.1.zip kibana/elastalert-kibana-plugin/package.json
rm -rf kibana

# elastalert-kibana-plugin-1.1.0-7.5.2.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.5.2.zip
unzip elastalert-kibana-plugin-1.1.0-7.5.2.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.5\.2/g" kibana/elastalert-kibana-plugin/package.json
zip elastalert-kibana-plugin-1.1.0-7.5.2.zip kibana/elastalert-kibana-plugin/package.json
rm -rf kibana

# (参考情報)elastalert-kibana-plugin-1.1.0-7.6.0.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.6.2; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.6.0.zip
unzip elastalert-kibana-plugin-1.1.0-7.6.0.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.6\.0/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.6.0.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

# (参考情報)elastalert-kibana-plugin-1.1.0-7.6.1.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.6.2; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.6.1.zip
unzip elastalert-kibana-plugin-1.1.0-7.6.1.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.6\.1/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.6.1.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

# (参考情報)elastalert-kibana-plugin-1.1.0-7.6.2.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.6.2; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.6.2.zip
unzip elastalert-kibana-plugin-1.1.0-7.6.2.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.6\.2/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.6.2.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

# (参考情報)elastalert-kibana-plugin-1.1.0-7.7.0.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.7.0; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.7.0.zip
unzip elastalert-kibana-plugin-1.1.0-7.7.0.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.7\.0/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.7.0.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

# (参考情報)elastalert-kibana-plugin-1.1.0-7.7.1.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.7.1; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.7.1.zip
unzip elastalert-kibana-plugin-1.1.0-7.7.1.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.7\.1/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.7.1.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

# (参考情報)elastalert-kibana-plugin-1.1.0-7.8.0.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.8.0; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.8.0.zip
unzip elastalert-kibana-plugin-1.1.0-7.8.0.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.8\.0/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.8.0.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

目录结构

将以下内容进行中国本地化并改写为中文,只需要一个选项:
“./elastalert/rules”、”./elastalert/rule_templates”、”./es/data” 可以使用 chmod 命令设置为 777 权限。

ElastAlert的文件使用以下网站上的文件。修改部分值。
https://github.com/bitsensor/elastalert

/home/ユーザー名/dkwork/es/
|--docker-compose.yml
|--Dockerfiles
|  |--Dockerfile.elastalert
|
|--es
|  |--config
|  |  |--elasticsearch.yml
|  |--data
|
|--kibana
|  |--config
|  |  |--kibana.yml
|  |--plugin
|  |  |--elastalert-kibana-plugin-1.1.0-7.7.0.zip
|
|--elastalert
|  |--bin
|  |  |--elastalert-start.sh
|  |  |--elastic_search_status.sh
|  |--config
|  |  |--config.json
|  |  |--elastalert-test.yaml
|  |  |--elastalert.yaml
|  |--rule_templates
|  |--rules
version: "3.7"
services:
  elasticsearch:
    container_name: elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      - ES_JAVA_OPTS=-Xms256m -Xmx512m
      - discovery.type=single-node
    restart: always
    volumes:
      - ./es/data:/usr/share/elasticsearch/data
      - ./es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:9200 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 180s

  kibana:
    container_name: kibana
    image: docker.elastic.co/kibana/kibana:7.7.0
    command: sh -c './bin/kibana-plugin list | grep elastalert-kibana-plugin@1.1.0; result=`echo $$?`; if [ $$result = 1 ]; then  ./bin/kibana-plugin install file:///usr/share/kibana/work/elastalert-kibana-plugin-1.1.0-7.7.0.zip && exec /usr/local/bin/kibana-docker; else exec /usr/local/bin/kibana-docker; fi'
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch
    restart: always
    volumes:
      - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
      - ./kibana/plugin:/usr/share/kibana/work
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:5601/api/status || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 200s
        
  elastalert:
    container_name: elastalert
    build:
      context: .
      dockerfile: Dockerfiles/Dockerfile.elastalert
    image: elastalert:3.0.0-beta.0
    ports:
      - 3030:3030
      - 3333:3333
    depends_on:
      - elasticsearch
      - kibana
    restart: always
    volumes:
      - ./elastalert/config/elastalert.yaml:/opt/elastalert/config.yaml
      - ./elastalert/config/elastalert-test.yaml:/opt/elastalert/config-test.yaml
      - ./elastalert/config/config.json:/opt/elastalert-server/config/config.json
      - ./elastalert/rules:/opt/elastalert/rules
      - ./elastalert/rule_templates:/opt/elastalert/rule_templates
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:3030 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 200s
FROM bitsensor/elastalert:3.0.0-beta.0

USER root

RUN apk update && \
    apk add bash curl && \
    rm -rf /var/cache/apk/*

ADD elastalert/bin/elastalert-start.sh /usr/local/bin/
ADD elastalert/bin/elastic_search_status.sh /usr/local/bin/

RUN chmod +x /usr/local/bin/elastalert-start.sh 
RUN chmod +x /usr/local/bin/elastic_search_status.sh

USER node

ENTRYPOINT ["/usr/local/bin/elastalert-start.sh"]
#!/bin/bash

set -e

if [ $# -gt 0 ]; then
  ES_URL="$1"
elif [[ -n $ELASTICSEARCH_URL ]]; then
  ES_URL="$ELASTICSEARCH_URL"
elif [[ -n $ES_HOST ]] && [[ -n $ES_PORT ]]; then
  ES_URL="http://$ES_HOST:$ES_PORT"
else
  ES_URL="http://elasticsearch:9200"
fi

until [[ "$(curl -fsSL "$ES_URL/_cat/health?h=status" | sed -r 's/^[[:space:]]+|[[:space:]]+$//g')" =~ ^(yellow|green)$ ]]; do
  # printf '+' >&2
  sleep 1
done

echo "Elasticsearch is up and healthy at "$ES_URL"" >&2
#!/bin/bash

set -e

echo "Giving Elasticsearch at $ELASTICSEARCH_URL time to start..."

elastic_search_status.sh

echo "Starting ElastAlert!"
npm start
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
server.name: kibana
server.host: "0"
elasticsearch.hosts: http://elasticsearch:9200
xpack.monitoring.ui.container.elasticsearch.enabled: true

# elastalert-kibana-plugin
elastalert-kibana-plugin.serverHost: elastalert
elastalert-kibana-plugin.serverPort: 3030
{
  "appName": "elastalert-server",
  "port": 3030,
  "wsport": 3333,
  "elastalertPath": "/opt/elastalert",
  "verbose": false,
  "es_debug": false,
  "debug": false,
  "rulesPath": {
    "relative": true,
    "path": "/rules"
  },
  "templatesPath": {
    "relative": true,
    "path": "/rule_templates"
  },
  "es_host": "elasticsearch",
  "es_port": 9200,
  "writeback_index": "elastalert_status"
}

将 es_host 的值从 “localhost” 更改为 “elasticsearch”。

# NOTE: This config is used when testing a rule

# The elasticsearch hostname for metadata writeback
# Note that every rule can have its own elasticsearch host
es_host: elasticsearch

# The elasticsearch port
es_port: 9200

# This is the folder that contains the rule yaml files
# Any .yaml file will be loaded as a rule
rules_folder: rules

# How often ElastAlert will query elasticsearch
# The unit can be anything from weeks to seconds
run_every:
  seconds: 5

# ElastAlert will buffer results from the most recent
# period of time, in case some log sources are not in real time
buffer_time:
  minutes: 1

# Optional URL prefix for elasticsearch
#es_url_prefix: elasticsearch

# Connect with TLS to elasticsearch
#use_ssl: True

# Verify TLS certificates
#verify_certs: True

# GET request with body is the default option for Elasticsearch.
# If it fails for some reason, you can pass 'GET', 'POST' or 'source'.
# See http://elasticsearch-py.readthedocs.io/en/master/connection.html?highlight=send_get_body_as#transport
# for details
#es_send_get_body_as: GET

# Option basic-auth username and password for elasticsearch
#es_username: someusername
#es_password: somepassword

# The index on es_host which is used for metadata storage
# This can be a unmapped index, but it is recommended that you run
# elastalert-create-index to set a mapping
writeback_index: elastalert_status

# If an alert fails for some reason, ElastAlert will retry
# sending the alert until this time period has elapsed
alert_time_limit:
  days: 2

将 es_host 的值从「localhost」更改为「elasticsearch」。

# The elasticsearch hostname for metadata writeback
# Note that every rule can have its own elasticsearch host
es_host: elasticsearch

# The elasticsearch port
es_port: 9200

# This is the folder that contains the rule yaml files
# Any .yaml file will be loaded as a rule
rules_folder: rules

# How often ElastAlert will query elasticsearch
# The unit can be anything from weeks to seconds
run_every:
  seconds: 5

# ElastAlert will buffer results from the most recent
# period of time, in case some log sources are not in real time
buffer_time:
  minutes: 1

# Optional URL prefix for elasticsearch
#es_url_prefix: elasticsearch

# Connect with TLS to elasticsearch
#use_ssl: True

# Verify TLS certificates
#verify_certs: True

# GET request with body is the default option for Elasticsearch.
# If it fails for some reason, you can pass 'GET', 'POST' or 'source'.
# See http://elasticsearch-py.readthedocs.io/en/master/connection.html?highlight=send_get_body_as#transport
# for details
#es_send_get_body_as: GET

# Option basic-auth username and password for elasticsearch
#es_username: someusername
#es_password: somepassword

# The index on es_host which is used for metadata storage
# This can be a unmapped index, but it is recommended that you run
# elastalert-create-index to set a mapping
writeback_index: elastalert_status

# If an alert fails for some reason, ElastAlert will retry
# sending the alert until this time period has elapsed
alert_time_limit:
  days: 2
6.PNG

Praeco (拉丁语)

维护人员:John Susek、Naoyuki Sano
许可证:GNU通用公共许可证v3.0
版本号:1.8.11(2021/05/27)

使用Helm在Kubernetes上安装Praeco(ElastAlert GUI)(Beta版本)
解决Praeco + ElastAlert2.0 + ES7.x配置的问题
使用Praeco(ElastAlert GUI)对Elasticsearch日志进行警报
Praeco、ElastAlertServer、Hive等(英语)

・Praeco使用johnsusek/elastalert-server 这个BitSensor开发的ElastAlert Server的Fork。
・通过使用Praeco,可以在图形界面上操作ElastAlert,并从Elasticsearch的日志中设置警报通知。
・警报规则设置
・警报历史记录
→ 在1.0.1版本中未显示任何内容。已在1.1.0版本中修复(2020/6/17确认)
・查询历史记录
・禁用一定时间段的警报规则
・支持Elasticsearch 7(0.4.2~)
・警报通知方式包括Slack、Email、HTTP POST、Telegram、Jira、MS Teams、Mattermost、Command、Line Notify、Gitter、Zabbix、SNS、Twilio、PagerTree、Exotel、GoogleChat、Stomp、VictorOps、ServiceNow、Chatwork、Discord、TheHive、Alerta, Datadog、AWS SES、Rocket.Chat的设置。
・不支持Percentage Match和Spike Aggregation规则类型。
添加”Percentage Match”规则类型 #82
添加”Spike Aggregation”规则类型 #228
・ElastAlert Server无法连接Amazon Elasticsearch Service。

Docker镜像

Dockerイメージ名タグPraeco備考praecoapp/praecolatest1.8.11
mkdir Dockerfiles
touch Dockerfiles/Dockerfile.elastalert
mkdir -p es/config
touch es/config/elasticsearch.yml
mkdir -p es/data
chmod 777 es/data
mkdir -p kibana/config
touch kibana/config/kibana.yml
mkdir -p praeco/bin
touch praeco/bin/elastalert-start.sh
touch praeco/bin/elastic_search_status.sh
mkdir -p praeco/config
mkdir -p praeco/nginx_config
mkdir -p praeco/public
mkdir -p praeco/public/js
mkdir -p praeco/rule_templates
chmod 777 praeco/rule_templates
mkdir -p praeco/rules
chmod 777 praeco/rules
cd praeco/rules
wget https://raw.githubusercontent.com/johnsusek/praeco/master/rules/BaseRule.config
cd ../
cd praeco/config
wget https://raw.githubusercontent.com/johnsusek/praeco/master/config/api.config.json
wget https://raw.githubusercontent.com/johnsusek/praeco/master/config/elastalert.yaml
cd ../
cd nginx_config
wget https://raw.githubusercontent.com/johnsusek/praeco/master/nginx_config/default.conf
wget https://raw.githubusercontent.com/johnsusek/praeco/master/nginx_config/nginx.conf
cd ../
cd public
wget https://raw.githubusercontent.com/johnsusek/praeco/master/public/praeco.config.json
cd ../../

docker-compose up -d
praeco.PNG
/home/ユーザー名/dkwork/es/
|--docker-compose.yml
|--Dockerfiles
|  |--Dockerfile.elastalert
|--es
|  |--config
|  |  |--elasticsearch.yml
|  |--data
|
|--kibana
|  |--config
|  |  |--kibana.yml
|
|--praeco
| |--bin
| |  |--elastalert-start.sh
| |  |--elastic_search_status.sh
| |--config
| |  |--api.config.json
| |  |--elastalert.yaml
| |--public
| |  |--praeco.config.json
| |--rule_templates
| |--rules
| |  |--BaseRule.config
FROM johnsusek/elastalert-server:latest

USER root

RUN apk update && \
    apk add bash curl && \
    rm -rf /var/cache/apk/*

ADD praeco/bin/elastalert-start.sh /usr/local/bin/
ADD praeco/bin/elastic_search_status.sh /usr/local/bin/

RUN chmod +x /usr/local/bin/elastalert-start.sh 
RUN chmod +x /usr/local/bin/elastic_search_status.sh

USER node

ENTRYPOINT ["/usr/local/bin/elastalert-start.sh"]
#!/bin/bash

set -e

if [ $# -gt 0 ]; then
  ES_URL="$1"
elif [[ -n $ELASTICSEARCH_URL ]]; then
  ES_URL="$ELASTICSEARCH_URL"
elif [[ -n $ES_HOST ]] && [[ -n $ES_PORT ]]; then
  ES_URL="http://$ES_HOST:$ES_PORT"
else
  ES_URL="http://elasticsearch:9200"
fi

until [[ "$(curl -fsSL "$ES_URL/_cat/health?h=status" | sed -r 's/^[[:space:]]+|[[:space:]]+$//g')" =~ ^(yellow|green)$ ]]; do
  # printf '+' >&2
  sleep 1
done

echo "Elasticsearch is up and healthy at "$ES_URL"" >&2
#!/bin/bash

set -e

echo "Giving Elasticsearch at $ELASTICSEARCH_URL time to start..."

elastic_search_status.sh

echo "Starting ElastAlert!"
npm start
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
server.name: kibana
server.host: "0"
elasticsearch.hosts: http://elasticsearch:9200
xpack.monitoring.ui.container.elasticsearch.enabled: true
version: "3.7"
services:
  elasticsearch:
    container_name: elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      - ES_JAVA_OPTS=-Xms256m -Xmx512m
      - discovery.type=single-node
    restart: always
    volumes:
      - ./es/data:/usr/share/elasticsearch/data
      - ./es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:9200 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 180s

  kibana:
    container_name: kibana
    image: docker.elastic.co/kibana/kibana:7.7.0
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch
    restart: always
    volumes:
      - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:5601/api/status || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 200s

  elastalert:
    container_name: elastalert
    build:
      context: .
      dockerfile: Dockerfiles/Dockerfile.elastalert
    image: elastalert-server:1.1.0
    ports:
      - 3030:3030
      - 3333:3333
    depends_on:
      - elasticsearch
    restart: always
    volumes:
      - ./praeco/config/elastalert.yaml:/opt/elastalert/config.yaml
      - ./praeco/config/api.config.json:/opt/elastalert-server/config/config.json
      - ./praeco/rules:/opt/elastalert/rules
      - ./praeco/rule_templates:/opt/elastalert/rule_templates
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:3030 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 200s

  praeco:
    container_name: praeco
    image: johnsusek/praeco:latest
    ports:
      - 8080:8080
    depends_on:
      - elastalert
    restart: always
    volumes:
      - ./praeco/public/praeco.config.json:/var/www/html/praeco.config.json
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:8080 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 200s

以下文件使用的是Praeco网站上的内容:
https://github.com/johnsusek/praeco
・praeco/config/api.config.json
・praeco/config/elastalert.yaml
・praeco/public/praeco.config.json
・praeco/rules/BaseRule.config

开放搜索

2.4.1 (2022/12/03)
制造商:AWS

亚马逊将Elasticsearch的Fork改名为OpenSearch
亚马逊网服务(AWS)宣布了通过Elasticsearch和Kibana的Fork推出的”OpenSearch”项目。与Elastic之间的分歧仍然存在。
Elastic的客户端库不再连接到AWS的OpenSearch。AWS不得不宣布了客户端库的Fork。

开放分发 Elasticsearch

开放式 Elasticsearch 主题的开发已经迁移至 OpenSearch。ODFE 插件仍然可以与 Elasticsearch OSS 的旧版继续使用,但我们建议升级到 OpenSearch,以便享受最新的功能与改进。

Elasticsearch开发用的OpenDistro已经迁移到了OpenSearch。ODFE插件将继续在ElasticsearchOSS的旧版本中运行,但建议您升级到OpenSearch以使用最新的功能和改进点。
https://opendistro.github.io/for-elasticsearch-docs/

开发商:AWS
许可证:Apache License 2.0
“Elasticsearch” 的专有发行版
1.13.2(2021年04月07日。Elastcsearch 和 Kibana 的版本为7.10.2)
amazon/opendistro-for-elasticsearch
amazon/opendistro-for-elasticsearch-kibana

尝试移动画面后,我注意到了一些问题(版本1.3.0)。

有一个登录页面。
初始的用户名/密码是admin/admin。

在当前版本中,无法像X-Pack的索引管理那样在界面上删除索引吗?

类似于X-Pack的Index Lifecycle Management(ILM)功能,似乎可以通过屏幕编辑设置yaml的功能。

可以在屏幕上设置警报
尝试使用Amazon Elasticsearch Service的Alerting功能监视AWS ConsoleLogin

・目前还未实施CSV/PDF文件输出功能,PDF生成和报告 #16。

以下内容尚未确认。

在中国境内是否可以使用Elastic社的Kibana 7.4.2版本导入创建的仪表板?而如果是使用7.4.2以上的版本呢,会怎样呢?

・在Fluentd的Elastcsearch插件设置中,应该无法使用Index Lifecycle Management(ILM)的配置,所以如果有配置的话,需要将其注释并进行操作确认。

可能需要卸载Fluentd的X-Pack插件以进行操作确认。

由于对于Fluentd、Metricbeat、Filebeat、Heartbeat和Logstash这些工具的信息还很少,因此需要根据现有信息来调查和考虑使用的配置。

安全
https://opendistro.github.io/for-elasticsearch-docs/docs/security-configuration/
https://opendistro.github.io/for-elasticsearch-docs/docs/security-access-control/
https://opendistro.github.io/for-elasticsearch-docs/docs/security-audit-logs/

安全措施
https://opendistro.github.io/for-elasticsearch-docs/docs/security-configuration/
https://opendistro.github.io/for-elasticsearch-docs/docs/security-access-control/
https://opendistro.github.io/for-elasticsearch-docs/docs/security-audit-logs/

提醒功能
https://opendistro.github.io/for-elasticsearch-docs/docs/alerting/

SQL(结构化查询语言)

指标状态管理(ISM)
类似于X-Pack的索引生命周期管理(ILM)功能
https://opendistro.github.io/for-elasticsearch-docs/docs/ism/

KNN算法
https://opendistro.github.io/for-elasticsearch-docs/docs/knn/

异常检测(Alpha版本)
https://opendistro.github.io/for-elasticsearch-docs/docs/ad/

性能分析器
https://opendistro.github.io/for-elasticsearch-docs/docs/pa/

根本原因分析(Alpha版)

Fluentd
Fluentd的支持
自签名证书验证失败(Fluentd + Open Distro for Elasticsearch)#597

背景
尝试使用Logstash和Filebeat连接的Open Distro for Elasticsearch问题
与Beats进行集成
无法使用LogStash索引Filebeat日志 #136
Filebeat 6.5.4输出到Elasticsearch #21
Metricbeat用户权限
配置使用opendistro的OSS Beats(文件/度量)
使用metricbeat参数进行警报 #13
Logstash集成

新登場-Open Distro for Elasticsearch
對AWS的Open Distro for Elasticsearch提出異議的供應商們
AWS以Apache許可證公開了Elasticsearch的新發行版
嘗試創建Open Distro for Elasticsearch!
Open Distro for Elasticsearch啟動指南
[更新] Amazon Elasticsearch Service現在支持警報功能

Grafana – 图表展示应用

阅读方式:Grafana
开发者:Grafana Labs
许可证:Apache License 2.0
9.3.2(2022-12-16)

从5.2.0开始,可以对Elasticsearch内的数据进行警报通知。

【警报】
(https://grafana.com/docs/grafana/latest/alerting/)
警报通知
DingDing
Discord
电子邮件
Google Hangouts Chat
Hipchat
Kafka
Line
Microsoft Teams
OpsGenie
Pagerduty
Prometheus Alertmanager
Pushover
Sensu
Slack
Squadcast
Telegram
Threema
VictorOps
Webhook
创建能够以SNMP Trap形式发送通知的警报

现在不支持这个

在Grafana中设置警报通知
Grafana邮件通知设置
在Grafana邮件设置中遇到的问题
通过Grafana发送电子邮件通知

通过BLE获取的数据进行可视化(使用Grafana)和警报通知(使用Slack)的实施。
在Grafana上构建了将服务器指标存储在Elasticsearch中进行可视化和通过Slack通知的环境(由Nifcloud提供)。
使用Prometheus+Grafana进行性能监控。

使用Grafana5.2.0+来执行对Elasticsearch中的数据的警报,并通过Discord进行通知。

使用Grafana在Teams上发送警报非常容易。

使用Webhook将Prometheus2和Grafana6与系统监控结合起来,并利用Grafana的警报功能。

弹性警报用户界面

许可证为Apache License 2.0,维护已终止。GitHub的最后更新日期为2018/02/12。

广告
将在 10 秒后关闭
bannerAds