Автор выбрал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
На этой странице состояния отображается информация об использовании ресурсов сервера и перечислены установленные плагины.
[.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
. Входные модули используют данные из источника, модули фильтров обрабатывают данные, а выходные модули записывают данные в место назначения.
Создайте файл конфигурации с именем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:
Щелкните ссылкуDiscover на левой панели навигации. На страницеDiscover выберите предопределенный шаблон индексаfilebeat- *, чтобы увидеть данные Filebeat. По умолчанию это покажет вам все данные журнала за последние 15 минут. Вы увидите гистограмму с событиями журнала и некоторыми сообщениями журнала ниже:
Здесь вы можете искать и просматривать журналы, а также настраивать свою панель мониторинга. На данный момент, однако, там не будет много, потому что вы собираете системные журналы только с вашего сервера Elastic Stack.
Используйте левую панель, чтобы перейти на страницуDashboard и найти информационные панелиFilebeat System. Оказавшись там, вы можете найти образцы панелей мониторинга, которые поставляются с модулемsystem
Filebeat.
Например, вы можете просмотреть подробную статистику на основе ваших сообщений системного журнала:
Вы также можете просмотреть, какие пользователи использовали командуsudo
и когда:
У Kibana есть много других функций, таких как построение графиков и фильтров, так что не стесняйтесь исследовать.
Заключение
В этом руководстве вы установили и настроили Elastic Stack для сбора и анализа системных журналов. Помните, что вы можете отправить практически любой тип журнала или индексированных данных в Logstash, используяBeats, но данные становятся еще более полезными, если они анализируются и структурируются с помощью фильтра Logstash, поскольку это преобразует данные в согласованный формат. которые может легко прочитать Elasticsearch.