elastalert ドッカー イメージ、このイメージには Wechat エンタープライズ アラーター プラグインと Dingtalk アラーター プラグインが含まれています
elastalert Docker イメージは、WeChat エンタープライズ アカウント アラーム プラグインと、すぐに使用できる DingTalk アラーム プラグインを統合します (DingTalk グループ ロボットの Webhook に基づいており、署名セキュリティ認証をサポートし、テキストおよびマークダウン形式をサポートしています)。
環境変数を使用してすべてを利用できるようにします。
環境変数を介した次の外部サービスとの統合:
NTP 同期とタイムゾーン変更のサポート。
起動チェックを行い、拡張機能とアラートの依存関係をインストールします。
@timestamp を現地時間にオフセット (タイムゾーンを使用) (現地のタイムゾーンに応じた @timestamp の変更をサポート)
docker run -e " ELASTICSEARCH_HOST=es-host "
-e " CONTAINER_TIMEZONE=Asia/Shanghai "
-e " TZ=Asia/Shanghai "
-e " ELASTALERT_DINGTALK_ACCESS_TOKEN=xxx "
-e " ELASTALERT_DINGTALK_SECURITY_TYPE=sign "
-e " ELASTALERT_DINGTALK_SECRET=xxx "
anjia0532/elastalert-docker:v0.2.4
name : log-error
type : frequency
index : logstash-*
num_events : 20
timeframe :
minutes : 5
filter :
- query :
query_string :
query : " level:ERROR "
compare_key :
- app_name
query_key :
- app_name
# 告警抑制
# 5 分钟内相同的报警不会重复发送
realert :
minutes : 5
exponential_realert :
# 指数级扩大 realert 时间,中间如果有报警,
# 则按照 5 -> 10 -> 20 -> 40 -> 60 不断增大报警时间到制定的最大时间,
# 如果之后报警减少,则会慢慢恢复原始 realert 时间
exponential_realert :
hours : 1
alert :
- " elastalert_modules.dingtalk_alert.DingTalkAlerter "
# - "elastalert_modules.wechat_qiye_alert.WeChatAlerter"
match_enhancements :
- " elastalert_enhancements.TimeEnhancement.TimeEnhancement "
alert_text_type : alert_text_only
alert_text : |
从 {} 到 {} 产生了 {} 次 错误日志
时间: {}
模块: {}
内容: {}
堆栈: `{}`
alert_text_args :
- local_starttime
- local_endtime
- num_hits
- local_time
- app_name
- message
- stack_trace
これらの変数は Docker のビルド中に設定され、通常は Elastalert のコア機能を実行するために必要です。
Elastalert を実行するには、イメージのビルド時に設定された環境変数が必要です
環境変数 | Elastalert 構成変数 | デフォルト | 説明 |
---|---|---|---|
ELASTALERT_HOME | 該当なし | /opt/elastalert | Elastalert をここに置きます |
SET_CONTAINER_TIMEZONE | 該当なし | True | コンテナのタイムゾーンを${CONTAINER_TIMEZONE} に設定するかどうか |
CONTAINER_TIMEZONE | 該当なし | Etc/UTC | コンテナのタイムゾーン値 |
ELASTALERT_RULES_DIRECTORY | 該当なし | ${ELASTALERT_HOME}/rules | Elastalert がルールをスキャンするフォルダー |
ELASTALERT_PLUGIN_DIRECTORY | 該当なし | ${ELASTALERT_HOME}/elastalert_modules | Elastalert がアラートをスキャンするフォルダー |
ELASTALERT_ENHANCEMENT_DIRECTORY | 該当なし | ${ELASTALERT_HOME}/elastalert_enhancements | Elastalert が機能拡張をスキャンするフォルダー |
ELASTALERT_CONFIG | 該当なし | ${ELASTALERT_HOME}/config.yaml | Python デーモンを起動するためにdocker-entrypoint.sh によって参照される構成ファイルの名前と場所 |
ELASTALERT_INDEX | writeback_index | elastalert_status | Elasticsearch クラスター内の Elastalert インデックスの名前 |
ELASTALERT_SYSTEM_GROUP | 該当なし | elastalert | デーモンとフォルダーの権限に使用される Elastalert を実行しているユーザーの名前。 |
ELASTALERT_SYSTEM_USER | 該当なし | elastalert | デーモンとフォルダーのアクセス許可に使用される Elastalert を実行するグループの名前。 |
ELASTALERT_VERSION | 該当なし | 0.1.29 | pip からインストールする Elastalert のバージョン |
ELASTICSEARCH_HOST | es_host | elasticsearch | 説明 |
ELASTICSEARCH_PORT | es_port | 9200 | 説明 |
ELASTICSEARCH_USE_SSL | use_ssl | False | TLS を使用して Elasticsearch に接続する |
ELASTICSEARCH_VERIFY_CERTS | verify_certs | False | クライアント証明書による SSL 認証の使用 |
これらの変数は、Elastalert 構成ファイルで使用できる設定であり、これらの設定のほとんどはサードパーティ統合 (JIRA、OpsGenie など) に適用されるか、Elastalert の共通構成オプションに記載されています。
これらの環境変数は、Elastalert 設定ファイル、主に一般的な設定およびサードパーティ統合設定 (Wechat、dingtalk など) で必要です。
環境変数 | Elastalert 構成変数 | デフォルト | 説明 |
---|---|---|---|
ELASTALERT_RUN_EVERY | run_every: => minutes: | 3 | Elastalert ルールを再チェックするまでに待機する分数。現在は分単位の値としてのみ利用可能です。 |
ELASTALERT_BUFFER_TIME | buffer_time: => minutes: | 45 | 一部のログ ソースがリアルタイムではない場合に備えて、ElastAlert は最新期間の結果をバッファーに保存します。 |
ELASTALERT_AWS_REGION | aws_region | デフォルト設定なし | |
ELASTICSEARCH_URL_PREFIX | es_url_prefix | デフォルト設定なし | |
ELASTICSEARCH_SEND_GET_BODY_AS | es_send_get_body_as | デフォルト設定なし | |
ELASTALERT_TIME_LIMIT | alert_time_limit: => minutes: | 5 | 何らかの理由でアラートが失敗した場合、ElastAlert はこの期間が経過するまでアラートの送信を再試行します。 |
ELASTALERT_DISABLE_RULES_ON_ERROR | disable_rules_on_error: => Bool | True | true の場合、ElastAlert はキャッチされない (EAException ではない) 例外をスローするルールを無効にします。 |
ELASTALERT_MATCH_ENHANCEMENTS | match_enhancements: => array | デフォルト設定なし | このルールで使用する拡張モジュールのリスト |
ELASTALERT_RUN_ENHANCEMENTS_FIRST | run_enhancements_first: => Bool | 間違い | true に設定すると、一致が見つかるとすぐに拡張機能が実行されます。 |
ELASTICSEARCH_CA_CERTS | ca_certs | デフォルト設定なし | |
ELASTICSEARCH_CLIENT_CERT | client_cert | デフォルト設定なし | |
ELASTICSEARCH_CLIENT_KEY | client_key | デフォルト設定なし | |
ELASTICSEARCH_PASSWORD | es_password | デフォルト設定なし | |
ELASTICSEARCH_USER | es_username | デフォルト設定なし |
環境変数 | Elastalert 構成変数 | デフォルト | 説明 |
---|---|---|---|
wechat (WeChat エンタープライズ アカウント) | |||
ELASTALERT_WECHAT_CORP_ID | wechat_corp_id | デフォルト設定なし | 企業ID |
ELASTALERT_WECHAT_SECRET | wechat_secret | デフォルト設定なし | 企業秘密 |
ELASTALERT_WECHAT_AGENT_ID | wechat_agent_id | デフォルト設定なし | エージェントID |
ELASTALERT_WECHAT_PARTY_ID | wechat_party_id | デフォルト設定なし | パーティーID (party1,party2...) |
ELASTALERT_WECHAT_USER_ID | wechat_user_id | デフォルト設定なし | ユーザーID (ユーザー1、ユーザー2、ユーザー3...) |
ELASTALERT_WECHAT_TAG_ID | wechat_tag_id | デフォルト設定なし | タグID(タグ1、タグ2、タグ3...) |
dingtalk(DingTalkグループロボット) | |||
ELASTALERT_DINGTALK_ACCESS_TOKEN | dingtalk_access_token | デフォルト設定なし | dingtalk アクセストークン |
ELASTALERT_DINGTALK_SECURITY_TYPE | dingtalk_security_type | サイン | 署名/キーワード/ホワイトリスト |
ELASTALERT_DINGTALK_SECRET | dingtalk_secret | デフォルト設定なし | ELASTALERT_DINGTALK_SECURITY_TYPE ==sign の場合、null であってはなりません |
ELASTALERT_DINGTALK_AT_MOBILES | dingtalk_at_mobiles | デフォルト設定なし | 電話の配列を @someone に送信 |
ELASTALERT_DINGTALK_AT_ALL | dingtalk_at_all | 間違い | @全部かどうか |
ELASTALERT_DINGTALK_MSGTYPE | dingtalk_msgtype | 文章 | テキスト/マークダウン |
電子メール | |||
ELASTALERT_EMAIL | email | デフォルト設定なし | |
ELASTALERT_EMAIL_REPLY_TO | email_reply_to | デフォルト設定なし | |
ELASTALERT_FROM_ADDR | from_addr | デフォルト設定なし | |
ELASTALERT_NOTIFY_EMAIL | notify_email | デフォルト設定なし | |
ELASTALERT_SMTP_HOST | smtp_host | デフォルト設定なし | |
エクソテル | |||
ELASTALERT_EXOTEL_ACCOUNT_SID | exotel_account_sid | デフォルト設定なし | |
ELASTALERT_EXOTEL_AUTH_TOKEN | exotel_auth_token | デフォルト設定なし | |
ELASTALERT_EXOTEL_FROM_NUMBER | exotel_from_number | デフォルト設定なし | |
ELASTALERT_EXOTEL_TO_NUMBER | exotel_to_number | デフォルト設定なし | |
ギッター | |||
ELASTALERT_GITTER_MSG_LEVEL | gitter_msg_level | デフォルト設定なし | |
ELASTALERT_GITTER_PROXY | gitter_proxy | デフォルト設定なし | |
ELASTALERT_GITTER_WEBHOOK_URL | gitter_webhook_url | デフォルト設定なし | |
ヒップチャット | |||
ELASTALERT_HIPCHAT_AUTH_TOKEN | hipchat_auth_token | デフォルト設定なし | |
ELASTALERT_HIPCHAT_DOMAIN | hipchat_domain | デフォルト設定なし | |
ELASTALERT_HIPCHAT_FROM | hipchat_from | デフォルト設定なし | |
ELASTALERT_HIPCHAT_IGNORE_SSL_ERRORS | hipchat_ignore_ssl_errors | デフォルト設定なし | |
ELASTALERT_HIPCHAT_NOTIFY | hipchat_notify | デフォルト設定なし | |
ELASTALERT_HIPCHAT_ROOM_ID | hipchat_room_id | デフォルト設定なし | |
ジラ | |||
ELASTALERT_JIRA_ACCOUNT_FILE | jira_account_file | デフォルト設定なし | |
ELASTALERT_JIRA_ASSIGNEE | jira_assignee | デフォルト設定なし | |
ELASTALERT_JIRA_BUMP_IN_STATUSES | jira_bump_in_statuses | デフォルト設定なし | |
ELASTALERT_JIRA_BUMP_NOT_IN_STATUSES | jira_bump_not_in_statuses | デフォルト設定なし | |
ELASTALERT_JIRA_BUMP_TICKETS | jira_bump_tickets | デフォルト設定なし | |
ELASTALERT_JIRA_COMPONENT | jira_component | デフォルト設定なし | |
ELASTALERT_JIRA_COMPONENTS | jira_components | デフォルト設定なし | |
ELASTALERT_JIRA_ISSUETYPE | jira_issuetype | デフォルト設定なし | |
ELASTALERT_JIRA_LABEL | jira_label | デフォルト設定なし | |
ELASTALERT_JIRA_LABELS | jira_labels | デフォルト設定なし | |
ELASTALERT_JIRA_MAX_AGE | jira_max_age | デフォルト設定なし | |
ELASTALERT_JIRA_PROJECT | jira_project | デフォルト設定なし | |
ELASTALERT_JIRA_SERVER | jira_server | デフォルト設定なし | |
ELASTALERT_JIRA_WATCHERS | jira_watchers | デフォルト設定なし | |
オプスジェニー | |||
ELASTALERT_OPSGENIE_ACCOUNT | opsgenie_account | デフォルト設定なし | |
ELASTALERT_OPSGENIE_ADDR | opsgenie_addr | デフォルト設定なし | |
ELASTALERT_OPSGENIE_ALIAS | opsgenie_alias | デフォルト設定なし | |
ELASTALERT_OPSGENIE_KEY | opsgenie_key | デフォルト設定なし | |
ELASTALERT_OPSGENIE_MESSAGE | opsgenie_message | デフォルト設定なし | |
ELASTALERT_OPSGENIE_PROXY | opsgenie_proxy | デフォルト設定なし | |
ELASTALERT_OPSGENIE_RECIPIENTS | opsgenie_recipients | デフォルト設定なし | |
ELASTALERT_OPSGENIE_TAGS | opsgenie_tags | デフォルト設定なし | |
ELASTALERT_OPSGENIE_TEAMS | opsgenie_teams | デフォルト設定なし | |
ポケベルの義務 | |||
ELASTALERT_PAGERDUTY_CLIENT_NAME | pagerduty_client_name | デフォルト設定なし | |
ELASTALERT_PAGERDUTY_EVENT_TYPE | pagerduty_event_type | デフォルト設定なし | |
ELASTALERT_PAGERDUTY_SERVICE_KEY | pagerduty_service_key | デフォルト設定なし | |
スラック | |||
ELASTALERT_SLACK_EMOJI_OVERRIDE | slack_emoji_override | デフォルト設定なし | |
ELASTALERT_SLACK_ICON_URL_OVERRIDE | slack_icon_url_override | デフォルト設定なし | |
ELASTALERT_SLACK_MSG_COLOR | slack_msg_color | デフォルト設定なし | |
ELASTALERT_SLACK_PARSE_OVERRIDE | slack_parse_override | デフォルト設定なし | |
ELASTALERT_SLACK_TEXT_STRING | slack_text_string | デフォルト設定なし | |
ELASTALERT_SLACK_USERNAME_OVERRIDE | slack_username_override | デフォルト設定なし | |
ELASTALERT_SLACK_WEBHOOK_URL | slack_webhook_url | デフォルト設定なし | |
電報 | |||
ELASTALERT_TELEGRAM_API_URL | telegram_api_url | デフォルト設定なし | |
ELASTALERT_TELEGRAM_BOT_TOKEN | telegram_bot_token | デフォルト設定なし | |
ELASTALERT_TELEGRAM_ROOM_ID | telegram_room_id | デフォルト設定なし | |
トゥイリオ | |||
ELASTALERT_TWILIO_ACCOUNT_SID | twilio_account_sid | デフォルト設定なし | |
ELASTALERT_TWILIO_AUTH_TOKEN | twilio_auth_token | デフォルト設定なし | |
ELASTALERT_TWILIO_FROM_NUMBER | twilio_from_number | デフォルト設定なし | |
ELASTALERT_TWILIO_TO_NUMBER | twilio_to_number | デフォルト設定なし | |
ヴィクトロプス | |||
ELASTALERT_VICTOROPS_API_KEY | victorops_api_key | デフォルト設定なし | |
ELASTALERT_VICTOROPS_ENTITY_DISPLAY_NAME | victorops_entity_display_name | デフォルト設定なし | |
ELASTALERT_VICTOROPS_MESSAGE_TYPE | victorops_message_type | デフォルト設定なし | |
ELASTALERT_VICTOROPS_ROUTING_KEY | victorops_routing_key | デフォルト設定なし |
git clone https://github.com/anjia0532/elastalert-docker.git
cd elastalert-docker
docker build . -t anjia0532/elastalert-docker:v0.2.4
[-t anjia0532/elastalert-docker:latest] [--build-arg ELASTALERT_VERSION = 0.2.4]
[--build-arg MIRROR = true --build-arg ALPINE_HOST = " mirrors.aliyun.com " --build-arg PIP_MIRROR = " https://mirrors.aliyun.com/pypi/simple/ " ]
注記:
[]
: オプションを意味しますv0.2.4
、 v0.2.3
... など知らせ:
[]
: オプションを意味します- ELASTALERT_VERSION: elastalert のバージョンです。詳細は https://github.com/Yelp/elastalert/releases を参照してください。通常はこのように v0.2.4 v0.2.3 です。
- MIRROR: ビルド時にアクセラレータを有効にするかどうかを示すブール値です。trueに設定されている場合は有効にします。ALPINE_HOST (デフォルトは Mirrors.aliyun.com) および PIP_MIRROR (デフォルトは https://mirrors.aliyun.com/pypi) /simple/) 空であってはなりません。空の場合は、デフォルト値を使用します。
- ALPINE_HOST: アルパイン アクセラレータのアドレス、デフォルトは Alibaba Cloud Mirrors.aliyun.com です。
- PIP_MIRROR: pip アクセラレータ アドレス、デフォルトは Alibaba Cloud https://mirrors.aliyun.com/pypi/simple/
- elastalert 部分: ほとんどが sc250024/docker-elastalert に基づいたプロジェクトであり、そこから多くのことを学びました。
- アラーム部分: アラーム部分とエンハンサー部分は主に私の他のプロジェクト anjia0532/elastalert-wechat-plugin に基づいています。
新しい問題のコミットを歓迎します
ご質問がある場合は、新しい問題を送信してフィードバックをお送りください。
このモジュールは BSD ライセンスに基づいてライセンスされています。
Copyright (C) 2020-, by AnJia [email protected].
無断転載を禁じます。
以下の条件が満たされる場合、修正の有無にかかわらず、ソースおよびバイナリ形式での再配布および使用が許可されます。
ソース コードを再配布する場合は、上記の著作権表示、この条件リスト、および次の免責事項を保持する必要があります。
バイナリ形式で再配布する場合は、上記の著作権表示、この条件リスト、および次の免責事項を、配布物とともに提供されるドキュメントおよび/またはその他の資料に複製する必要があります。
このソフトウェアは著作権者および寄稿者によって「現状のまま」提供され、商品性および特定目的への適合性の暗黙の保証を含むがこれに限定されない、明示的または黙示的な保証は、いかなる場合もコピーに対して否認されません。権利所有者または貢献者は原因および理論にかかわらず、直接的、間接的、偶発的、特別、例示的、または結果的損害(代替品またはサービスの調達、使用、データ、または利益の損失、または事業の中断を含みますが、これらに限定されません)に対する責任を負います。責任の所在たとえそのような損害の可能性について知らされていたとしても、本ソフトウェアの使用から何らかの形で生じる契約、厳格責任、または不法行為 (過失またはその他を含む)。