Невозможно получить доступ к полям соответствия правила, используя тип правила Elastalert - PullRequest
0 голосов
/ 24 августа 2018

Итак, у меня есть стек ELK, который заполняется регулярно, каждый раз, когда кто-то скачивает файл с сервера. В моем случае у меня есть список клиентов, и каждый клиент должен делать загрузку каждый час, точно.

То, о чем я хочу быть предупрежденным, - это то, когда одно и то же имя файла появляется дважды для данного клиента, что означает, что что-то пошло не так в момент t0, и что клиент повторяет ту же загрузку в момент времени t0 + 1h.

Вот мой файл правил YAML:

index: myindex-*

name: Checks that clients never download the same file twice 

type: cardinality

# Contains the name of the downloaded file, which is always unique
cardinality_field: "Object.name"

# For debugging it's easier to alert on the legit cases
# The real-life condition would rather be "max_cardinality: 1"
min_cardinality: 100

timeframe:
  minutes: 1

# Downloader's IP address, so that the rule is applied for each client separayely
query_key: "Context.headers.X-Forwarded-For"


alert:
- "command"
command: ["echo", "{index_type}", "{@timestamp}", "{Actor[customerName]}", "{Context[headers[X-Forwarded-For]]}", "{Object[name]}"]

«Команда» предназначена только для отладки, которая со временем станет более сложной. Тем временем я получаю следующую строку:

<MISSING VALUE> 2018-08-24T13:52:52.923Z {Actor[customerName]} {Context[headers[X-Forwarded-For]]} {Object[name]}

Есть идеи, почему некоторые поля либо не распознаются как переменные, либо кажутся "нулевыми" или что-то в этом роде? Я вижу журналы в моей Kibana, соответствующие отображаемой здесь метке времени, с правильно установленным Object.name и т. Д.

Вот мой конфигурационный файл YAML:

rules_folder: example_rules

run_every:
  minutes: 1

buffer_time:
  minutes: 15

es_host: 172.28.0.62 
es_port: 9200

writeback_index: elastalert_status

alert_time_limit:
  days: 2

И, наконец, команда, которую я использую для запуска Elasticsearch:

elastalert --rule example_rules/test.yml --conf elastalert_config.yml
...