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

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


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

Введение

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

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

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

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

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

Предпосылки

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

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

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

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

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

    Однако, поскольку вы в конечном итоге будете вносить изменения в свой серверный блок Nginx в ходе этого руководства, для вас, вероятно, будет более целесообразно выполнить руководство Let’s Encrypt в Ubuntu 18.04 в конце второго шага этого руководства. Имея это в виду, если вы планируете настроить Let’s Encrypt на своем сервере, вам потребуется следующее:

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

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

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

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

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

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

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

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

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

      1. sudo apt update

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

      1. sudo apt install elasticsearch

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

      1. sudo nano /etc/elasticsearch/elasticsearch.yml

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

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

      . . .
      network.host: localhost
      . . .
      

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

      1. sudo systemctl start elasticsearch

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

      1. sudo systemctl enable elasticsearch

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

      1. curl -X GET "localhost:9200"

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

      Output
      { "name" : "ElasticSearch", "cluster_name" : "elasticsearch", "cluster_uuid" : "SMYhVWRiTwS1dF0pQ-h7SQ", "version" : { "number" : "7.6.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b", "build_date" : "2020-02-29T00:15:25.529771Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

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

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

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

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

      1. sudo apt 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, хотя вам может быть полезно дать более описательное имя. Например, если у вас есть полное доменное имя и записи DNS, настроенные для этого сервера, вы можете назвать этот файл после своего полного доменного имени:

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

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

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

      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, вам не нужно запускать эту команду:

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

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

      1. sudo nginx -t

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

      1. sudo systemctl restart nginx

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

      1. sudo ufw allow 'Nginx Full'

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

      1. sudo ufw delete allow 'Nginx HTTP'

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

      http://your_server_ip/status
      

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

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

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

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

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

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

      1. sudo apt install logstash

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

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

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

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

      input {
        beats {
          port => 5044
        }
      }
      

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

      1. sudo nano /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 nano /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

      Если синтаксических ошибок нет, через несколько секунд в выводе появится сообщение Configuration 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 с помощью apt:

      1. sudo apt install filebeat

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

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

      1. sudo nano /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 icinga iis kafka kibana logstash mongodb mysql nginx osquery postgresql redis 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-09-10T08:39:15.844Z INFO instance/beat.go:273 Setup Beat: filebeat; Version: 7.6.1 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 7.6.1 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 7.6.1 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 7.6.1 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:

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

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

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

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

      Вы увидите вывод, похожий на этот:

      Output
      ... { "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 10000, "relation" : "gte" }, "max_score" : 1.0, "hits" : [ { "_index" : "filebeat-7.6.1-2020.03.22-000001", "_type" : "_doc", "_id" : "_vafAnEB9n8Ibpfym4VS", "_score" : 1.0, "_source" : { "agent" : { "hostname" : "ElasticSearch", "id" : "ee9d1a5d-75a7-4283-a126-ee90c1455173", "type" : "filebeat", "ephemeral_id" : "b927d9fb-500a-43ab-a20c-598d55c080ac", "version" : "7.6.1" }, "process" : { "name" : "kernel" }, "log" : { "file" : { "path" : "/var/log/syslog" }, "offset" : 97048 }, "fileset" : { "name" : "syslog" }, ...

      Если ваши выходные данные показывают 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.