Анализ логов доступа Apache с помощью Elassearch Watcher
Я использую ELK Stack для анализа журналов, и мне нужно анализировать и обнаруживать аномалии журналов доступа Apache. Что можно проанализировать с помощью журналов доступа Apache и как передать условия с помощью curl -XPUT для Watcher?
1 ответ
Если вы еще не нашли его, на https://www.elastic.co/guide/en/watcher/watcher-1.0/watch-log-data.html есть достойное руководство. Это базовый пример создания журнала.
Вы можете анализировать / смотреть все, что вы можете запросить в Elasticsearch. Это просто вопрос форматирования запроса с правильным синтаксисом JSON. Руководство по созданию условий находится по адресу https://www.elastic.co/guide/en/watcher/watcher-1.0/condition.html.
Вы также можете обратиться к https://www.elastic.co/guide/en/watcher/watcher-1.0/actions.html чтобы получить представление о возможных действиях, которые может выполнять Watcher, когда запрос удовлетворяет условию.
Что касается публикации в Watcher, то все часы - это, по сути, объект JSON. Поскольку они могут быть довольно сложными, я обнаружил, что лучше создать файл для каждого часов, который вы хотите создать, и опубликовать их следующим образом:
curl -XPUT http://my_elasticsearch:9200/_watcher/watch/my_watch_name -d @/path/to/my_watch_name.json
my_watch_name.json должен иметь следующие основные элементы (как описано в первой ссылке выше):
{
"trigger" : { ... },
"input" : { ... },
"condition" : { ... },
"actions" : { ... }
}
Раздел действий будет зависеть от вашего варианта использования, но вот базовый пример других разделов, которые я успешно использую:
{
"trigger" : {
"schedule" : { "interval" : "5m" }
},
"input" : {
"search" : {
"request" : {
"indices" : [ "logstash" ],
"body" : {
"query" : {
"filtered" : {
"query" : {
"match" : { "message" : "error" }
},
"filter" : {
"range" : { "@timestamp" : { "gte" : "now-5m" } }
}
}
}
}
}
}
},
"condition" : {
"compare" : { "ctx.payload.hits.total" : { "gt" : 0 } }
},
"actions" : {
...
}
}