imagens docker elastalert, esta imagem inclui o plug-in de alerta corporativo Wechat e o plug-in de alerta Dingtalk
A imagem docker elastalert integra o plug-in de alarme de conta corporativa WeChat e o plug-in de alarme DingTalk prontos para uso (com base no webhook do robô do grupo DingTalk, suporta autenticação de segurança de assinatura e suporta formatos de texto e markdown)
Disponibilizando tudo usando variáveis de ambiente.
Integração com os seguintes serviços externos através de variáveis de ambiente:
Sincronização NTP e suporte para mudança de fuso horário.
Verificação de inicialização e instalação de dependências de aprimoramento e alerta.
Deslocar @timestamp para a hora local (usar fuso horário) (suporta a modificação de @timestamp de acordo com o fuso horário 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
Essas variáveis são definidas durante a construção do Docker e geralmente são necessárias para executar a funcionalidade principal do Elastalert.
As variáveis de ambiente definidas ao construir a imagem são necessárias para executar o Elastalert
Envvar | Variação de configuração do Elastalert | Padrão | Descrição |
---|---|---|---|
ELASTALERT_HOME | N / D | /opt/elastalert | Coloque o Elastalert em casa aqui |
SET_CONTAINER_TIMEZONE | N / D | True | Definir ou não o fuso horário do contêiner para ${CONTAINER_TIMEZONE} |
CONTAINER_TIMEZONE | N / D | Etc/UTC | Valor do fuso horário do contêiner |
ELASTALERT_RULES_DIRECTORY | N / D | ${ELASTALERT_HOME}/rules | Pasta onde o Elastalert procura regras |
ELASTALERT_PLUGIN_DIRECTORY | N / D | ${ELASTALERT_HOME}/elastalert_modules | Pasta onde o Elastalert verifica alertas |
ELASTALERT_ENHANCEMENT_DIRECTORY | N / D | ${ELASTALERT_HOME}/elastalert_enhancements | Pasta onde o Elastalert verifica melhorias |
ELASTALERT_CONFIG | N / D | ${ELASTALERT_HOME}/config.yaml | Nome e localização do arquivo de configuração referenciado por docker-entrypoint.sh para iniciar o daemon Python |
ELASTALERT_INDEX | writeback_index | elastalert_status | Nome do índice Elastalert em seu cluster Elasticsearch |
ELASTALERT_SYSTEM_GROUP | N / D | elastalert | Nome do usuário que executa o Elastalert usado para permissões de daemon e pasta; |
ELASTALERT_SYSTEM_USER | N / D | elastalert | Nome do grupo que executa o Elastalert usado para permissões de daemon e pasta; |
ELASTALERT_VERSION | N / D | 0.1.29 | Versão do Elastalert para instalar a partir pip |
ELASTICSEARCH_HOST | es_host | elasticsearch | Descrição |
ELASTICSEARCH_PORT | es_port | 9200 | Descrição |
ELASTICSEARCH_USE_SSL | use_ssl | False | Conecte-se com TLS ao Elasticsearch |
ELASTICSEARCH_VERIFY_CERTS | verify_certs | False | Use autenticação SSL com certificados de cliente |
Essas variáveis são configurações disponíveis no arquivo de configuração do Elastalert. A maioria dessas configurações se aplica a integrações de terceiros (JIRA, OpsGenie, etc.) ou estão documentadas aqui: Opções de configuração comuns do Elastalert.
Essas variáveis de ambiente são exigidas pelo arquivo de configuração do Elastalert, principalmente configuração geral e configuração integrada de três partes (Wechat, dingtalk, etc.)
Envvar | Variação de configuração do Elastalert | Padrão | Descrição |
---|---|---|---|
ELASTALERT_RUN_EVERY | run_every: => minutes: | 3 | Número de minutos de espera antes de verificar novamente as regras do Elastalert Atualmente disponível apenas como valores em minutos. |
ELASTALERT_BUFFER_TIME | buffer_time: => minutes: | 45 | O ElastAlert armazenará em buffer os resultados do período mais recente, caso algumas fontes de log não estejam em tempo real |
ELASTALERT_AWS_REGION | aws_region | Nenhum conjunto padrão | |
ELASTICSEARCH_URL_PREFIX | es_url_prefix | Nenhum conjunto padrão | |
ELASTICSEARCH_SEND_GET_BODY_AS | es_send_get_body_as | Nenhum conjunto padrão | |
ELASTALERT_TIME_LIMIT | alert_time_limit: => minutes: | 5 | Se um alerta falhar por algum motivo, o ElastAlert tentará enviar o alerta novamente até que esse período de tempo tenha decorrido |
ELASTALERT_DISABLE_RULES_ON_ERROR | disable_rules_on_error: => Bool | True | Se for verdade, o ElastAlert desabilitará regras que lançam exceções não detectadas (não EAException) |
ELASTALERT_MATCH_ENHANCEMENTS | match_enhancements: => array | Nenhum conjunto padrão | Uma lista de módulos de aprimoramento para usar com esta regra |
ELASTALERT_RUN_ENHANCEMENTS_FIRST | run_enhancements_first: => Bool | Falso | Se definido como verdadeiro, as melhorias serão executadas assim que uma correspondência for encontrada |
ELASTICSEARCH_CA_CERTS | ca_certs | Nenhum conjunto padrão | |
ELASTICSEARCH_CLIENT_CERT | client_cert | Nenhum conjunto padrão | |
ELASTICSEARCH_CLIENT_KEY | client_key | Nenhum conjunto padrão | |
ELASTICSEARCH_SENHA | es_password | Nenhum conjunto padrão | |
ELASTICSEARCH_USER | es_username | Nenhum conjunto padrão |
Envvar | Variação de configuração do Elastalert | Padrão | Descrição |
---|---|---|---|
wechat (conta empresarial WeChat) | |||
ELASTALERT_WECHAT_CORP_ID | wechat_corp_id | Nenhum conjunto padrão | ID da empresa |
ELASTALERT_WECHAT_SECRET | wechat_secret | Nenhum conjunto padrão | segredo corporativo |
ELASTALERT_WECHAT_AGENT_ID | wechat_agent_id | Nenhum conjunto padrão | ID do agente |
ELASTALERT_WECHAT_PARTY_ID | wechat_party_id | Nenhum conjunto padrão | ID da festa (festa1,festa2...) |
ELASTALERT_WECHAT_USER_ID | wechat_user_id | Nenhum conjunto padrão | ID do usuário (usuário1,usuário2,usuário3...) |
ELASTALERT_WECHAT_TAG_ID | wechat_tag_id | Nenhum conjunto padrão | identificação da etiqueta(etiqueta1,etiqueta2,etiqueta3...) |
dingtalk (robô do grupo DingTalk) | |||
ELASTALERT_DINGTALK_ACCESS_TOKEN | dingtalk_access_token | Nenhum conjunto padrão | token de acesso dingtalk |
ELASTALERT_DINGTALK_SECURITY_TYPE | dingtalk_security_type | sinal | assinar/palavra-chave/lista branca |
ELASTALERT_DINGTALK_SECRET | dingtalk_secret | Nenhum conjunto padrão | se ELASTALERT_DINGTALK_SECURITY_TYPE ==sinal, não deve ser nulo |
ELASTALERT_DINGTALK_AT_MOBILES | dingtalk_at_mobiles | Nenhum conjunto padrão | matriz do telefone para @alguém |
ELASTALERT_DINGTALK_AT_ALL | dingtalk_at_all | Falso | @todos ou não |
ELASTALERT_DINGTALK_MSGTYPE | dingtalk_msgtype | texto | texto/redução |
ELASTALERT_EMAIL | email | Nenhum conjunto padrão | |
ELASTALERT_EMAIL_REPLY_TO | email_reply_to | Nenhum conjunto padrão | |
ELASTALERT_FROM_ADDR | from_addr | Nenhum conjunto padrão | |
ELASTALERT_NOTIFY_EMAIL | notify_email | Nenhum conjunto padrão | |
ELASTALERT_SMTP_HOST | smtp_host | Nenhum conjunto padrão | |
exotel | |||
ELASTALERT_EXOTEL_ACCOUNT_SID | exotel_account_sid | Nenhum conjunto padrão | |
ELASTALERT_EXOTEL_AUTH_TOKEN | exotel_auth_token | Nenhum conjunto padrão | |
ELASTALERT_EXOTEL_FROM_NUMBER | exotel_from_number | Nenhum conjunto padrão | |
ELASTALERT_EXOTEL_TO_NUMBER | exotel_to_number | Nenhum conjunto padrão | |
gitter | |||
ELASTALERT_GITTER_MSG_LEVEL | gitter_msg_level | Nenhum conjunto padrão | |
ELASTALERT_GITTER_PROXY | gitter_proxy | Nenhum conjunto padrão | |
ELASTALERT_GITTER_WEBHOOK_URL | gitter_webhook_url | Nenhum conjunto padrão | |
bate-papo | |||
ELASTALERT_HIPCHAT_AUTH_TOKEN | hipchat_auth_token | Nenhum conjunto padrão | |
ELASTALERT_HIPCHAT_DOMAIN | hipchat_domain | Nenhum conjunto padrão | |
ELASTALERT_HIPCHAT_FROM | hipchat_from | Nenhum conjunto padrão | |
ELASTALERT_HIPCHAT_IGNORE_SSL_ERRORS | hipchat_ignore_ssl_errors | Nenhum conjunto padrão | |
ELASTALERT_HIPCHAT_NOTIFY | hipchat_notify | Nenhum conjunto padrão | |
ELASTALERT_HIPCHAT_ROOM_ID | hipchat_room_id | Nenhum conjunto padrão | |
jira | |||
ELASTALERT_JIRA_ACCOUNT_FILE | jira_account_file | Nenhum conjunto padrão | |
ELASTALERT_JIRA_ASSIGNEE | jira_assignee | Nenhum conjunto padrão | |
ELASTALERT_JIRA_BUMP_IN_STATUSES | jira_bump_in_statuses | Nenhum conjunto padrão | |
ELASTALERT_JIRA_BUMP_NOT_IN_STATUSES | jira_bump_not_in_statuses | Nenhum conjunto padrão | |
ELASTALERT_JIRA_BUMP_TICKETS | jira_bump_tickets | Nenhum conjunto padrão | |
ELASTALERT_JIRA_COMPONENT | jira_component | Nenhum conjunto padrão | |
ELASTALERT_JIRA_COMPONENTS | jira_components | Nenhum conjunto padrão | |
ELASTALERT_JIRA_ISSUETYPE | jira_issuetype | Nenhum conjunto padrão | |
ELASTALERT_JIRA_LABEL | jira_label | Nenhum conjunto padrão | |
ELASTALERT_JIRA_LABELS | jira_labels | Nenhum conjunto padrão | |
ELASTALERT_JIRA_MAX_AGE | jira_max_age | Nenhum conjunto padrão | |
ELASTALERT_JIRA_PROJECT | jira_project | Nenhum conjunto padrão | |
ELASTALERT_JIRA_SERVER | jira_server | Nenhum conjunto padrão | |
ELASTALERT_JIRA_WATCHERS | jira_watchers | Nenhum conjunto padrão | |
opsgênio | |||
ELASTALERT_OPSGENIE_ACCOUNT | opsgenie_account | Nenhum conjunto padrão | |
ELASTALERT_OPSGENIE_ADDR | opsgenie_addr | Nenhum conjunto padrão | |
ELASTALERT_OPSGENIE_ALIAS | opsgenie_alias | Nenhum conjunto padrão | |
ELASTALERT_OPSGENIE_KEY | opsgenie_key | Nenhum conjunto padrão | |
ELASTALERT_OPSGENIE_MESSAGE | opsgenie_message | Nenhum conjunto padrão | |
ELASTALERT_OPSGENIE_PROXY | opsgenie_proxy | Nenhum conjunto padrão | |
ELASTALERT_OPSGENIE_RECIPIENTS | opsgenie_recipients | Nenhum conjunto padrão | |
ELASTALERT_OPSGENIE_TAGS | opsgenie_tags | Nenhum conjunto padrão | |
ELASTALERT_OPSGENIE_TEAMS | opsgenie_teams | Nenhum conjunto padrão | |
pagerduty | |||
ELASTALERT_PAGERDUTY_CLIENT_NAME | pagerduty_client_name | Nenhum conjunto padrão | |
ELASTALERT_PAGERDUTY_EVENT_TYPE | pagerduty_event_type | Nenhum conjunto padrão | |
ELASTALERT_PAGERDUTY_SERVICE_KEY | pagerduty_service_key | Nenhum conjunto padrão | |
folga | |||
ELASTALERT_SLACK_EMOJI_OVERRIDE | slack_emoji_override | Nenhum conjunto padrão | |
ELASTALERT_SLACK_ICON_URL_OVERRIDE | slack_icon_url_override | Nenhum conjunto padrão | |
ELASTALERT_SLACK_MSG_COLOR | slack_msg_color | Nenhum conjunto padrão | |
ELASTALERT_SLACK_PARSE_OVERRIDE | slack_parse_override | Nenhum conjunto padrão | |
ELASTALERT_SLACK_TEXT_STRING | slack_text_string | Nenhum conjunto padrão | |
ELASTALERT_SLACK_USERNAME_OVERRIDE | slack_username_override | Nenhum conjunto padrão | |
ELASTALERT_SLACK_WEBHOOK_URL | slack_webhook_url | Nenhum conjunto padrão | |
telegrama | |||
ELASTALERT_TELEGRAM_API_URL | telegram_api_url | Nenhum conjunto padrão | |
ELASTALERT_TELEGRAM_BOT_TOKEN | telegram_bot_token | Nenhum conjunto padrão | |
ELASTALERT_TELEGRAM_ROOM_ID | telegram_room_id | Nenhum conjunto padrão | |
Twilio | |||
ELASTALERT_TWILIO_ACCOUNT_SID | twilio_account_sid | Nenhum conjunto padrão | |
ELASTALERT_TWILIO_AUTH_TOKEN | twilio_auth_token | Nenhum conjunto padrão | |
ELASTALERT_TWILIO_FROM_NUMBER | twilio_from_number | Nenhum conjunto padrão | |
ELASTALERT_TWILIO_TO_NUMBER | twilio_to_number | Nenhum conjunto padrão | |
vitória | |||
ELASTALERT_VICTOROPS_API_KEY | victorops_api_key | Nenhum conjunto padrão | |
ELASTALERT_VICTOROPS_ENTITY_DISPLAY_NAME | victorops_entity_display_name | Nenhum conjunto padrão | |
ELASTALERT_VICTOROPS_MESSAGE_TYPE | victorops_message_type | Nenhum conjunto padrão | |
ELASTALERT_VICTOROPS_ROUTING_KEY | victorops_routing_key | Nenhum conjunto padrão |
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/ " ]
Observação:
[]
: significa opcionalv0.2.4
, v0.2.3
...Perceber:
[]
: significa opcional- ELASTALERT_VERSION: É a versão do elastalert para obter detalhes, consulte https://github.com/Yelp/elastalert/releases. Geralmente é v0.2.4 v0.2.3.
- MIRROR: é um valor bool, se deve habilitar o acelerador ao construir, se verdadeiro, habilitá-lo, se definido como verdadeiro, ALPINE_HOST (padrão mirrors.aliyun.com) e PIP_MIRROR (padrão https://mirrors.aliyun.com/pypi /simple/) Não deve estar vazio, se estiver vazio, use o valor padrão
- ALPINE_HOST: endereço do acelerador alpino, o padrão é Alibaba Cloud mirrors.aliyun.com
- PIP_MIRROR: endereço do acelerador pip, o padrão é Alibaba Cloud https://mirrors.aliyun.com/pypi/simple/
- parte elastalert: A maioria deles são projetos baseados em sc250024/docker-elastalert, e aprendi muito com eles.
- Parte do alarme: As partes do alarme e do intensificador são baseadas principalmente em meu outro projeto anjia0532/elastalert-wechat-plugin
bem-vindo para cometer novos problemas
Se você tiver alguma dúvida, envie novos problemas para me dar feedback.
Este módulo está licenciado sob a licença BSD.
Copyright (C) 2020-, por AnJia [email protected].
Todos os direitos reservados.
A redistribuição e o uso em formato fonte e binário, com ou sem modificação, são permitidos desde que as seguintes condições sejam atendidas:
As redistribuições do código-fonte devem manter o aviso de direitos autorais acima, esta lista de condições e a seguinte isenção de responsabilidade.
As redistribuições em formato binário devem reproduzir o aviso de direitos autorais acima, esta lista de condições e a seguinte isenção de responsabilidade na documentação e/ou outros materiais fornecidos com a distribuição.
ESTE SOFTWARE É FORNECIDO PELOS DETENTORES DE DIREITOS AUTORAIS E COLABORADORES "NO ESTADO EM QUE SE ENCONTRA" E QUAISQUER GARANTIAS EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO SE LIMITANDO A, AS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO A UM DETERMINADO FIM SÃO REJEITADAS EM NENHUM CASO O DETENTOR DOS DIREITOS AUTORAIS OU. COLABORADORES SERÃO RESPONSÁVEL POR QUAISQUER DANOS DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, EXEMPLARES OU CONSEQÜENCIAIS (INCLUINDO, MAS NÃO SE LIMITANDO A, AQUISIÇÃO DE BENS OU SERVIÇOS SUBSTITUTOS; PERDA DE USO, DADOS OU LUCROS; OU INTERRUPÇÃO DE NEGÓCIOS) QUALQUER CAUSA E EM QUALQUER TEORIA DE RESPONSABILIDADE, SEJA EM CONTRATO, RESPONSABILIDADE ESTRITA OU ATO ILÍCITO (INCLUINDO NEGLIGÊNCIA OU DE OUTRA FORMA) DECORRENTE DE QUALQUER FORMA DO USO DESTE SOFTWARE, MESMO QUE AVISADO DA POSSIBILIDADE DE TAIS DANOS.