Поиск по сайту:

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


Автор выбрал программу Write for DOnations.

Введение

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

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

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

В этом руководстве вы установите Nginx для прокси-сервера, чтобы он был доступен через веб-браузер. В конце этого руководства все эти компоненты будут установлены на одном сервере, называемом сервером Elastic Stack.

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

Предпосылки

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

  • Один сервер CentOS 7, настроенный следующим брандмауэром. Объем ЦП, ОЗУ и хранилища, которые потребуются вашему серверу Elastic Stack, зависит от объема журналов, которые вы собираетесь собирать. В этом руководстве вы будете использовать VPS со следующими характеристиками для нашего сервера Elastic Stack:
    • ОС: CentOS 7.5
    • ОЗУ: 4 ГБ
    • ЦП: 2

    Java 8, необходимая для Elasticsearch и Logstash, установлена на вашем сервере. Обратите внимание, что Java 9 не поддерживается. Чтобы установить это, следуйте разделу «Установка OpenJDK 8 JRE» нашего руководства по установке Java в CentOS.

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

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

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

    • Полное доменное имя (FQDN). В этом руководстве будет использоваться example.com. Вы можете приобрести доменное имя на Freenom или воспользоваться услугами регистратора доменов по вашему выбору.
    • Обе следующие записи DNS настроены для вашего сервера. Вы можете следовать этому введению в DNS DigitalOcean, чтобы узнать, как их добавить.
      • Запись A с example.com, указывающая на общедоступный IP-адрес вашего сервера.
      • Запись A с www.example.com, указывающая на общедоступный IP-адрес вашего сервера.

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

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

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

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

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

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

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

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

      [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, ознакомьтесь с нашим руководством по установке и использованию текстового редактора Vim на облачном сервере.

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

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

      1. sudo yum install elasticsearch

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

      sudo vi /etc/elasticsearch/elasticsearch.yml
      

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

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

      . . .
      network.host: localhost
      . . .
      

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

      1. sudo systemctl start elasticsearch

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

      1. sudo systemctl enable elasticsearch

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

      1. 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.

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

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

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

      1. sudo yum install kibana

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

      1. sudo systemctl enable kibana
      2. sudo systemctl start kibana

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

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

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

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

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

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

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

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

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

      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;
          }
      }
      

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

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

      1. sudo nginx -t

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

      1. sudo systemctl restart nginx

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

      1. 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
      

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

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

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

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

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

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

      1. sudo yum install logstash

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

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

      1. sudo vi /etc/logstash/conf.d/02-beats-input.conf

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

      input {
        beats {
          port => 5044
        }
      }
      

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

      1. sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

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

      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:

      1. sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

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

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

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

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

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

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

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

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

      1. sudo systemctl start logstash
      2. sudo systemctl enable logstash

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

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

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

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

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

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

      1. sudo yum install filebeat

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

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

      1. sudo vi /etc/filebeat/filebeat.yml

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

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

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

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

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

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

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

      Включим его:

      1. sudo filebeat modules enable system

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

      1. sudo filebeat modules list

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

      Output
      Enabled: 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. Индекс Elasticsearch – это набор документов со схожими характеристиками. Индексы идентифицируются по имени, которое используется для ссылки на индекс при выполнении различных операций внутри него. Шаблон индекса будет автоматически применен при создании нового индекса.

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

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

      Это даст следующий результат:

      Output
      Loaded index template

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

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

      1. 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:

      1. sudo systemctl start filebeat
      2. sudo systemctl enable filebeat

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

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

      1. 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.

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

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

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

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

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

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

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

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

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

      Заключение

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