Сбор метрик с помощью Topbeat и ELK в CentOS 7

Приложение Topbeat позволяет собирать информацию о процессоре, памяти и активности процессов на сервере. В сочетании с сервером ELK (Elasticsearch, Logstash и Kibana) данные, собранные Topbeat, можно использовать для визуализации метрик.

Данное руководство поможет настроить взаимодействие стека ELK и Topbeat и использовать эту связку для визуализации метрик инфраструктуры на сервере CentOS 7.

Примечание: Аналогичное руководство для Ubuntu можно найти по этой ссылке.

Требования

  • Предварительно установленный стек ELK.
  • Минимум 1 клиентский сервер CentOS 7, с которого нужно собирать метрики при помощи Topbeat.
  • SSL-сертификат на сервере ELK.

1: Загрузка дашбордов Kibana на сервер ELK

Elasticsearch предоставляет несколько образцов дашбордов Kibana и шаблонов Beats, что может помочь запустить Kibana.

Сначала загрузите архив дашбордов в домашний каталог:

cd ~
curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

Установите unzip:

sudo yum -y install unzip

Извлеките содержимое архива:

unzip beats-dashboards-*.zip

Загрузите образцы дашбордов, визуализаций и шаблоны индексов Beats в Elasticsearch:

cd beats-dashboards-*
./load.sh

Только что были загружены следующие шаблоны:

  • [packetbeat-]YYYY.MM.DD
  • [topbeat-]YYYY.MM.DD
  • [filebeat-]YYYY.MM.DD
  • [winlogbeat-]YYYY.MM.DD

2: Загрузка шаблонов индекса Topbeat в Elasticsearch

Topbeat будет поставлять логи в Elasticsearch, для этого нужно загрузить шаблон индекса Topbeat.

Загрузите шаблон индекса Topbeat в домашний каталог:

cd ~
curl -O https://raw.githubusercontent.com/elastic/topbeat/master/etc/topbeat.template.json

Затем загрузите шаблон при помощи команды:

curl -XPUT 'http://localhost:9200/_template/topbeat' -d@topbeat.template.json

Сервер ELK может принимать данные Topbeat. Теперь нужно установить Topbeat на клиентский сервер.

3: Добавление клиентских серверов

Примечание: Инструкции данного раздела нужно выполнить на каждом сервере CentOS, метрики которого нужно собирать для Logstash на сервер ELK.

Скопируйте сертификат SSL

Перейдите на сервер ELK и скопируйте сертификат на клиентский сервер.

scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp

Примечание: Замените условный адрес клиентского сервера и логин своими данными.

Убедитесь в том, что сертификат скопирован успешно.

Перейдите на клиентский сервер и скопируйте полученный SSL-сертификат в каталог /etc/pki/tls/certs:

sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

Установите пакет Topbeat

На клиентской машине запустите следующую команду, которая импортирует открытый GPG-ключ Elasticsearch в rpm:

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Создайте и отредактируйте новый репозиторий yum для Filebeat:

sudo vi /etc/yum.repos.d/elastic-beats.repo

Добавьте в файл следующий код:

[beats] name=Elastic Beats Repository
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

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

Установите Topbeat:

sudo yum -y install topbeat

Настройте Topbeat

Теперь нужно настроить Topbeat для соединения с Logstash на сервере ELK.

Отредактируйте образец конфигурационного файла, который поставляется с Topbeat.

На клиентской машине создайте и отредактируйте конфигурационный файл Topbeat:

sudo vi /etc/topbeat/topbeat.yml

Примечание: Конфигурационный файл Topbeat использует формат YAML, в котором очень важны все отступы.

В начале файла находится раздел input. В нем можно указать метрики и статистические данные, которые нужно отправлять на сервер ELK.

Примечание: В руководстве используются стандартные параметры input.

В разделе output найдите строку elasticsearch:, она определяет вывод Elasticsearch. Удалите или закомментируйте весь раздел до строки #logstash:.

Найдите закомментированный раздел output для Logstash (строка #logstash:) и раскомментируйте его. Важно раскомментировать строку hosts: [“localhost:5044”] и заменить localhost внутренним IP-адресом или именем хоста сервера ELK.

_### Logstash as output
_logstash:
__# The Logstash hosts
__hosts: ["ELK_server_private_IP:5044"]

Теперь Topbeat будет подключаться к Logstash на сервере ELK на порт 5044.

Примечание: Если во время установки ELK вы выбрали другой порт, укажите его в этих настройках.

Найдите раздел tls и раскомментируйте его. Затем раскомментируйте строку certificate_authorities и измените её значение на [“/etc/pki/tls/certs/logstash-forwarder.crt”].

...
tls:
# List of root certificates for HTTPS server verifications
certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

Теперь Topbeat может использовать SSL-сертификат, созданный на сервере ELK.

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

Чтобы обновить настройки, перезапустите Topbeat:

sudo systemctl restart topbeat
sudo systemctl enable topbeat

Примечание: Можно сверить настройки Topbeat с этим примером настроек.

Теперь Topbeat отправляет метрики системы, процессов и файловой системы клиентского сервера на сервер ELK!

Примечание: Повторите этот раздел на всех других клиентских серверах, которые нужно отслеживать при помощи Topbeat.

4: Тестирование Topbeat

Если стек ELK настроен правильно, Topbeat на клиентском сервере будет передавать логи в Logstash на сервер ELK. Logstash будет загружать данные Topbeat в Elasticsearch (индекс topbeat-YYYY.MM.DD).

Перейдите на сервер ELK и убедитесь, что Elasticsearch получает все данные; для этого запросите данные Topbeat при помощи команды:

curl -XGET 'http://localhost:9200/topbeat-*/_search?pretty'

На экране появится примерно такой вывод:

{
"_index" : "topbeat-2016.02.01",
"_type" : "process",
"_id" : "AVKeLSdP4HKUFv4CjZ7K",
"_score" : 1.0,
"_source":{"@timestamp":"2016-02-01T18:51:43.937Z","beat":{"hostname":"topbeat-01","name":"topbeat-01"},"count":1,"proc":{"cpu":{"user":0,"user_p":0,"system":50,"total":50,"start_time":"12:54"},"mem":{"size":0,"rss":0,"rss_p":0,"share":0},"name":"jbd2/vda1-8","pid":125,"ppid":2,"state":"sleeping"},"type":"process","@version":"1","host":"topbeat-01"}
}

Если запрос не вернул таких данных, значит, Elasticsearch не получает никаких данных Topbeat с заданным индексом. Проверьте настройки на наличие ошибок.

5: Подключение к Kibana

Настроив Topbeat на всех клиентских серверах, приступайте к настройке Kibana.

В веб-браузере откройте FQDN или IP-адрес сервера ELK. Введите его учётные данные. На экране появится приветственная страница Kibana.

Откройте меню Index Patterns и найдите шаблон [topbeat]-YYY.MM.DD, чтобы просмотреть данные Topbeat.

Также нужно проверить загруженный в начале дашборд Topbeat. Кликните Dashboard → Load Saved Dashboard → Topbeat-Dashboard. На экране появится ряд метрик, собранных с клиентского сервера.

Заключение

Теперь системные метрики централизованы при помощи Elasticsearch и Logstash. Вы можете визуализировать их при помощи Kibana.

Tags: , , , , ,

Добавить комментарий