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

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

Вступление

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

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

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

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

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

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

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

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

Предпосылки

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

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

    • ОС: Ubuntu 18.04

    • RAM: 4 ГБ

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

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

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

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

Однако, поскольку вы в конечном итоге внесете изменения в свой серверный блок Nginx в ходе этого руководства, для вас, вероятно, будет разумнее выполнить руководствоLet’s Encrypt on Ubuntu 18.04 в конце второго шага этого руководства. Имея это в виду, если вы планируете настроить Let 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 недоступны в стандартных репозиториях пакетов Ubuntu. Однако их можно установить вместе с APT после добавления списка источников пакетов Elastic.

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

Для начала выполните следующую команду, чтобы импортировать открытый ключ GPG Elasticsearch в 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

[.note] #Note: Файл конфигурации 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 Stack.

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

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

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

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

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

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

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

/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'

[.Примечание]##

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

sudo ufw delete allow 'Nginx HTTP'

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

http://your_server_ip/status

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

|Kibana status page

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

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

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

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

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

sudo apt install logstash

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

Logstash pipeline

Создайте файл конфигурации с именем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. В этом примере конфигурация системных журналов была взята из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 nano /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

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

sudo apt install filebeat

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

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

sudo nano /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
icinga
iis
kafka
kibana
logstash
mongodb
mysql
nginx
osquery
postgresql
redis
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

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

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 Stack, 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.

[[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