Просмотр Архивных Журналов Apache С Помощью Logstash+Elastisearch+Kibana.

Привет. Не так давно передо мной встала задача перебрать старые логи Apache. Необходимо было сделать выборку нескольких IP-адресов, найти какие-то аномалии и попытки SQL-инъекций.

Логов было не так много, около миллиона строк, и все легко можно было сделать с помощью стандартного набора grap-awk-uniq-wc и т.п.

Поскольку я уже некоторое время (более года) использую комбинацию Logstash-Elasticsearch-Kibana для анализа и просмотра всевозможных логов, я решил использовать ее в данной ситуации.

Краткое описание основных компонентов системы.

Логсташ — бесплатная программа с открытым исходным кодом на Java для сбора и нормализации журналов.

Может получать логи либо из локальных файлов, либо через порты TCP/UDP. На момент написания имеется 26 различных входных фильтров.

Есть даже модуль ввода для сбора сообщений из твиттера или irc. Эластичный поиск — бесплатный поисковый сервер с открытым исходным кодом, основанный на Apache Lucene. Быстрый, легко настраиваемый и легко масштабируемый.

Кибана — веб-интерфейс, написанный на Ruby, для отображения данных из Elasticsearch. Простая настройка, но много функций - поиск, графики, стрим.



1. Эластичный поиск

1.1 Загрузите Elasticsearch (размер 16 МБ): Важно отметить, что для Logstash версии 1.1.9 Elasticsearch должен быть версии 0.20.2.
  
  
  
  
  
  
  
  
  
   

# wget download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.20.2.tar.gz

1.2 Распакуйте файл:

# tar -zxf elasticsearch-0.20.2.tar.gz

Желающие удивить окружающих могут добавить клавишу «v» :) 1.3 По большому счету Elasticsearch можно запустить с заводскими настройками.

Но я все равно меняю некоторые параметры.

Зайдите в ваш любимый текстовый редактор в файл настроек:

# vi elasticsearch-0.20.2/config/elasticsearch.yml

Список моих изменений для автономного решения:

cluster.name: logs index.number_of_replicas: 0 path.data: /elasticsearch/elasticsearch-0.20.2/data path.work: /elasticsearch/elasticsearch-0.20.2/work path.logs: /elasticsearch/elasticsearch-0.20.2/logs bootstrap.mlockall: true discovery.zen.ping.multicast.enabled: false

Перед запуском Elasticsearch убедитесь, что каталоги, указанные в path.data, path.work и path.logs, существуют. 1.4 Запустите Elasticsearch в приоритетном режиме, чтобы убедиться, что сервер работает корректно:

# .

/bin/elasticsearch -f

Если мы видим такую строку, это означает, что сервер запустился

[2013-01-11 1151:35,160][INFO ][node ] [Virgo] {0.20.2}[17620]: started

1.5 Чтобы запустить Elasticsearch в фоновом (демонном) режиме, достаточно удалить ключ " "

# .

/bin/elasticsearch

Если ваш сервер имеет два TCP-порта 9200 и 9300 в СЛУШАТЬ , то это означает, что Elasticsearch готов к работе.



2. Логсташ

2.1 Загрузите последнюю версию Logstash 1.1.9 (размер 60 МБ)

# wget logstash.objects.dreamhost.com/release/logstash-1.1.9-flatjar.jar

2.2 Создайте файл конфигурации (apache.conf) для приема архивных журналов Apache, нормализуйте их и введите в базу данных Elasticsearch:

input { tcp { type => "apache-access" port => 3338 } } filter { grok { type => "apache-access" pattern => "%{COMBINEDAPACHELOG}" } date { type => "apache-access" timestamp => "dd/MMM/yyyy:HH:mm:ss Z" } } output { elasticsearch { embedded => false cluster => logs host => "172.28.2.2" index => "apache-%{+YYYY.MM}" type => "apache-access" max_inflight_requests => 500 } }

Краткое описание некоторых параметров:

port => 3338

В нашем случае Logstash будет прослушивать TCP-порт 3338. Мы будем отправлять журналы Apache в netcat.

cluster => logs

указываем имя кластера, которое мы вписали в имя_кластера: в настройках Elasticsearch

host => "172.28.2.2"

IP-адрес, на котором работает Elasticsearch

index => "apache-%{+YYYY.MM}"

в моем случае ежедневных логов Apache не так много, около 40 000, поэтому месячного индекса вполне достаточно.

Если в день логов 500 000 и более, то целесообразнее создать ежедневный индекс.

"apache-%{+ГГГГ.

ММ.

дд}" 2.3 Запуск Логсташа

# java -Xmx64m -jar logstash-1.1.9-flatjar.jar agent -f .

/apache.conf

Проверяем, что Logstash запущен:

# netstat -nat |grep 3338

Если порт 3338 присутствует, Logstash готов получать логи.

2.4 Начинаем отправлять старые логи на apache Logstash

# gunzip -c archived.apache.log.gz |nc 127.0.0.1 3338

Насколько быстро загружаются все логи, зависит от многих параметров — процессора, оперативной памяти, количества логов.

В моем случае 600 тысяч строк логов были полностью загружены в базу за 4 минуты.

Таким образом, ваш пробег может отличаться.

2.5 Пока идет процесс загрузки логов, вы можете проверить, включены ли данные в базу данных Elasticsearch. Для этого введите в браузере elasticsearch_ip :9200/_statusЭpretty=true , если вы обнаружите такие строки:

"index" : "apache-2011.09"

Это означает, что все работает так, как ожидалось.



3. Кибана

3.1 Установите Кибану:

git clone --branch=kibana-ruby github.com/rashidkpc/Kibana.git



cd Kibana



gem install bundler



bundle install

Если вы находитесь за прокси-сервером, то перед командой «git clone.» укажите свой прокси-сервер:

git config --global http.proxy proxy.domain.com:3128

3.2 Конфигурация Кибаны

# vi KibanaConfig.rb

Настройки, которые, возможно, потребуется изменить:

Elasticsearch = "localhost:9200" KibanaPort = 5601 KibanaHost = '172.28.2.2' Smart_index_pattern = 'apache-%Y.%m' Smart_index_step = 2592000

3.3 Запуск Кибаны

# ruby kibana.rb

После успешного запуска на экране должен появиться следующий текст:

== Sinatra/1.3.3 has taken the stage on 5601 for development with backup from Thin >> Thin web server (v1.5.0 codename Knife) >> Maximum connections set to 1024 >> Listening on 172.28.21.21:5601, CTRL+C to stop

3.4 Приступаем к просмотру логов Введите адрес в браузере http://172.28.21.21:5601 и получаем удобный, быстрый интерфейс для просмотра старых логов апача.

Для тех, кто хочет увидеть, что такое Kibana+Logsatsh+Elasticsearch, есть демо-страница.

http://demo.logstash.net/ Спасибо за внимание, Теги: #*nix #Системное администрирование #Apache #elasticsearch #kibana #logs #logstash

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.