Как установить Elasticsearch, Logstash и Kibana (Elastic Stack) на CentOS 7

Автор выбралSoftware in the Public Interest для получения пожертвования в рамках программыWrite for DOnations.

Вступление

Elastic Stack - ранее известный какELK Stack - представляет собой набор программного обеспечения с открытым исходным кодом, созданногоElastic, который позволяет вам искать, анализировать и визуализировать журналы, созданные из любого источника в любом формате, практика известный какcentralized logging. Централизованное ведение журнала может быть очень полезно при попытке выявить проблемы с вашими серверами или приложениями, так как оно позволяет вам искать во всех ваших журналах в одном месте. Это также полезно, поскольку позволяет выявлять проблемы, которые охватывают несколько серверов, сопоставляя их журналы в течение определенного периода времени.

Эластичный стек состоит из четырех основных компонентов:

  • Elasticsearch: распределенная поисковая системаRESTful, в которой хранятся все собранные данные.

  • Logstash: компонент обработки данных Elastic Stack, который отправляет входящие данные в Elasticsearch.

  • Kibana: веб-интерфейс для поиска и визуализации журналов.

  • Beats: легкие одноцелевые поставщики данных, которые могут отправлять данные с сотен или тысяч машин в Logstash или Elasticsearch.

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

[.note] #Note: при установке Elastic Stack вы должны использовать одну и ту же версию для всего стека. В этом руководстве используются последние версии каждого компонента, которыми на момент написания являются Elasticsearch 6.5.2, Kibana 6.5.2, Logstash 6.5.2 и Filebeat 6.5.2.
#

Предпосылки

Для завершения этого урока вам понадобится следующее:

  • Один сервер CentOS 7, настроенный следующим образомInitial Server Setup with CentOS 7, включая пользователя без полномочий root с привилегиями sudo иfirewall. Объем ЦП, ОЗУ и хранилища, которые требуются вашему серверу Elastic Stack, зависит от объема журналов, которые вы собираетесь собирать. В этом руководстве вы будете использовать VPS со следующими спецификациями для нашего сервера Elastic Stack:

    • ОС: CentOS 7.5

    • RAM: 4 ГБ

    • Процессор: 2

  • Java 8 - которая требуется Elasticsearch и Logstash - установлена ​​на вашем сервере. Обратите внимание, что Java 9 не поддерживается. Чтобы установить это, следуйте разделу“Install OpenJDK 8 JRE” нашего руководства по установке Java в CentOS.

  • На вашем сервере установлен Nginx, который вы позже настроите в этом руководстве как обратный прокси-сервер для Kibana. Следуйте нашему руководству поHow To Install Nginx on CentOS 7, чтобы настроить это.

Кроме того, поскольку Elastic Stack используется для доступа к ценной информации о вашем сервере, к которой вы не хотите, чтобы неавторизованные пользователи имели доступ, важно обеспечить безопасность вашего сервера, установив сертификат TLS / SSL. Это необязательно, ноstrongly encouraged. Поскольку в конечном итоге вы будете вносить изменения в свой серверный блок Nginx в ходе этого руководства, мы предлагаем установить эту безопасность, выполнив руководствоLet’s Encrypt on CentOS 7 сразу после второго шага этого руководства.

Если вы планируете настроить Let's Encrypt на своем сервере, перед этим вам потребуется следующее:

  • Полное доменное имя (FQDN). В этом руководстве будет использоватьсяexample.com. Вы можете приобрести доменное имя наNamecheap, получить его бесплатно наFreenom или воспользоваться услугами регистратора доменов по вашему выбору.

  • Обе следующие записи DNS настроены для вашего сервера. Вы можете следить заthis introduction to DigitalOcean DNS, чтобы узнать, как их добавить.

    • Запись A сexample.com, указывающая на общедоступный IP-адрес вашего сервера.

    • Запись A сwww.example.com, указывающая на общедоступный IP-адрес вашего сервера.

[[step-1 -—- install-and-configuring-elasticsearch]] == Шаг 1. Установка и настройка Elasticsearch

Компоненты Elastic Stack по умолчанию недоступны через диспетчер пакетов, но вы можете установить их с помощьюyum, добавив репозиторий пакетов Elastic.

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

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

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Затем добавьте Elastic-репозиторий. Используйте предпочитаемый вами текстовый редактор, чтобы создать файлelasticsearch.repo в каталоге/etc/yum.repos.d/. Здесь мы воспользуемся текстовым редакторомvi:

