береженого кольт бережет
береженого кольт бережет

Установка Elasticsearch, Logstash и Kibana в Ubuntu 18.04

Комплекс Elastic Stack (прежнее название — комплекс ELK) представляет собой набор программного обеспечения Elastic с открытым исходным кодом, обеспечивающий возможности поиска, анализа и визуализации журналов, сгенерированных любым источником в любом формате (централизованное ведение журнала). Централизованное ведение журнала очень полезно для выявления проблем с серверами или приложениями, поскольку обеспечивает возможности поиска всех журнальных записей в одном месте. Также данная возможность позволяет выявлять проблемы, распространяющиеся на несколько серверов, посредством сопоставления их журналов за определенный период времени.

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

  • Elasticsearch: распределенная поисковая система RESTful, которая сохраняет все собранные данные.
  • Logstash: элемент обработки данных комплекса Elastic, отправляющий входящие данные в Elasticsearch.
  • Kibana: веб-интерфейс для поиска и визуализации журналов.
  • Beats: компактные элементы переноса данных одиночного назначения, которые могут отправлять данные с сотен или тысяч компютеров в Logstash или Elasticsearch.

В этом обучающем модуле вы научитесь устанавливать Elastic Stack на сервере Ubuntu 18.04. Вы научитесь устанавливать все компоненты Elastic Stack, в том числе Filebeat, инструмент для перенаправления и централизации журналов и файлов, а также настраивать эти компоненты для сбора и визуализации системных журналов. Кроме того, поскольку компонент Kibana обычно доступен только через localhost, мы будем использовать Nginx в качестве прокси для обеспечения доступа через браузер. Мы установим все эти компоненты на одном сервере, который будем называть нашим сервером Elastic Stack.

Примечание. При установке Elastic Stack необходимо использовать одну и ту же версию для всего комплекса. В этом обучающем модуле мы установим последние версии компонентов комплекса. На момент написания это Elasticsearch 6.4.3, Kibana 6.4.3, Logstash 6.4.3 и Filebeat 6.4.3.

  • Требования сервера комплекса Elastic к ресурсам процессора, оперативной памяти и хранения данных зависят от объема журналов, который вы планируете собирать. В этом обучающем модуле мы будем использовать для нашего комплекса Elastic сервер VPS со следующими спецификациями:
    • ОС: Ubuntu 18.04
    • ОЗУ: 4 ГБ
    • ЦП: 2
  • На сервере должно быть установлено программное обеспечение Java 8, которое требуется для Elasticsearch и Logstash. Обратите внимание, что версия Java 9 не поддерживается.
  • На сервере должен быть установлен Nginx, который мы позднее настроим как обратный прокси для Kibana.

Кроме того, поскольку комплекс Elastic используется для доступа ценной информации о вашем сервере, которую вам нужно защищать, очень важно обеспечить защиту сервера сертификатом TLS/SSL. Это необязательно, но настоятельно рекомендуется.

Шаг 1 — Установка и настройка Elasticsearch

Компоненты комплекса Elastic отсутствуют в репозиториях пакетов Ubuntu по умолчанию. Однако их можно установить с помощью APT после добавления списка источников пакетов Elastic.

Все пакеты комплекса Elastic подписаны ключом подписи Elasticsearch для защиты вашей системы от поддельных пакетов. Ваш диспетчер пакетов будет считать надежными пакеты, для которых проведена аутентификация с помощью ключа. На этом шаге вы импортируете открытый ключ Elasticsearch GPG и добавить список источников пакетов Elastic для установки Elasticsearch.

Для начала запустите следующую команду для импорта открытого ключа Elasticsearch GPG в APT:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Затем добавьте список источников Elastic в каталог sources.list.d, где APT будет искать новые источники:

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

Затем обновите списки пакетов, чтобы APT мог прочитать новый источник Elastic:

sudo apt update

Установите Elasticsearch с помощью следующей команды:

sudo apt install elasticsearch

После завершения установки Elasticsearch используйте предпочитаемый текстовый редактор для редактирования главного файла конфигурации Elasticsearch с именем elasticsearch.yml. Мы будем использовать nano:

sudo nano /etc/elasticsearch/elasticsearch.yml

Примечание. Файл конфигурации Elasticsearch имеет формат YAML, и это значит, что отступы имеют большое значение! Не добавляйте никакие дополнительные пробелы при редактировании этого файла.

Elasticsearch прослушивает весь трафик порта 9200. Вы можете захотеть ограничить внешний доступ к вашему экземпляру Elasticsearch, чтобы посторонние не могли читать ваши данные или отключать ваш кластер Elasticsearch через REST API. Найдите строку с указанием network.host, уберите с нее значок комментария и замените значение на localhost, чтобы она выглядела следующим образом:

/etc/elasticsearch/elasticsearch.yml

. . .
network.host: localhost
. . .

Сохраните и закройте файл elasticsearch.yml, нажав CTRL+X, а затем Y и ENTER, если вы используете nano. Затем запустите службу Elasticsearch с помощью systemctl:

sudo systemctl start elasticsearch

Затем запустите следующую команду, чтобы активировать Elasticsearch при каждой загрузке сервера:

sudo systemctl enable elasticsearch

Вы можете протестировать работу службы Elasticsearch, отправив запрос HTTP:

curl -X GET "localhost:9200"

Вы получите ответ, содержащий базовую информацию о локальном узле:

Output{
  "name" : "ZlJ0k2h",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "beJf9oPSTbecP7_i8pRVCw",
  "version" : {
    "number" : "6.4.2",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "04711c2",
    "build_date" : "2018-09-26T13:34:09.098244Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Мы настроили и запустили Elasticsearch, и теперь можем перейти к установке Kibana, следующего компонента комплекса Elastic.

Шаг 2 — Установка и настройка информационной панели Kibana

Согласно официальной документации, Kibana следует устанавливать только после установки Elasticsearch. Установка в этом порядке обеспечивает правильность установки зависимостей компонентов.

Поскольку вы уже добавили источник пакетов Elastic на предыдущем шаге, вы можете просто установить все остальные компоненты комплекса Elastic с помощью apt:

sudo apt install kibana

Затем активируйте и запустите службу Kibana:

sudo systemctl enable kibana
sudo systemctl start kibana

Поскольку согласно настройкам Kibana прослушивает только localhost, мы должны задать обратный прокси, чтобы разрешить внешний доступ. Для этого мы используем Nginx, который должен быть уже установлен на вашем сервере.

Вначале нужно использовать команду openssl для создания административного пользователя Kibana, которого вы будете использовать для доступа к веб-интерфейсу Kibana. Для примера мы назовем эту учетную запись kibanaadmin, однако для большей безопасности мы рекомендуем выбрать нестандартное имя пользователя, которое будет сложно угадать.

Следующая команда создаст административного пользователя Kibana и пароль и сохранит их в файле htpasswd.users. Вы настроите Nginx для использования этого имени пользователя и пароля и моментально прочитаете этот файл:

echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

Введите и подтвердить пароль в диалоговом окне. Запомните или запишите эти учетные данные, поскольку они вам потребуются для доступа к веб-интерфейсу Kibana.

Теперь мы создадим файл серверного блока Nginx. В качестве примера мы присвоим этому файлу имя example.com, хотя вы можете дать ему более описательное имя. Например, если вы настроили записи FQDN и DNS для этого сервера, вы можете присвоить этому файлу имя FQDN:

sudo nano /etc/nginx/sites-available/example.com

Добавьте в файл следующий блок кода, заменив example.com для соответствия FQDN или публичному IP-адресу вашего сервера. Этот код настраивает Nginx для перенаправления трафика HTTP вашего сервера в приложение Kibana, которое прослушивает порт localhost:5601. Также он настраивает Nginx для чтения файла htpasswd.users и требует использования базовой аутентификации.

Если вы уже настроили Nginx, в этом случае удалите из файла все содержание и добавьте следующее:

/etc/nginx/sites-available/example.com

server {
    listen 80;

    server_name example.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;
    }
}

Завершив редактирование, сохраните и закройте файл.

Затем активируйте новую конфигурацию, создав символическую ссылку на каталог sites-enabled. Если вы уже создали файл серверного блока с тем же именем, что и в обучающем модуле по Nginx, вам не нужно выполнять эту команду:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

Затем проверьте конфигурацию на синтаксические ошибки:

sudo nginx -t

Если в результатах будут показаны какие-либо ошибки, вернитесь и еще раз проверьте правильность изменений в файле конфигурации. Когда вы увидите на экране результатов сообщение syntax is ok, перезапустите службу Nginx:

sudo systemctl restart nginx

Если вы следовали указаниям модуля по начальной настройке сервера, у вас должен быть включен брандмауэр UFW. Чтобы разрешить соединения с Nginx, мы можем изменить правила с помощью следующей команды:

sudo ufw allow 'Nginx Full'

Примечание. Если вы выполнили предварительный обучающий модуль Nginx, вы могли уже создать правило UFW, разрешающее профилю Nginx HTTP доступ через брандмауэр. Поскольку профиль Nginx Full разрешает трафик HTTP и HTTPS на брандмауэре, вы можете безопасно удалить ранее созданное правило. Для этого нужно использовать следующую команду:

sudo ufw delete allow 'Nginx HTTP'

Теперь приложение Kibana доступно через FQDN или публичный IP-адрес вашего сервера комплекса Elastic. Вы можете посмотреть страницу состояния сервера Kibana, открыв следующий адрес и введя свои учетные данные в диалоге:

http://your_server_ip/status

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

Примечание. Как указывалось в разделе предварительных требований, рекомендуется включить на сервере SSL/TLS. После получения сертификата SSL/TLS вы можете вернуться и завершить прохождение этого обучающего модуля.

Теперь информационная панель Kibana настроена и мы перейдем к установке следующего компонента: Logstash.

Шаг 3 — Установка и настройка Logstash

Хотя Beats может отправлять данные напрямую в базу данных Elasticsearch, мы рекомендуем использовать для обработки данных Logstash. Это позволит вам собирать данные из разных источников, преобразовывать их в общий формат и экспортировать в другую базу данных.

Установите Logstash с помощью следующей команды:

sudo apt install logstash

После установки Logstash вы можете перейти к настройке. Файлы конфгурации Logstash имеют формат JSON и находятся в каталоге /etc/logstash/conf.d. При настройке полезно представлять Logstash как конвейер, который принимает данные с одной стороны, обрабатывает их и отправляет в пункт назначения (в данном случае в Elasticsearch). Конвейер Logstash имеет два обязательных элемента, input и output, а также необязательный элемент filter. Плагины ввода потребляют данные источника, плагины фильтра обрабатывают данные, а плагины вывода записывают данные в пункт назначения.

Создайте файл конфигурации с именем 02-beats-input.conf, где вы настроите ввод данных Filebeat:

sudo nano /etc/logstash/conf.d/02-beats-input.conf

Вставьте следующую конфигурацию input. В ней задается ввод beats, который прослушивает порт TCP 5044.

/etc/logstash/conf.d/02-beats-input.conf

input {
  beats {
    port => 5044
  }
}

Сохраните и закройте файл. Затем создайте файл конфигурации с именем 10-syslog-filter.conf, куда мы добавим фильтр для системных журналов или syslogs:

sudo nano /etc/logstash/conf.d/10-syslog-filter.conf

Вставьте следующую конфигурацию фильтра syslog. В этом примере конфигурация системных журналов взята из официальной документации по Elastic. Этот фильтр используется для синтаксического анализа входящих системных журналов, их структуризации и преобразования в удобный для использования вид с помощью панелей Kibana:

/etc/logstash/conf.d/10-syslog-filter.conf

filter {
  if [fileset][module] == "system" {
    if [fileset][name] == "auth" {
      grok {
        match => { "message" => ["%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} %{DATA:[system][auth][ssh][method]} for (invalid user )?%{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]} port %{NUMBER:[system][auth][ssh][port]} ssh2(: %{GREEDYDATA:[system][auth][ssh][signature]})?",
                  "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} user %{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]}",
                  "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: Did not receive identification string from %{IPORHOST:[system][auth][ssh][dropped_ip]}",
                  "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sudo(?:\[%{POSINT:[system][auth][pid]}\])?: \s*%{DATA:[system][auth][user]} :( %{DATA:[system][auth][sudo][error]} ;)? TTY=%{DATA:[system][auth][sudo][tty]} ; PWD=%{DATA:[system][auth][sudo][pwd]} ; USER=%{DATA:[system][auth][sudo][user]} ; COMMAND=%{GREEDYDATA:[system][auth][sudo][command]}",
                  "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} groupadd(?:\[%{POSINT:[system][auth][pid]}\])?: new group: name=%{DATA:system.auth.groupadd.name}, GID=%{NUMBER:system.auth.groupadd.gid}",
                  "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} useradd(?:\[%{POSINT:[system][auth][pid]}\])?: new user: name=%{DATA:[system][auth][user][add][name]}, UID=%{NUMBER:[system][auth][user][add][uid]}, GID=%{NUMBER:[system][auth][user][add][gid]}, home=%{DATA:[system][auth][user][add][home]}, shell=%{DATA:[system][auth][user][add][shell]}$",
                  "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} %{DATA:[system][auth][program]}(?:\[%{POSINT:[system][auth][pid]}\])?: %{GREEDYMULTILINE:[system][auth][message]}"] }
        pattern_definitions => {
          "GREEDYMULTILINE"=> "(.|\n)*"
        }
        remove_field => "message"
      }
      date {
        match => [ "[system][auth][timestamp]", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
      }
      geoip {
        source => "[system][auth][ssh][ip]"
        target => "[system][auth][ssh][geoip]"
      }
    }
    else if [fileset][name] == "syslog" {
      grok {
        match => { "message" => ["%{SYSLOGTIMESTAMP:[system][syslog][timestamp]} %{SYSLOGHOST:[system][syslog][hostname]} %{DATA:[system][syslog][program]}(?:\[%{POSINT:[system][syslog][pid]}\])?: %{GREEDYMULTILINE:[system][syslog][message]}"] }
        pattern_definitions => { "GREEDYMULTILINE" => "(.|\n)*" }
        remove_field => "message"
      }
      date {
        match => [ "[system][syslog][timestamp]", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
      }
    }
  }
}

Сохраните и закройте файл после завершения.

Наконец, создайте файл конфигурации 30-elasticsearch-output.conf:

sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

Вставьте следующую конфигурацию output. Этот вывод настраивает Logstash для хранения данных Beats в Elasticsearch, запущенном на порту localhost:9200, в индексе с названием используемого компонента Beat. В этом обучающем модуле используется компонент Beat под названием Filebeat:/etc/logstash/conf.d/30-elasticsearch-output.conf

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    manage_template => false
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
}

Сохраните и закройте файл.

Если вы you хотите добавить фильтры для других приложений, использующих ввод Filebeat, присваивайте файлам имена, чтобы их можно было сортировать между конфигурациями ввода и вывода. Это значит, что имена файлов должны начинаться с двузначных чисел от 02 до 30.

Протестируйте свою конфигурацию Logstash с помощью следующей команды:

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

Если ошибок синтаксиса нет, вы увидите сообщение Configuration OK спустя несколько секунд. Если вы не увидите этого сообщения, проверьте ошибки вывода и обновите конфигурацию для их исправления.

Если тестирование конфигурации выполнено успешно, запустите и активируйте Logstash, чтобы изменения конфигурации вступили в силу:

sudo systemctl start logstash
sudo systemctl enable logstash

Теперь Logstash работает нормально и полностью настроен, и мы можем перейти к установке Filebeat.

Шаг 4 — Установка и настройка Filebeat

Комплекс Elastic Stack использует несколько компактных элементов транспортировки данных (Beats) для сбора данных из различных источников и их транспортировки в Logstash или Elasticsearch. Ниже перечислены компоненты Beats, доступные в Elastic:

  • Filebeat: собирает и отправляет файлы журнала.
  • Metricbeat: собирает метрические показатели использования систем и служб.
  • Packetbeat: собирает и анализирует данные сети.
  • Winlogbeat: собирает данные журналов событий Windows.
  • Auditbeat: собирает данные аудита Linux и отслеживает целостность файлов.
  • Heartbeat: отслеживает доступность услуг посредством активного зондирования.

В этом обучающем модуле мы используем Filebeat для перенаправления локальных журналов в комплекс Elastic Stack.

Установите Filebeat с помощью apt:

sudo apt install filebeat

Затем настройте Filebeat для подключения к Logstash. Здесь мы изменим образец файла конфигурации, входящий в комплектацию Filebeat.

Откройте файл конфигурации Filebeat:

sudo nano /etc/filebeat/filebeat.yml

Примечание. Как и в Elasticsearch, файл конфигурации Filebeat имеет формат YAML. Это означает, что в файле учитываются отступы, и вы должны использовать точно такое количество пробелов, как указано в этих инструкциях.

Filebeat поддерживает разнообразные выводы, но обычно события отправляются только напрямую в Elasticsearch или в Logstash для дополнительной обработки. В этом обучающем модуле мы будем использовать Logstash для дополнительной обработки данных, собранных Filebeat. Filebeat не потребуется отправлять данные в Elasticsearch напрямую, поэтому мы отключим этот вывод. Для этого мы найдем раздел output.elasticsearch и поставим перед следующими строками значок комментария #:

/etc/filebeat/filebeat.yml

...
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]
...

Затем настроим раздел output.logstash. Уберите режим комментариев для строк output.logstash: и hosts: ["localhost:5044"], удалив значки #. Так мы настроим Filebeat для подключения к Logstash на сервере комплекса Elastic Stack через порт 5044, который мы ранее задали для ввода Logstash:

/etc/filebeat/filebeat.yml

output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

Сохраните и закройте файл.

Функции Filebeat можно расширить с помощью модулей Filebeat. В этом обучающем модуле мы будем использовать модуль system, который собирает и проверяет данные журналов, созданных службой регистрации систем в распространенных дистрибутивах Linux.

Давайте активируем его:

sudo filebeat modules enable system

Вы увидите список включенных и отключенных модулей с помощью следующей команды:

sudo filebeat modules list

Вы увидите примерно следующий список:

OutputEnabled:
system

Disabled:
apache2
auditd
elasticsearch
icinga
iis
kafka
kibana
logstash
mongodb
mysql
nginx
osquery
postgresql
redis
traefik

Filebeat по умолчанию настроен для использования путей по умолчанию для системных журналов и журналов авторизации. Для целей данного обучающего модуля вам не нужно ничего изменять в конфигурации. Вы можете посмотреть параметры модуля в файле конфигурации /etc/filebeat/modules.d/system.yml.

Затем загрузите в Elasticsearch шаблон индекса. Индекс Elasticsearch — это коллекция документов со сходными характеристиками. Индексы идентифицируются по имени, которое используется для ссылки на индекс при выполнении различных операций внутри него. Шаблон индекса применяется автоматически при создании нового индекса.

Используйте следующую команду для загрузки шаблона:

sudo filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
OutputLoaded index template

В комплект Filebeat входят образцы информационных панелей Kibana, позволяющие визуализировать данные Filebeat в Kibana. Прежде чем вы сможете использовать информационные панели, вам нужно создать шаблон индекса и загрузить информационные панели в Kibana.

При загрузке информационных панелей Filebeat подключается к Elasticsearch для проверки информации о версиях. Для загрузки информационных панелей при включенном Logstash необходимо отключить вывод Logstash и активировать вывод Elasticsearch:

sudo filebeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

Вы получите следующий результат:

Output2018-09-10T08:39:15.844Z        INFO    instance/beat.go:273    Setup Beat: filebeat; Version: 6.4.2
2018-09-10T08:39:15.845Z        INFO    elasticsearch/client.go:163     Elasticsearch url: http://localhost:9200
2018-09-10T08:39:15.845Z        INFO    pipeline/module.go:98   Beat name: elk
2018-09-10T08:39:15.845Z        INFO    elasticsearch/client.go:163     Elasticsearch url: http://localhost:9200
2018-09-10T08:39:15.849Z        INFO    elasticsearch/client.go:708     Connected to Elasticsearch version 6.4.2
2018-09-10T08:39:15.856Z        INFO    template/load.go:129    Template already exists and will not be overwritten.
Loaded index template
Loading dashboards (Kibana must be running and reachable)
2018-09-10T08:39:15.857Z        INFO    elasticsearch/client.go:163     Elasticsearch url: http://localhost:9200
2018-09-10T08:39:15.865Z        INFO    elasticsearch/client.go:708     Connected to Elasticsearch version 6.4.2
2018-09-10T08:39:15.865Z        INFO    kibana/client.go:113    Kibana url: http://localhost:5601
2018-09-10T08:39:45.357Z        INFO    instance/beat.go:659    Kibana dashboards successfully loaded.
Loaded dashboards
2018-09-10T08:39:45.358Z        INFO    elasticsearch/client.go:163     Elasticsearch url: http://localhost:9200
2018-09-10T08:39:45.361Z        INFO    elasticsearch/client.go:708     Connected to Elasticsearch version 6.4.2
2018-09-10T08:39:45.361Z        INFO    kibana/client.go:113    Kibana url: http://localhost:5601
2018-09-10T08:39:45.455Z        WARN    fileset/modules.go:388  X-Pack Machine Learning is not enabled
Loaded machine learning job configurations

Теперь вы можете запустить и активировать Filebeat:

sudo systemctl start filebeat
sudo systemctl enable filebeat

Если вы правильно настроили комплекс Elastic, Filebeat начнет отправлять системный журнал и журналы авторизации в Logstash, откуда эти данные будут загружаться в Elasticsearch.

Чтобы подтвердить получение этих данных в Elasticsearch необходимот отправить в индекс Filebeat запрос с помощью следующей команды:

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Вы увидите примерно следующий результат:

Output...
{
  "took" : 32,
  "timed_out" : false,
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1641,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "filebeat-6.4.2-2018.10.10",
        "_type" : "doc",
        "_id" : "H_bZ62UBB4D0uxFRu_h3",
        "_score" : 1.0,
        "_source" : {
          "@version" : "1",
          "message" : "Oct 10 06:22:36 elk systemd[1]: Reached target Local File Systems (Pre).",
          "@timestamp" : "2018-10-10T08:43:56.969Z",
          "host" : {
            "name" : "elk"
          },
          "source" : "/var/log/syslog",
          "input" : {
            "type" : "log"
          },
          "tags" : [
            "beats_input_codec_plain_applied"
          ],
          "offset" : 296,
          "prospector" : {
            "type" : "log"
          },
          "beat" : {
            "version" : "6.4.2",
            "hostname" : "elk",
            "name" : "elk"
          }
        }
      },
...

Если в результатах показано 0 совпадений, Elasticsearch не выполняет загрузку журналов в индекс, который вы искали, и вам нужно проверить настройки на ошибки. Если вы получили ожидаемые результаты, перейдите к следующему шагу, где мы увидим, как выполняется навигация по информационным панелям Kibana.

Шаг 5 — Изучение информационных панелей Kibana

Давайте получше познакомимся с веб-интерфейсом Kibana, который мы установили на одном из предыдущих шагов.

Откройте в браузере FQDN или публичный IP-адрес вашего сервера Elastic Stack. После ввода учетных данных, заданных на шаге 2, вы увидите главную страницу Kibana:

Нажмите ссылку Discover в левой панели навигации для обзора интерфейса. Выберите на странице Discover заранее настроенный индекс filebeat- для просмотра данных Filebeat. По умолчанию при этом будут выведены все данные журналов за последние 15 минут. Ниже вы увидите гистограмму с событиями журнала и некоторыми сообщениями журнала:

Здесь вы можете искать и просматривать журналы, а также настраивать информационные панели. Сейчас на этой странице будет немного данных, потому что вы собираете системные журналы только со своего сервера Elastic Stack.

Используйте левую панель навигации для перехода на страницу Dashboard и выполните на этой странице поиск информационных панелей Filebeat System. На этой странице вы можете искать образцы информационных панелей, входящих в комплектацию модуля system в Filebeat.

Например, вы можете просматривать подробную статистику по сообщениям системного журнала:

Также вы сможете видеть, какие пользователи использовали команду sudo и когда:

В Kibana имеется множество других функций, в том числе функции фильтрации и составления диаграмм, так что вы можете свободно их исследовать.

Заключение

В этом обучающем модуле вы научились устанавливать и настраивать комплекс Elastic Stack для сбора и анализа данных системных журналов. Помните, что вы можете отправлять в Logstash практически любые типы данных журнала и индексированных данных с помощью Beats, однако данные будут более полезны, если они будут проанализированы и структурированы с помощью фильтра Logstash, который преобразует данные в единый формат, легко читаемый Elasticsearch.