ELK: Ситуационный центр своими руками

ELK: Ситуационный центр своими руками
Заполним вынужденную паузу про ELK, продолжим развлекаться в канун праздников.
Месяц назад на Хабре проскочила рекламная статья про ситуационные центры , которая вдохновила на создание чего-то похожего своими руками.
Сначала на отдельно стоящий монитор была выведена консоль для мониторинга кластера, который таки был собран (о чем может быть позже, когда рецепт будет вылизан и записан).
Жизнь оказалась слишком прозаична – игры с ELK начали набивать оскомину, поэтому в консоли заглядывали уже не так часто как в начале. В то же время, постоянно включенная консоль мониторинга состояния кластера бросалась в глаза постоянно и, когда кластер желал внимания, привлекала оное своей желтизной или даже краснотой.
Эта особенность отфильтровалась сознанием и было принято решение вывести на нашу «видеостену» диагональю 19”, в том числе информацию с основными индикаторами состояния сети. К сожалению, определить и вывести на один экран правильные индикаторы не получилось, по причине отсутствия последних. Даже придумать их не получилось. Может космический разум предложит что-то? Поэтому было принято решение попеременно выводить на «видеостену» разные dashboards, беглый взгляд на которые поможет понять, что что-то идет не по плану. Опять же мигание и смена видов добавит новогоднего настроения в кабинете.
Сказано, сделано.
Так как свободных компьютеров у нас не оказалось, ситуационный центр был собран на одном из узлов кластера, размещенных под столом. Клавиатуру и мышку можно не подключать, для работы достаточно ssh.
Как поставить пакеты на вашу систему, думаю, разберетесь самостоятельно. Повторюсь, мы работаем с клоном Unix, точнее с Debian.
Из того, что обычно не устанавливается на серверы, нам понадобится:

  • Xorg
  • firefox (iceweasel)
  • xdotool
Как настроить машину для автоматического запуска Xorg, легко найти в сети . Для нормальной работы более чем достаточно прав обычного пользователя.
А теперь, собственно, скрипт, который будет творить магию на мониторе:

  #!/bin/bash   
#Kibana and Marvel host
HOST="ХХХ.ХХХ.ХХХ.ХХХ"
#Marvel URL
URL="http://$HOST:9200/_plugin/marvel/kibana/index.html#/dashboard/file/marvel.overview.json"
#Kill everything
killall iceweasel
killall Xorg
#wait a moment
sleep 3
#start new Xorg
Xorg :1 &
#prepare DISPLAY variable for output
export DISPLAY=:1
#wait Xorg startup
sleep 1
#disable screensaver
xset s off
#disable power management for monitor
xset -dpms
#start browser.
iceweasel -width 1920 -height 1080 --display=:1 $URL &
sleep 30
#if Marvel show agreement - accept
xdotool mousemove 1100 250
xdotool click 1
sleep 5
#if Marvel show form for developer - skip
xdotool mousemove 1000 450
xdotool click 1
sleep 5
#fullscreen for browser
xdotool key F11
#get dashboards list from Kibana
_URL=$(curl -s -XGET "http://$HOST:9200/kibana-int/dashboard/_search?fields=title" | grep -Po '"title":.*?[^]"]}},' | sed 's/.*["//' | sed 's/"].*//' | sed 's/ /%20/g')
#Prepare list of URL
for i in $_URL; do
URL="http://$HOST/kibana/#/dashboard/elasticsearch/$i $URL";
done
#forever change dashboards
while true; do.
for i in $URL; do
sleep 60
xdotool key "CTRL+l"
xdotool type $i
xdotool key Return
xdotool key F11
xdotool key F11
done
done
Теоретически, можно было бы вывести на монитор основные графики, которых может хватить для беглого анализа глазами, но пока нет мыслей, как это сделать правильно.
PS. Этот скрипт поступает не очень честно с ребятами из elasticsearch.com , отщелкивая согласие с лицензией. Решайте сами как вам с этим быть.
Alt text

Цифровые следы - ваша слабость, и хакеры это знают.

Подпишитесь и узнайте, как их замести!

Сергей Солдатов

REPLY-TO-ALL is a double language blog (English/Russian) run by three information security practitioners. Want to discuss information security problems? This is the place.