Система сбора логов ELK на Centos 7

Система ELK состоит из трех основных компонентов:
  • Logstash — система принимающая данные, фильтрующая их и передающая их дальше.
  • Elasticsearch — NoSQL база данных, которая хранит информацию и осуществляет по ней поиск.
  • Kibana — служит для визуального представления данных, хранящихся в Elasticsearch.
В данном мануале я рассматриваю базовую настройку стека ELK.
В качестве сервера была выбрана такая конфигурация:
OS: Centos 7 minimal
Proc: 2 ядря
Ram: 4 Gb
HDD: 50 Gb
Во время установки настраиваем сеть, время, создаем пользователя.
Установку начнем с обновления системы:
# yum -y update
Далее добавим EPEL репозитарий:
# yum -y install epel-release
Для удобства работы я устанавливаю некоторые пакеты:
yum -y install net-tools vim mc wget unzip
Дальше пропишите правильные имена в файлы /etc/hosts и /etc/hostname

 

Установка Java.
Elasticsearch и Logstash для работы требуют Java, поэтому следующим шагом установим её.
На текущий момент последняя версия Java 8 Update 102
# cd ~
# mkdir tmp
# cd ~/tmp
# wget --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.rpm
# yum localinstall jdk-8u102-linux-x64.rpm
Проверим
# java -version
java version «1.8.0_102»
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
Установка Elasticsearch.
Добавим репозиторий:
# vim /etc/yum.repos.d/elasticsearch.repo
Вставляем следующие строчки:
[elasticsearch]
name=Elasticsearch repository
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
сохраняем и выходим.
Далее установим сам elasticsearch:
# yum -y install elasticsearch
После установки отредактируем файл с настройками:
# vim /etc/elasticsearch/elasticsearch.yml
У меня он выглядит так:
elasticsearch.yml
Добавим elasticsearch в автозагрузку и запустим его:
# systemctl enable elasticsearch
# systemctl start elasticsearch
Проверим его работоспособность:
# curl -X GET http://localhost:9200
{
  «name» : «elk»,
  «cluster_name» : «elk.corp.ru»,
  «version» : {
    «number» : «2.4.0»,
    «build_hash» : «ce9f0c7394dee074091dd1bc4e9469251181fc55»,
    «build_timestamp» : «2016-08-29T09:14:17Z»,
    «build_snapshot» : false,
    «lucene_version» : «5.5.2»
  },
  «tagline» : «You Know, for Search»
}
Установка Logstash.
Добавим репозиторий:
# vim /etc/yum.repos.d/logstash.repo
Вставляем следующие строчки:
[logstash-2.x]
name=Logstash repository for 2.x.x packages
baseurl=https://packages.elastic.co/logstash/2.4/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
сохраняем и выходим.
Устанавливаем logstash
# yum -y install logstash
Перейдем к настройке logstash.
В каталоге /etc/logstash/conf.d/ создадим файл с конфигом:
# vim /etc/logstash/conf.d/config.conf
Этот файл будет состоять из трех основных секций:
1) input — Это порты и протоколы, которые слушает logstash и соответственно принимает данные.
2) filter — В этой секции могут проводиться какие-либо действия с принятой информацией (выборка, модификация и т.д.)
3) output — В этой секции прописываются параметры выгрузки полученной информации, например в нашем случае это будет передача её в elasticsearch.
Рассмотрим простейший вариант — получение данных по syslog и передача их в elasticsearch. Так будет выглядеть файл config.conf :
input {
       udp {
    port => 5514
    type => «syslog»
           }
       }
output {
  elasticsearch {
    hosts => [«localhost:9200»]
    sniffing => true
    manage_template => false
    index => «syslog-%{+YYYY.MM.dd}»
    document_type => «%{type}»
                 }
        }
 Здесь используется нестандартный порт 5514 (syslog обычно на 514), т.к. что бы открыть стандартный порт, нужно запускать logstash от root. (подробнее тут)
После любых изменений конфига logstash, делайте его проверку
# service logstash configtest
Если все ок, добавим logstash в автозагрузку и запустим его:
# systemctl enable logstash
# systemctl start logstash
Немного подождав, проверим, что порт слушается
# netstat -ntulp | grep 5514
udp6       0      0 :::5514                 :::*                                22083/java
Установка Kibana.
Добавим репозиторий:
# vim /etc/yum.repos.d/kibana.repo
Вставляем следующие строчки:
[kibana-4.6]
name=Kibana repository for 4.6.x packages
baseurl=https://packages.elastic.co/kibana/4.6/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
сохраняем и выходим.
Устанавливаем kibana
# yum -y install kibana
В конфиге kibana подправим одну строчку:
#  vim /opt/kibana/config/kibana.yml
Ищем нужную строчку правим и раскомментируем её:
server.host: «localhost»
Далее добавим kibana в автозагрузку и запустим её:
# systemctl enable kibana
# systemctl start kibana
Установка Nginx.
Для kibana нам нужен reverse proxy, поэтому установим Nginx:
# yum -y install nginx httpd-tools
Создадим пользователя для web интерфеса kibana:
# htpasswd -c /etc/nginx/htpasswd.users admin
Далее настроим Nginx
# vim /etc/nginx/nginx.conf
nginx.conf
Создаем файл настроек виртуального хоста
# vim /etc/nginx/conf.d/elk.corp.ru.conf

server { listen 80;server_name logger.domain.com;

auth_basic «Restricted Access»;
auth_basic_user_file /etc/nginx/htpasswd.users;

location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

Далее добавим nginx в автозагрузку и запустим её:
# systemctl enable nginx
# systemctl start nginx
Проверим работу, зайдя через браузер по ссылке:
http://elk.corp.ru
elk_1
Но пока ничего тут настраивать не будем.

 

Установка Kibana Dashboards.
Kibana Dashboards это подготовленные представления для отображения данных с индексами Beats.
На сайте Elastic есть несколько клиентов (Windows, Linux, FileLinux и д.р.), вот для данных от них мы и установим готовые дашборды.
# cd ~/tmp/
# unzip beats-dashboards-1.3.1.zip
# cd beats-dashboards-1.3.1/
# ./load.sh
Обновив http://elk.corp.ru увидим новые индексы.
 elk_2
Работу с ними я рассмотрю в будущих статьях.
На этом связку ELK можно считать установленной!
Прямо сейчас можно отправлять логи syslog на 5514 порт. Ну и в качестве примера я направлю логи с D-link маршрутизатора и покажу как создать для них новый индекс.
На маршрутизаторе я прописываю в качестве syslog сервера elk.corp.ru, порт 5514 и протокол udp.
Далее заходим на http://elk.corp.ru и создаем новый индекс.
 elk_3
В качестве имени пропишем: syslog-*
elk_4
Так как в конфиге logstash, в блоке output мы всем логам присваивали имя, вида: syslog-%{+YYYY.MM.dd}
Это очень важный момент, т.к. если ELK не увидит у себя таких логов, то он и не даст создать индекс с таким именем.
 elk_5
Далее перейдем на вкладку Discover и увидим собираемые логи!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *