Elastalert Blacklist оповещение об ошибках отслеживания - PullRequest
0 голосов
/ 15 мая 2018

В нашей ES есть псевдоним для нескольких индексов, которые мы регулярно ищем.Один из рассматриваемых индексов содержит наши журналы DNS.

Если я ищу в Кибане или ES:

Запрос: www.testbad.domain

Я могу получить хиты, независимо от того,Я выполняю поиск в индексах с псевдонимами или в индексе DNS.

Поэтому я создал следующее правило:

# Test alert to check function

use_ssl: False

es_username: me
es_password: 12345

type: blacklist
    - "www.testbad.domain"
    - "!file /opt/elastalert/black_lists/bad_domains.txt"

index: alias-*

name: Detect-bad-domains

compare_key: Query

ignore_null: true

alert:
    - command

command: send_alert.sh

Но когда я проверяю предупреждение, я получаю следующее:

 Successfully loaded Detect-bad-domains

 Got 12345325 hits from the last 1 day

 Available terms in first hit: <list of terms which does NOT include Query>

 Warning: compare key %s is either missing or null! 
 Included term Query may be missing or null

 Traceback (most recent call last):  
 File "/usr/bin/elastalert-test-rule", line 11 in <module>
 load_entry_point('elastalert==0.1.29', 'console_scripts','elastalert-test-rule')()  
 File "/usr/lib/python2.7/site-packages/elastalert-0.1.29.py2.7.egg/elastalert/test_rule.py", line 378, in main  
 test_instance.run_rule_test()  
 File "/usr/lib/python2.7/site-packages/elastalert-0.1.29.py2.7.egg/elastalert/test_rule.py", line 373, in run_rule_test  
 self.run_elastalert(rule_yaml, conf, args_
 File "/usr/lib/python2.7/site-packages/elastalert-0.1.29.py2.7.egg/elastalert/test_rule.py", line 211, in run_elastalert  
 load_modules(rule, load_modules_args) 
 File "/usr/lib/python2.7/site-packages/elastalert-0.1.29.py2.7.egg/elastalert/config.py", line 341, in load_modules  
 rule['type']=get_module(rule['type']) 
 File "/usr/lib/python2.7/site-packages/elastalert-0.1.29.py2.7.egg/elastalert/config.py", line 100, in get_module  
 base_module = __import__(module_path, globals(), locals(), [module_class])  
 elastalert.util.EAException:
 Could not import module blacklist: - "www.testbad.domain": No module named blacklist = "www.testbad

Если я удаляю значение www.testbad.domain из списка под типом: черный список, я получаю ошибку отслеживания difnet:

 Traceback (most recent call last): 
 File "/usr/bin/elastalert-test-rule", line 11 in <module>
 load_entry_point('elastalert==0.1.29', 'console_scripts','elastalert-test-rule')() 
 File "/usr/lib/python2.7/site-packages/elastalert-0.1.29.py2.7.egg/elastalert/test_rule.py", line 378, in main 
 test_instance.run_rule_test() 
 File "/usr/lib/python2.7/site-packages/elastalert-0.1.29.py2.7.egg/elastalert/test_rule.py", line 357, in run_rule_test 
 rule_yaml=load_rule_yaml(arg.file) 
 File "/usr/lib/python2.7/site-packages/elastalert-0.1.29.py2.7.egg/elastalert/config.py", line 128, in load_rule_yaml 
 loaded = yaml_loader(filename) 
 File "build/bdist.linux-x86_64/egg/staticconf/loader.py",line 93, in yaml_loader 
 File "/usr/lib64/python2.7/site-packages/yaml/__init__.py", line 71, in load return 
 loader.get_single_data() 
 File "/usr/lib64/python2.7/site-packages/yaml/constructor.py", line 37, in get_single_data 
 node = self.get_single_node() 
 File "/usr/lib64/python2.7/site-packages/yaml/composer.py", line 36, in get_single_node 
 document = self.compose_document() 
 File "/usr/lib64/python2.7/site-packages/yaml/composer.py", line 55, in compose_document 
 node = self.compose_document(None, None) 
 File "/usr/lib64/python2.7/site-packages/yaml/composer.py", line 84, in compose_node 
 node = self.compose_mapping_node(anchor) 
 File "/usr/lib64/python2.7/site-packages/yaml/composer.py", line 127, in compose_mapping_node 
 while not self.check_event(MappingEndEvent): 
 File "/usr/lib64/python2.7/site-packages/yaml/parser.py", line 98, in check_event 
 self.current_event = self.state() 
 File "/usr/lib64/python2.7/site-packages/yaml/parser.py", line 439, in parse_block_mapping_key 
 "expected <block end>, but found %r" % token.id, token.start_mark) 
 yaml.parser.ParserError: while parsing a block mapping 
 in "test-detect.yaml", line 3, column 1 
 expected <block end, but found '<block sequence start>' 
 in "test-detect.yaml", line 10, column 5

Затем я попытался изменить тип any иуказав запрос.

type: any

filter:
    - query:
        query_string:
            query: "Query: www.testbad.domain"

, который не дал результатов, НО "Запрос" был указан в "Доступных терминах при первом обращении"

Поэтому я попытался: query: "Запрос: * www.testbad.domain *».Хитов пока нет.

Тогда я попробовал: query: "Query: * testbad *".Теперь я получаю хиты.

(я не могу заставить его отображаться правильно, но оба запроса должны быть окружены звездочками без пробелов)

Итак, мои вопросы таковы:

  1. Что происходит с поиском в черном списке?Почему происходит ошибка Python?
  2. Почему я не получаю совпадение при поиске полного доменного имени в определенном индексе для строки запроса?
  3. Почему Query не указан в качестве поля Iможно искать по псевдониму?

1 Ответ

0 голосов
/ 15 мая 2018

Gaaah !!!синтаксис, синтаксис, синтаксис.

type: blacklist
- "www.testbad.domain"
- "!file /opt/elastalert/black_lists/bad_domains.txt"

Должно быть:

type: blacklist

blacklist:
- "www.testbad.domain"
- "!file /opt/elastalert/black_lists/bad_domains.txt"
...