Sign inSign up

sc250024/elastalert

By sc250024

Updated over 8 years ago

Docker images for Elastalert from Yelp (https://github.com/Yelp/elastalert)

Image
0

952

sc250024/elastalert repository overview

docker-elastalert

Docker image for running Elastalert.

Features

  • Docker container that conforms to The Twelve-Factor App Section III configuration guidelines by making everything available using environment variables.
  • Integration with the following external services via environment variables:
    • E-mail (General SMTP)
    • Exotel
    • Gitter
    • HipChat
    • JIRA
    • OpsGenie
    • PagerDuty
    • Slack
    • Telegram
    • Twilio
    • VictorOps
  • NTP syncrhonization
  • Rules checking on container startup if rules/ directory is populated

Usage

Locally the docker-elastalert instance can be run using the following command:

docker-compose up -d --build

The local cluster spins up a dummy Elasticsearch container, and then the Elastalert container. When the Elastalert container starts, the CMD script runs through the following processes:

  • Checks the Elastalert rules located in ${RULES_FOLDER} if any exists
  • Sets container timezone to ${CONTAINER_TIMEZONE} if the ${SET_CONTAINER_TIMEZONE} is set to True. The default is Etc/UTC.
  • Starts the NTP daemon for time synchronization. This requires the following Linux capabilities set via cap_add: SYS_NICE and SYS_TIME.
  • Populates the Elastalert template located at ${CONFIG_DIR}/elastalert_config.yaml.tmpl with environment variables using the dockerize binary.
  • Loops a wget command until the Elasticsearch instance located at ${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT} becomes available.
  • Runs elastalert-create-index if the specified ${ELASTALERT_INDEX} hasn't yet been created,
  • Executes the python daemon.

Credit

Environment Variables

Set at buildtime

These variables are set during the Docker build, and are generally necessary for running core functionality of Elastalert.

Env varElastalert config varDefaultDescription
CONFIG_FOLDERN/A/opt/elastalert/configPlace Elastalert configs here
CONTAINER_TIMEZONEN/AEtc/UTCContainer timezone value
DOCKERIZE_VERSIONN/A0.6.0Version of Dockerize binary to download
ELASTALERT_CONFIGN/A${CONFIG_FOLDER}/elastalert_config.yamlName and location of the config file referenced by src/start-elastalert to start the Python daemon
ELASTALERT_INDEXwriteback_indexelastalert_statusName of the Elastalert index in your Elasticsearch cluster
ELASTALERT_SYSTEM_GROUPN/AelastalertName of the user running Elastalert; used for the daemon and folder permissions
ELASTALERT_SYSTEM_USERN/AelastalertName of the group running Elastalert; used for the daemon and folder permissions
ELASTALERT_VERSIONN/A0.1.29Version of Elastalert to install from pip
ELASTICSEARCH_HOSTes_hostelasticsearchDesc
ELASTICSEARCH_PORTes_port9200Desc
ELASTICSEARCH_USE_SSLuse_sslFalseConnect with TLS to Elasticsearch
ELASTICSEARCH_VERIFY_CERTSverify_certsFalseUse SSL authentication with client certificates
RULES_FOLDERrules_folder/opt/elastalert/rulesFolder where Elastalert scans for rules
SET_CONTAINER_TIMEZONEN/ATrueWhether or not to set the container timezone to ${CONTAINER_TIMEZONE}
Set at runtime

These variables are settings available in the Elastalert configuration file. Most of these settings apply to third-party integrations (JIRA, OpsGenie, etc), or are things documented here: Elastalert common configuration options

Env varElastalert config varDefaultDescription
ELASTALERT_AWS_REGIONaws_regionNo default set
ELASTALERT_BUFFER_TIMEbuffer_time: => minutes:45ElastAlert will buffer results from the most recent period of time, in case some log sources are not in real time
ELASTALERT_EMAILemailNo default set
ELASTALERT_EMAIL_REPLY_TOemail_reply_toNo default set
ELASTALERT_EXOTEL_ACCOUNT_SIDexotel_account_sidNo default set
ELASTALERT_EXOTEL_AUTH_TOKENexotel_auth_tokenNo default set
ELASTALERT_EXOTEL_FROM_NUMBERexotel_from_numberNo default set
ELASTALERT_EXOTEL_TO_NUMBERexotel_to_numberNo default set
ELASTALERT_FROM_ADDRfrom_addrNo default set
ELASTALERT_GITTER_MSG_LEVELgitter_msg_levelNo default set
ELASTALERT_GITTER_PROXYgitter_proxyNo default set
ELASTALERT_GITTER_WEBHOOK_URLgitter_webhook_urlNo default set
ELASTALERT_HIPCHAT_AUTH_TOKENhipchat_auth_tokenNo default set
ELASTALERT_HIPCHAT_DOMAINhipchat_domainNo default set
ELASTALERT_HIPCHAT_FROMhipchat_fromNo default set
ELASTALERT_HIPCHAT_IGNORE_SSL_ERRORShipchat_ignore_ssl_errorsNo default set
ELASTALERT_HIPCHAT_NOTIFYhipchat_notifyNo default set
ELASTALERT_HIPCHAT_ROOM_IDhipchat_room_idNo default set
ELASTALERT_JIRA_ACCOUNT_FILEjira_account_fileNo default set
ELASTALERT_JIRA_ASSIGNEEjira_assigneeNo default set
ELASTALERT_JIRA_BUMP_IN_STATUSESjira_bump_in_statusesNo default set
ELASTALERT_JIRA_BUMP_NOT_IN_STATUSESjira_bump_not_in_statusesNo default set
ELASTALERT_JIRA_BUMP_TICKETSjira_bump_ticketsNo default set
ELASTALERT_JIRA_COMPONENTjira_componentNo default set
ELASTALERT_JIRA_COMPONENTSjira_componentsNo default set
ELASTALERT_JIRA_ISSUETYPEjira_issuetypeNo default set
ELASTALERT_JIRA_LABELjira_labelNo default set
ELASTALERT_JIRA_LABELSjira_labelsNo default set
ELASTALERT_JIRA_MAX_AGEjira_max_ageNo default set
ELASTALERT_JIRA_PROJECTjira_projectNo default set
ELASTALERT_JIRA_SERVERjira_serverNo default set
ELASTALERT_JIRA_WATCHERSjira_watchersNo default set
ELASTALERT_NOTIFY_EMAILnotify_emailNo default set
ELASTALERT_OPSGENIE_ACCOUNTopsgenie_accountNo default set
ELASTALERT_OPSGENIE_ADDRopsgenie_addrNo default set
ELASTALERT_OPSGENIE_ALIASopsgenie_aliasNo default set
ELASTALERT_OPSGENIE_KEYopsgenie_keyNo default set
ELASTALERT_OPSGENIE_MESSAGEopsgenie_messageNo default set
ELASTALERT_OPSGENIE_PROXYopsgenie_proxyNo default set
ELASTALERT_OPSGENIE_RECIPIENTSopsgenie_recipientsNo default set
ELASTALERT_OPSGENIE_TAGSopsgenie_tagsNo default set
ELASTALERT_OPSGENIE_TEAMSopsgenie_teamsNo default set
ELASTALERT_PAGERDUTY_CLIENT_NAMEpagerduty_client_nameNo default set
ELASTALERT_PAGERDUTY_EVENT_TYPEpagerduty_event_typeNo default set
ELASTALERT_PAGERDUTY_SERVICE_KEYpagerduty_service_keyNo default set
ELASTALERT_RUN_EVERYrun_every: => minutes:3Number of minutes to wait before re-checking Elastalert rules. Currently only available as values in minutes
ELASTALERT_SLACK_EMOJI_OVERRIDEslack_emoji_overrideNo default set
ELASTALERT_SLACK_ICON_URL_OVERRIDEslack_icon_url_overrideNo default set
ELASTALERT_SLACK_MSG_COLORslack_msg_colorNo default set
ELASTALERT_SLACK_PARSE_OVERRIDEslack_parse_overrideNo default set
ELASTALERT_SLACK_TEXT_STRINGslack_text_stringNo default set
ELASTALERT_SLACK_USERNAME_OVERRIDEslack_username_overrideNo default set
ELASTALERT_SLACK_WEBHOOK_URLslack_webhook_urlNo default set
ELASTALERT_SMTP_HOSTsmtp_hostNo default set
ELASTALERT_TELEGRAM_API_URLtelegram_api_urlNo default set
ELASTALERT_TELEGRAM_BOT_TOKENtelegram_bot_tokenNo default set
ELASTALERT_TELEGRAM_ROOM_IDtelegram_room_idNo default set
ELASTALERT_TIME_LIMITalert_time_limit: => minutes:5If an alert fails for some reason, ElastAlert will retry sending the alert until this time period has elapsed
ELASTALERT_TWILIO_ACCOUNT_SIDtwilio_account_sidNo default set
ELASTALERT_TWILIO_AUTH_TOKENtwilio_auth_tokenNo default set
ELASTALERT_TWILIO_FROM_NUMBERtwilio_from_numberNo default set
ELASTALERT_TWILIO_TO_NUMBERtwilio_to_numberNo default set
ELASTALERT_VICTOROPS_API_KEYvictorops_api_keyNo default set
ELASTALERT_VICTOROPS_ENTITY_DISPLAY_NAMEvictorops_entity_display_nameNo default set
ELASTALERT_VICTOROPS_MESSAGE_TYPEvictorops_message_typeNo default set
ELASTALERT_VICTOROPS_ROUTING_KEYvictorops_routing_keyNo default set
ELASTICSEARCH_CA_CERTSca_certsNo default set
ELASTICSEARCH_CLIENT_CERTclient_certNo default set
ELASTICSEARCH_CLIENT_KEYclient_keyNo default set
ELASTICSEARCH_PASSWORDes_passwordNo default set
ELASTICSEARCH_SEND_GET_BODY_ASes_send_get_body_asNo default set
ELASTICSEARCH_URL_PREFIXes_url_prefixNo default set
ELASTICSEARCH_USERes_usernameNo default set

Tag summary

Content type

Image

Digest

Size

43.6 MB

Last updated

over 8 years ago

docker pull sc250024/elastalert