elastalert 도커 이미지, 이 이미지에는 Wechat 기업 경고 플러그인 및 Dingtalk 경고 플러그인이 포함되어 있습니다.
elastalert 도커 이미지는 WeChat 기업 계정 알람 플러그인과 DingTalk 알람 플러그인을 즉시 통합합니다(DingTalk 그룹 로봇의 웹후크 기반, 서명 보안 인증 지원, 텍스트 및 마크다운 형식 지원).
환경 변수를 사용하여 모든 것을 사용할 수 있게 만듭니다.
환경 변수를 통해 다음 외부 서비스와 통합:
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(위챗 기업 계정) | |||
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...) |
딩톡(딩톡그룹 로봇) | |||
ELASTALERT_DINGTALK_ACCESS_TOKEN | dingtalk_access_token | 기본 설정 없음 | 딩톡 액세스 토큰 |
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 버전(참조 https://github.com/Yelp/elastalert/releases) ...알아채다:
[]
: 선택사항을 의미합니다.- ELASTALERT_VERSION: elastalert의 버전입니다. 자세한 내용은 https://github.com/Yelp/elastalert/releases를 참조하세요. 보통 v0.2.4 v0.2.3 입니다.
- MIRROR: 빌드 시 가속기를 활성화할지 여부를 나타내는 부울 값입니다. true인 경우 활성화하고, 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 라이선스에 따라 라이선스가 부여됩니다.
저작권 (C) 2020-, 작성자: AnJia [email protected].
모든 권리 보유.
다음 조건이 충족되는 경우 수정 여부에 관계없이 소스 및 바이너리 형식으로 재배포 및 사용이 허용됩니다.
소스 코드를 재배포할 경우 위의 저작권 고지, 본 조건 목록 및 다음 면책 조항을 유지해야 합니다.
바이너리 형식으로 재배포할 경우 배포와 함께 제공되는 문서 및/또는 기타 자료에 위의 저작권 고지, 이 조건 목록 및 다음 면책 조항을 재현해야 합니다.
이 소프트웨어는 저작권 보유자 및 기여자에 의해 "있는 그대로" 제공되며, 상품성 및 특정 목적에의 적합성에 대한 묵시적 보증을 포함하되 이에 국한되지 않는 모든 명시적 또는 묵시적 보증은 어떠한 경우에도 부인되지 않습니다. 기여자는 원인과 이론에 관계없이 직접, 간접, 부수적, 특별, 예시적 또는 결과적 손해(대체 상품이나 서비스의 조달, 사용, 데이터 또는 이익의 손실, 비즈니스 중단을 포함하되 이에 국한되지 않음)에 대해 책임을 집니다. 책임 여부 이러한 손해의 가능성이 사전에 통보된 경우에도 이 소프트웨어의 사용으로 인해 발생하는 계약, 엄격한 책임 또는 불법 행위(과실 또는 기타 포함).