Images Docker Elastalert, cette image inclut le plugin d'alerte d'entreprise Wechat et le plugin d'alerte Dingtalk
L'image Docker d'Elastalert intègre le plug-in d'alarme de compte d'entreprise WeChat et le plug-in d'alarme DingTalk (basé sur le webhook du robot du groupe DingTalk, prend en charge l'authentification de sécurité par signature et prend en charge les formats de texte et de démarque)
Rendre tout disponible à l'aide de variables d'environnement.
Intégration avec les services externes suivants via des variables d'environnement :
Synchronisation NTP et prise en charge du changement de fuseau horaire.
Vérifiez le démarrage et installez les dépendances des améliorations et des alertes.
Décalage de @timestamp par rapport à l'heure locale (Utiliser le fuseau horaire) (prend en charge la modification de @timestamp en fonction du fuseau horaire local)
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
Ces variables sont définies lors de la construction de Docker et sont généralement nécessaires à l'exécution des fonctionnalités de base d'Elastalert.
Les variables d'environnement définies lors de la construction de l'image sont nécessaires pour exécuter Elastalert
Envvar | Var de configuration Elastalert | Défaut | Description |
---|---|---|---|
ELASTALERT_HOME | N / A | /opt/elastalert | Placez Elastalert chez vous ici |
SET_CONTAINER_TIMEZONE | N / A | True | S'il faut ou non définir le fuseau horaire du conteneur sur ${CONTAINER_TIMEZONE} |
CONTAINER_TIMEZONE | N / A | Etc/UTC | Valeur du fuseau horaire du conteneur |
ELASTALERT_RULES_DIRECTORY | N / A | ${ELASTALERT_HOME}/rules | Dossier dans lequel Elastalert recherche les règles |
ELASTALERT_PLUGIN_DIRECTORY | N / A | ${ELASTALERT_HOME}/elastalert_modules | Dossier dans lequel Elastalert recherche les alerteurs |
ELASTALERT_ENHANCEMENT_DIRECTORY | N / A | ${ELASTALERT_HOME}/elastalert_enhancements | Dossier dans lequel Elastalert recherche des améliorations |
ELASTALERT_CONFIG | N / A | ${ELASTALERT_HOME}/config.yaml | Nom et emplacement du fichier de configuration référencé par docker-entrypoint.sh pour démarrer le démon Python |
ELASTALERT_INDEX | writeback_index | elastalert_status | Nom de l'index Elastalert dans votre cluster Elasticsearch |
ELASTALERT_SYSTEM_GROUP | N / A | elastalert | Nom de l'utilisateur exécutant Elastalert ; utilisé pour les autorisations du démon et du dossier. |
ELASTALERT_SYSTEM_USER | N / A | elastalert | Nom du groupe exécutant Elastalert utilisé pour les autorisations du démon et du dossier. |
ELASTALERT_VERSION | N / A | 0.1.29 | Version d'Elastalert à installer depuis pip |
ÉLASTIQUESEARCH_HOST | es_host | elasticsearch | Description |
ÉLASTIQUESEARCH_PORT | es_port | 9200 | Description |
ELASTICSEARCH_USE_SSL | use_ssl | False | Connectez-vous avec TLS à Elasticsearch |
ELASTICSEARCH_VERIFY_CERTS | verify_certs | False | Utiliser l'authentification SSL avec les certificats clients |
Ces variables sont des paramètres disponibles dans le fichier de configuration Elastalert. La plupart de ces paramètres s'appliquent aux intégrations tierces (JIRA, OpsGenie, etc.), ou sont documentés ici : Options de configuration communes d'Elastalert.
Ces variables d'environnement sont requises par le fichier de configuration Elastalert, principalement la configuration générale et la configuration intégrée tierce (Wechat, dingtalk, etc.)
Envvar | Var de configuration Elastalert | Défaut | Description |
---|---|---|---|
ELASTALERT_RUN_EVERY | run_every: => minutes: | 3 | Nombre de minutes à attendre avant de revérifier les règles Elastalert Actuellement disponible uniquement sous forme de valeurs en minutes. |
ELASTALERT_BUFFER_TIME | buffer_time: => minutes: | 45 | ElastAlert mettra en mémoire tampon les résultats de la période la plus récente, au cas où certaines sources de journaux ne seraient pas en temps réel |
ELASTALERT_AWS_REGION | aws_region | Aucun paramètre par défaut | |
ELASTICSEARCH_URL_PREFIX | es_url_prefix | Aucun paramètre par défaut | |
ELASTICSEARCH_SEND_GET_BODY_AS | es_send_get_body_as | Aucun paramètre par défaut | |
ELASTALERT_TIME_LIMIT | alert_time_limit: => minutes: | 5 | Si une alerte échoue pour une raison quelconque, ElastAlert réessayera d'envoyer l'alerte jusqu'à ce que cette période soit écoulée. |
ELASTALERT_DISABLE_RULES_ON_ERROR | disable_rules_on_error: => Bool | True | Si c'est vrai, ElastAlert désactivera les règles qui lèvent des exceptions non interceptées (et non EAException). |
ELASTALERT_MATCH_ENHANCEMENTS | match_enhancements: => array | Aucun ensemble par défaut | Une liste de modules d'amélioration à utiliser avec cette règle |
ELASTALERT_RUN_ENHANCEMENTS_FIRST | run_enhancements_first: => Bool | FAUX | Si la valeur est true, les améliorations seront exécutées dès qu'une correspondance est trouvée |
ELASTICSEARCH_CA_CERTS | ca_certs | Aucun paramètre par défaut | |
ELASTICSEARCH_CLIENT_CERT | client_cert | Aucun paramètre par défaut | |
ÉLASTIQUESEARCH_CLIENT_KEY | client_key | Aucun paramètre par défaut | |
ÉLASTIQUESEARCH_PASSWORD | es_password | Aucun paramètre par défaut | |
ÉLASTIQUESEARCH_USER | es_username | Aucun paramètre par défaut |
Envvar | Var de configuration Elastalert | Défaut | Description |
---|---|---|---|
wechat (compte d'entreprise WeChat) | |||
ELASTALERT_WECHAT_CORP_ID | wechat_corp_id | Aucun paramètre par défaut | identifiant de société |
ELASTALERT_WECHAT_SECRET | wechat_secret | Aucun paramètre par défaut | secret du corps |
ELASTALERT_WECHAT_AGENT_ID | wechat_agent_id | Aucun paramètre par défaut | identifiant de l'agent |
ELASTALERT_WECHAT_PARTY_ID | wechat_party_id | Aucun paramètre par défaut | identifiant du groupe (party1,party2...) |
ELASTALERT_WECHAT_USER_ID | wechat_user_id | Aucun paramètre par défaut | identifiant utilisateur (utilisateur1,utilisateur2,utilisateur3...) |
ELASTALERT_WECHAT_TAG_ID | wechat_tag_id | Aucun paramètre par défaut | identifiant de balise (tag1, tag2, tag3...) |
dingtalk (robot du groupe DingTalk) | |||
ELASTALERT_DINGTALK_ACCESS_TOKEN | dingtalk_access_token | Aucun paramètre par défaut | jeton d'accès dingtalk |
ELASTALERT_DINGTALK_SECURITY_TYPE | dingtalk_security_type | signe | signe/mot-clé/liste blanche |
ELASTALERT_DINGTALK_SECRET | dingtalk_secret | Aucun paramètre par défaut | si ELASTALERT_DINGTALK_SECURITY_TYPE ==signe, ne doit pas être nul |
ELASTALERT_DINGTALK_AT_MOBILES | dingtalk_at_mobiles | Aucun paramètre par défaut | réseau du téléphone à @quelqu'un |
ELASTALERT_DINGTALK_AT_ALL | dingtalk_at_all | FAUX | @tous ou pas |
ELASTALERT_DINGTALK_MSGTYPE | dingtalk_msgtype | texte | texte/démarquage |
ELASTALERT_EMAIL | email | Aucun paramètre par défaut | |
ELASTALERT_EMAIL_REPLY_TO | email_reply_to | Aucun paramètre par défaut | |
ELASTALERT_FROM_ADDR | from_addr | Aucun paramètre par défaut | |
ELASTALERT_NOTIFY_EMAIL | notify_email | Aucun paramètre par défaut | |
ELASTALERT_SMTP_HOST | smtp_host | Aucun paramètre par défaut | |
exotel | |||
ELASTALERT_EXOTEL_ACCOUNT_SID | exotel_account_sid | Aucun paramètre par défaut | |
ELASTALERT_EXOTEL_AUTH_TOKEN | exotel_auth_token | Aucun paramètre par défaut | |
ELASTALERT_EXOTEL_FROM_NUMBER | exotel_from_number | Aucun paramètre par défaut | |
ELASTALERT_EXOTEL_TO_NUMBER | exotel_to_number | Aucun paramètre par défaut | |
gitter | |||
ELASTALERT_GITTER_MSG_LEVEL | gitter_msg_level | Aucun paramètre par défaut | |
ELASTALERT_GITTER_PROXY | gitter_proxy | Aucun paramètre par défaut | |
ELASTALERT_GITTER_WEBHOOK_URL | gitter_webhook_url | Aucun paramètre par défaut | |
chat hip | |||
ELASTALERT_HIPCHAT_AUTH_TOKEN | hipchat_auth_token | Aucun paramètre par défaut | |
ELASTALERT_HIPCHAT_DOMAIN | hipchat_domain | Aucun paramètre par défaut | |
ELASTALERT_HIPCHAT_FROM | hipchat_from | Aucun paramètre par défaut | |
ELASTALERT_HIPCHAT_IGNORE_SSL_ERRORS | hipchat_ignore_ssl_errors | Aucun paramètre par défaut | |
ELASTALERT_HIPCHAT_NOTIFY | hipchat_notify | Aucun paramètre par défaut | |
ELASTALERT_HIPCHAT_ROOM_ID | hipchat_room_id | Aucun paramètre par défaut | |
jira | |||
ELASTALERT_JIRA_ACCOUNT_FILE | jira_account_file | Aucun paramètre par défaut | |
ELASTALERT_JIRA_ASSIGNEE | jira_assignee | Aucun paramètre par défaut | |
ELASTALERT_JIRA_BUMP_IN_STATUSES | jira_bump_in_statuses | Aucun paramètre par défaut | |
ELASTALERT_JIRA_BUMP_NOT_IN_STATUSES | jira_bump_not_in_statuses | Aucun paramètre par défaut | |
ELASTALERT_JIRA_BUMP_TICKETS | jira_bump_tickets | Aucun paramètre par défaut | |
ELASTALERT_JIRA_COMPONENT | jira_component | Aucun paramètre par défaut | |
ELASTALERT_JIRA_COMPONENTS | jira_components | Aucun paramètre par défaut | |
ELASTALERT_JIRA_ISSUETYPE | jira_issuetype | Aucun paramètre par défaut | |
ELASTALERT_JIRA_LABEL | jira_label | Aucun paramètre par défaut | |
ELASTALERT_JIRA_LABELS | jira_labels | Aucun paramètre par défaut | |
ELASTALERT_JIRA_MAX_AGE | jira_max_age | Aucun paramètre par défaut | |
ELASTALERT_JIRA_PROJECT | jira_project | Aucun paramètre par défaut | |
ELASTALERT_JIRA_SERVER | jira_server | Aucun paramètre par défaut | |
ELASTALERT_JIRA_WATCHERS | jira_watchers | Aucun paramètre par défaut | |
Opsgénie | |||
ELASTALERT_OPSGENIE_ACCOUNT | opsgenie_account | Aucun paramètre par défaut | |
ELASTALERT_OPSGENIE_ADDR | opsgenie_addr | Aucun paramètre par défaut | |
ELASTALERT_OPSGENIE_ALIAS | opsgenie_alias | Aucun paramètre par défaut | |
ELASTALERT_OPSGENIE_KEY | opsgenie_key | Aucun paramètre par défaut | |
ELASTALERT_OPSGENIE_MESSAGE | opsgenie_message | Aucun paramètre par défaut | |
ELASTALERT_OPSGENIE_PROXY | opsgenie_proxy | Aucun paramètre par défaut | |
ELASTALERT_OPSGENIE_RECIPIENTS | opsgenie_recipients | Aucun paramètre par défaut | |
ELASTALERT_OPSGENIE_TAGS | opsgenie_tags | Aucun paramètre par défaut | |
ELASTALERT_OPSGENIE_TEAMS | opsgenie_teams | Aucun paramètre par défaut | |
téléavertisseur | |||
ELASTALERT_PAGERDUTY_CLIENT_NAME | pagerduty_client_name | Aucun paramètre par défaut | |
ELASTALERT_PAGERDUTY_EVENT_TYPE | pagerduty_event_type | Aucun paramètre par défaut | |
ELASTALERT_PAGERDUTY_SERVICE_KEY | pagerduty_service_key | Aucun paramètre par défaut | |
mou | |||
ELASTALERT_SLACK_EMOJI_OVERRIDE | slack_emoji_override | Aucun paramètre par défaut | |
ELASTALERT_SLACK_ICON_URL_OVERRIDE | slack_icon_url_override | Aucun paramètre par défaut | |
ELASTALERT_SLACK_MSG_COLOR | slack_msg_color | Aucun paramètre par défaut | |
ELASTALERT_SLACK_PARSE_OVERRIDE | slack_parse_override | Aucun paramètre par défaut | |
ELASTALERT_SLACK_TEXT_STRING | slack_text_string | Aucun paramètre par défaut | |
ELASTALERT_SLACK_USERNAME_OVERRIDE | slack_username_override | Aucun paramètre par défaut | |
ELASTALERT_SLACK_WEBHOOK_URL | slack_webhook_url | Aucun paramètre par défaut | |
télégramme | |||
ELASTALERT_TELEGRAM_API_URL | telegram_api_url | Aucun paramètre par défaut | |
ELASTALERT_TELEGRAM_BOT_TOKEN | telegram_bot_token | Aucun paramètre par défaut | |
ELASTALERT_TELEGRAM_ROOM_ID | telegram_room_id | Aucun paramètre par défaut | |
twilio | |||
ELASTALERT_TWILIO_ACCOUNT_SID | twilio_account_sid | Aucun paramètre par défaut | |
ELASTALERT_TWILIO_AUTH_TOKEN | twilio_auth_token | Aucun paramètre par défaut | |
ELASTALERT_TWILIO_FROM_NUMBER | twilio_from_number | Aucun paramètre par défaut | |
ELASTALERT_TWILIO_TO_NUMBER | twilio_to_number | Aucun paramètre par défaut | |
Victorops | |||
ELASTALERT_VICTOROPS_API_KEY | victorops_api_key | Aucun paramètre par défaut | |
ELASTALERT_VICTOROPS_ENTITY_DISPLAY_NAME | victorops_entity_display_name | Aucun paramètre par défaut | |
ELASTALERT_VICTOROPS_MESSAGE_TYPE | victorops_message_type | Aucun paramètre par défaut | |
ELASTALERT_VICTOROPS_ROUTING_KEY | victorops_routing_key | Aucun paramètre par défaut |
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/ " ]
Note:
[]
: signifie facultatifv0.2.4
, v0.2.3
...Avis:
[]
: signifie facultatif- ELASTALERT_VERSION : Il s'agit de la version d'elastalert. Pour plus de détails, voir https://github.com/Yelp/elastalert/releases. Il s'agit généralement de la v0.2.4 v0.2.3 comme celle-ci.
- MIRROR : est une valeur booléenne, s'il faut activer l'accélérateur lors de la construction, si vrai, activez-le, s'il est défini sur true, ALPINE_HOST (miroirs par défaut.aliyun.com) et PIP_MIRROR (par défaut https://mirrors.aliyun.com/pypi /simple/) Ne doit pas être vide, si vide, utilisez la valeur par défaut
- ALPINE_HOST : adresse de l'accélérateur alpin, la valeur par défaut est Alibaba Cloud mirrors.aliyun.com
- PIP_MIRROR : adresse de l'accélérateur pip, la valeur par défaut est Alibaba Cloud https://mirrors.aliyun.com/pypi/simple/
- Partie elastalert : La plupart d'entre eux sont des projets basés sur sc250024/docker-elastalert, et j'en ai beaucoup appris.
- Partie alarme : les parties alarme et amplificateur sont principalement basées sur mon autre projet anjia0532/elastalert-wechat-plugin
bienvenue pour commettre de nouveaux problèmes
Si vous avez des questions, veuillez soumettre de nouveaux numéros pour me faire part de vos commentaires.
Ce module est sous licence BSD.
Copyright (C) 2020-, par AnJia [email protected].
Tous droits réservés.
La redistribution et l'utilisation sous forme source et binaire, avec ou sans modification, sont autorisées à condition que les conditions suivantes soient remplies :
Les redistributions du code source doivent conserver l'avis de droit d'auteur ci-dessus, cette liste de conditions et la clause de non-responsabilité suivante.
Les redistributions sous forme binaire doivent reproduire l'avis de droit d'auteur ci-dessus, cette liste de conditions et la clause de non-responsabilité suivante dans la documentation et/ou tout autre matériel fourni avec la distribution.
CE LOGICIEL EST FOURNI PAR LES TITULAIRES DES DROITS D'AUTEUR ET LES CONTRIBUTEURS "EN L'ÉTAT" ET TOUTE GARANTIE EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS LIMITATION, LES GARANTIES IMPLICITES DE QUALITÉ MARCHANDE ET D'ADAPTATION À UN USAGE PARTICULIER NE SONT EN AUCUN CAS DÉCLINÉES PAR LE TITULAIRE DES DROITS D'AUTEUR OU D'ADAPTATION. LES CONTRIBUTEURS SONT RESPONSABLE DE TOUT DOMMAGE DIRECT, INDIRECT, ACCESSOIRE, SPÉCIAL, EXEMPLAIRE OU CONSÉCUTIF (Y COMPRIS, MAIS SANS LIMITATION, L'ACHAT DE BIENS OU DE SERVICES DE SUBSTITUTION ; LA PERTE D'UTILISATION, DE DONNÉES OU DE PROFITS ; OU L'INTERRUPTION DES ACTIVITÉS), QUELLE QU'EN SOIT LA CAUSE ET SUR TOUTE THÉORIE DE RESPONSABILITÉ, QUE CE SOIT EN CONTRAT, RESPONSABILITÉ STRICTE OU DÉLIT (Y COMPRIS LA NÉGLIGENCE OU AUTRE) DÉCOULANT DE QUELQUE MANIÈRE QUE CE SOIT DE L'UTILISATION DE CE LOGICIEL, MÊME SI INFORMÉ DE LA POSSIBILITÉ DE TELS DOMMAGES.