sudo vi /etc/yum.repos.d/elasticsearch.repo

Чтобы предоставить yum информацию, необходимую для загрузки и установки компонентов Elastic Stack, войдите в режим вставки, нажавi, и добавьте следующие строки в файл.

/etc/yum.repos.d/elasticsearch.repo

[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Здесь вы включили удобочитаемыеname репо,baseurl каталога данных репо иgpgkey, необходимые для проверки эластичных пакетов.

Когда вы закончите, нажмитеESC, чтобы выйти из режима вставки, затем нажмите:wq иENTER, чтобы сохранить и выйти из файла. Чтобы узнать больше о текстовом редакторе vi и его преемникеvim, ознакомьтесь с нашим руководством поInstalling and Using the Vim Text Editor on a Cloud Server.

После добавления репо вы можете установить Elastic Stack. Согласноofficial documentation, вы должны установить Elasticsearch перед другими компонентами. Установка в этом порядке гарантирует, что компоненты, от которых зависит каждый продукт, находятся на своих местах.

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

sudo yum install elasticsearch

После завершения установки Elasticsearch откройте его основной файл конфигурацииelasticsearch.yml в своем редакторе:

sudo vi /etc/elasticsearch/elasticsearch.yml

[.note] #Note: Файл конфигурации Elasticsearch имеет формат YAML, что означает, что отступы очень важны! Убедитесь, что вы не добавляете лишних пробелов при редактировании этого файла.
#

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

/etc/elasticsearch/elasticsearch.yml

. . .
network.host: localhost
. . .

Сохраните и закройтеelasticsearch.yml. Затем запустите службу Elasticsearch сsystemctl:

sudo systemctl start elasticsearch

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

sudo systemctl enable elasticsearch

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

curl -X GET "localhost:9200"

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

Output{
  "name" : "8oSCBFJ",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "1Nf9ZymBQaOWKpMRBfisog",
  "version" : {
    "number" : "6.5.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "9434bed",
    "build_date" : "2018-11-29T23:58:20.891072Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

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

[[step-2 -—- install-and-configuring-the-kibana-dashboard]] == Шаг 2 - Установка и настройка Kibana Dashboard

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

Поскольку вы уже добавили репозиторий Elastic на предыдущем шаге, вы можете просто установить оставшиеся компоненты Elastic Stack, используяyum:

sudo yum install kibana

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

sudo systemctl enable kibana
sudo systemctl start kibana

Поскольку Kibana настроен на прослушивание толькоlocalhost, мы должны настроитьreverse proxy, чтобы разрешить внешний доступ к нему. Для этой цели мы будем использовать 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.conf, хотя вам может быть полезно дать своему более информативное имя. Например, если для этого сервера настроены полные доменные имена и записи DNS, вы можете назвать этот файл после своего полного доменного имени:

sudo vi /etc/nginx/conf.d/example.com.conf

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

Обратите внимание, что если вы выполнилиprerequisite Nginx tutorial до конца, возможно, вы уже создали этот файл и заполнили его некоторым содержимым. В этом случае удалите все существующее содержимое в файле перед добавлением следующего:

example.com.conf’>/etc/nginx/conf.d/example.com.conf

server {
    listen 80;

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

Когда вы закончите, сохраните и закройте файл.

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

sudo nginx -t

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

sudo systemctl restart nginx

По умолчанию политика безопасности SELinux устанавливается принудительно. Выполните следующую команду, чтобы разрешить Nginx доступ к прокси-службе:

sudo setsebool httpd_can_network_connect 1 -P

Вы можете узнать больше о SELinux в руководствеAn Introduction to SELinux on CentOS 7.

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

http://your_server_ip/status

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

|Kibana status page

[.note] #Note: Как упоминалось в разделе «Предварительные условия», рекомендуется включить SSL / TLS на вашем сервере. Вы можете следить заthis tutorial сейчас, чтобы получить бесплатный сертификат SSL для Nginx на CentOS 7. После получения сертификатов SSL / TLS вы можете вернуться и завершить это руководство.
#

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

[[step-3 -—- install-and-configuring-logstash]] == Шаг 3 - Установка и настройка Logstash

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

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

sudo yum install logstash

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

Logstash pipeline

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

sudo vi /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 vi /etc/logstash/conf.d/10-syslog-filter.conf

Вставьте следующую конфигурацию фильтра syslog. В этом примере конфигурация системных журналов была взята изofficial Elastic documentation. Этот фильтр используется для анализа входящих системных журналов, чтобы сделать их структурированными и пригодными для использования предопределенными информационными панелями 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 vi /etc/logstash/conf.d/30-elasticsearch-output.conf

Вставьте следующую конфигурациюoutput. Эти выходные данные настраивают Logstash для хранения данных Beats в Elasticsearch, который работает наlocalhost:9200, в индексе, названном в честь используемого 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}"
  }
}

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

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

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

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

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

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

sudo systemctl start logstash
sudo systemctl enable logstash

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

[[step-4 -—- install-and-configuring-filebeat]] == Шаг 4 - Установка и настройка Filebeat

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

  • Filebeat: собирает и отправляет файлы журналов.

  • Metricbeat: собирает метрики из ваших систем и сервисов.

  • Packetbeat: собирает и анализирует сетевые данные.

  • Winlogbeat: собирает журналы событий Windows.

  • Auditbeat: собирает данные системы аудита Linux и контролирует целостность файлов.

  • Heartbeat: отслеживает доступность сервисов с помощью активного зондирования.

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

Установите Filebeat, используяyum:

sudo yum install filebeat

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

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

sudo vi /etc/filebeat/filebeat.yml

[.note] #Note: Как и в случае с 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 modules. В этом руководстве вы будете использовать модульsystem, который собирает и анализирует журналы, созданные службой ведения системного журнала распространенных дистрибутивов Linux.

Давайте включим это:

sudo filebeat modules enable system

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

sudo filebeat modules list

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

OutputEnabled:
system

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

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

Затем загрузите шаблон индекса в Elasticsearch. https://www.elastic.co/guide/en/elasticsearch/reference/current/basic_concepts.html#_index[_Elasticsearch index] - это набор документов со схожими характеристиками. Индексы идентифицируются по имени, которое используется для ссылки на индекс при выполнении различных операций в нем. Шаблон индекса будет автоматически применен при создании нового индекса.

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

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

Вы увидите вывод, который выглядит следующим образом:

Output. . .
2018-12-05T21:23:33.806Z        INFO    elasticsearch/client.go:163     Elasticsearch url: http://localhost:9200
2018-12-05T21:23:33.811Z        INFO    elasticsearch/client.go:712     Connected to Elasticsearch version 6.5.2
2018-12-05T21:23:33.815Z        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-12-05T21:23:33.816Z        INFO    elasticsearch/client.go:163     Elasticsearch url: http://localhost:9200
2018-12-05T21:23:33.819Z        INFO    elasticsearch/client.go:712     Connected to Elasticsearch version 6.5.2
2018-12-05T21:23:33.819Z        INFO    kibana/client.go:118    Kibana url: http://localhost:5601
2018-12-05T21:24:03.981Z        INFO    instance/beat.go:717    Kibana dashboards successfully loaded.
Loaded dashboards
2018-12-05T21:24:03.982Z        INFO    elasticsearch/client.go:163     Elasticsearch url: http://localhost:9200
2018-12-05T21:24:03.984Z        INFO    elasticsearch/client.go:712     Connected to Elasticsearch version 6.5.2
2018-12-05T21:24:03.984Z        INFO    kibana/client.go:118    Kibana url: http://localhost:5601
2018-12-05T21:24:04.043Z        WARN    fileset/modules.go:388  X-Pack Machine Learning is not enabled
2018-12-05T21:24:04.080Z        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 Stack, Filebeat начнет отправку вашего системного журнала и журналов авторизации в Logstash, который затем загрузит эти данные в Elasticsearch.

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

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

Вы увидите вывод, который выглядит примерно так:

Output{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 3225,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "filebeat-6.5.2-2018.12.05",
        "_type" : "doc",
        "_id" : "vf5GgGcB_g3p-PRo_QOw",
        "_score" : 1.0,
        "_source" : {
          "@timestamp" : "2018-12-05T19:00:34.000Z",
          "source" : "/var/log/secure",
          "meta" : {
            "cloud" : {
. . .

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

[[step-5 -—- explore-kibana-dashboards]] == Шаг 5 - Изучение Kibana Dashboards

Давайте посмотрим на Kibana, веб-интерфейс, который мы установили ранее.

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

Kibana Homepage

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

Discover page

Здесь вы можете искать и просматривать журналы, а также настраивать свою панель мониторинга. На данный момент, однако, там не будет много, потому что вы собираете системные журналы только с вашего сервера Elastic Stack.

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

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

Syslog Dashboard

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

Sudo Dashboard

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

Заключение

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

Related