elastalert не отправляет электронное письмо

#elasticsearch #alert #elastic-stack

#elasticsearch #предупреждение #elastic-stack

Вопрос:

Я настроил эластичное оповещение на образе Docker и пытаюсь отправить электронное письмо через smtp-сервер Gmail, но постоянно получаю ошибки

Мой файл config.yaml является:

 ...
smtp_auth_file: /usr/local/bin/elastalert/rules/email_auth.yaml
  

Мой файл аутентификации электронной почты:

 smtp_host: smtp.gmail.com
from_addr: some_random_addr@gmail.com
user: "username"
password: "password"
  

Но ошибка, которую я получаю, заключается в следующем:

 util.EAException: Error loading file /usr/local/bin/elastalert/rules/email_auth.yaml: Invalid Rule: None
{'from_addr': 'some_rand_addr@gmail.com', 'smtp_ssl': True, 'smtp_host': 'smtp.gmail.com', 'user': 'username', 'rule_file': '/usr/local/bin/elastalert/rules/email_auth.yaml', 'password': 'password'} is valid under each of {'properties': {'type': {'pattern': '[.]'}}, 'title': 'Custom Rule from Module'}, {'properties': {'type': {'enum': ['any']}}, 'title': 'Any'}

Failed validating 'oneOf' in schema:
    {'$schema': 'http://json-schema.org/draft-04/schema#',
     'definitions': {'arrayOfStrings': {'items': {'type': 'string'},
                                        'type': ['string', 'array']},
                     'arrayOfStringsOrOtherArrays': {'items': {'type': ['string',
                                                                        'array']},
                                                     'type': ['string',
                                                              'array']},
                     'filter': {},
                     'timeFrame': {'additionalProperties': False,
                                   'properties': {'days': {'type': 'number'},
                                                  'hours': {'type': 'number'},
                                                  'milliseconds': {'type': 'number'},
                                                  'minutes': {'type': 'number'},
                                                  'schedule': {'type': 'string'},
                                                  'seconds': {'type': 'number'},
                                                  'weeks': {'type': 'number'}},
                                   'type': 'object'}},
     'oneOf': [{'properties': {'type': {'enum': ['any']}},
                'title': 'Any'},
               {'properties': {'blacklist': {'items': {'type': 'string'},
                                             'type': 'array'},
                               'compare_key': {'type': 'string'},
                               'type': {'enum': ['blacklist']}},
                'required': ['blacklist', 'compare_key'],
                'title': 'Blacklist'},
               {'properties': {'compare_key': {'type': 'string'},
                               'ignore_null': {'type': 'boolean'},
                               'type': {'enum': ['whitelist']},
                               'whitelist': {'items': {'type': 'string'},
                                             'type': 'array'}},
                'required': ['whitelist', 'compare_key', 'ignore_null'],
                'title': 'Whitelist'},
               {'properties': {'compare_key': {'type': 'string'},
                               'ignore_null': {'type': 'boolean'},
                               'timeframe': {'additionalProperties': False,
                                             'properties': {'days': {'type': 'number'},
                                                            'hours': {'type': 'number'},
                                                            'milliseconds': {'type': 'number'},
                                                            'minutes': {'type': 'number'},
                                                            'schedule': {'type': 'string'},
                                                            'seconds': {'type': 'number'},
                                                            'weeks': {'type': 'number'}},
                                             'type': 'object'},
                               'type': {'enum': ['change']}},
                'required': ['query_key', 'compare_key', 'ignore_null'],
                'title': 'Change'},
  

Я проверил elastalert/config.py и schma.yaml, и обнаружил, что свойство smtp_auth_file, user и password даже не определены в schma.yaml. Это то, что вызывает ошибку проверки? Кто-нибудь знает, где моя настройка пошла не так? Спасибо

Комментарии:

1. Ваш email_auth.yaml файл должен содержать только настройки user и password , все остальное выполняется в config.yaml соответствии с документацией

2. Спасибо, я попробовал это, но это выдало мне ту же ошибку.

3. Похоже, что проверка файла правил содержит ошибки, он не может найти пользователя и пароль, но я не знаю, где моя настройка может быть неправильной.

Ответ №1:

Я нашел проблему. Я ввел свою email_authentication.yaml в той же папке, что и моя папка rule_folder. Как только я удалил его, эта ошибка была устранена.