Книга: Elasticsearch, Kibana, Logstash и поисковые системы нового поколения
Назад: 10. Создание приложения для анализа данных с датчиков
На главную: Предисловие

11. Мониторинг серверной инфраструктуры

Из предыдущей главы вы узнали, как эффективно запускать Elastic Stack в рабочей среде и каким правилам рекомендуется следовать при работе с Elastic Stack.

В этой главе рассказывается, как использовать платформу Beats для мониторинга серверной инфраструктуры. Мы детально рассмотрим Metricbeat — компонент Beats, который помогает IT-администраторам и командам поддержки мониторить свои приложения и серверную инфраструктуру, а также оперативно реагировать в случае неполадок или недоступности сервера.

В этой главе мы разберем следующие темы.

Компонент Beats — Metricbeat, который используется для сбора метрик в системах и приложениях.

• Установка и настройка Metricbeat.

Архитектура внедрения.

Metricbeat

Metricbeat — это легковесный поставщик для периодического сбора метрик в операционных системах и сервисах, запущенных на ваших серверах. Он помогает мониторить систему путем сбора метрик из нее, а также таких сервисов, как Apache, MondoDB, Redis и пр., запущенных на выбранном сервере. Metricbeat может передавать собранные метрики напрямую в Elasticsearch или отправлять в Logstash, Redis или Kafka. Для мониторинга сервисов Metricbeat установлен на пограничный сервер; также есть возможность сбора метрик и с удаленного сервера. Тем не менее рекомендуется устанавливать Metricbeat на тех серверах, на которых запущены сервисы.

Скачивание и установка Metricbeat

Перейдите по ссылке https://www.elastic.co/downloads/beats/metricbeat и скачайте файл ZIP/TAR в зависимости от вашей операционной системы, как показано на рис. 11.1. Установка Metricbeat проста и понятна.

11_01.tif 

Рис. 11.1

268822.png 

Версии Beats 6.0.х совместимы с Elasticsearch 5.6.х и 6.0.х и Logstash версий 5.6.х и 6.0.х. Полную схему совместимости вы можете найти по ссылке https://www.elastic.co/support/matrix#matrix_compatibility. Прежде чем рассматривать примеры использования Elasticsearch и Logstash совместно с Beats в этой главе, убедитесь, что у вас установлены совместимые версии.

Установка в Windows

Распакуйте скачанный файл. После распаковки перейдите в созданную папку, как показано в следующем фрагменте кода:

D:>cd D:\packt\metricbeat-6.0.0-windows-x86_64

Для установки Filebeat как службы Windows выполните следующие шаги.

1. Откройте Windows PowerShell с правами администратора и перейдите в папку с распакованными файлами.

2. Из командной строки PowerShell выполните следующие команды для установки Metricbeat как службы Windows:

PS >cd D:\packt\metricbeat-6.0.0-windows-x86_64

PS D:\packt\metricbeat-6.0.0-windows-x86_64>.\installservice-

metricbeat.ps1

268852.png 

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

PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-metricbeat.ps1

Установка в Linux

Распакуйте пакет tar.gz и перейдите в созданную папку, как показано ниже:

$> tar -xzf metricbeat-6.0.0-linux-x86_64.tar.gz

$>cd metricbeat

268883.png 

Для установки с использованием deb или rpm выполните соответствующие команды в терминале:

deb:

curl -L -O

https://artifacts.elastic.co/downloads/beats/metricbeat/m

etricbeat-6.0.0-amd64.deb

sudo dpkg -i metricbeat-6.0.0-amd64.deb

 

rpm:

curl -L -O

https://artifacts.elastic.co/downloads/beats/metricbeat/m

etricbeat-6.0.0-x86_64.rpm

sudo rpm -vi metricbeat-6.0.0-x86_64.rpm

Metricbeat будет установлен в папку /usr/share/metricbeat. Файлы конфигурации расположены в /etc/metricbeat. Скрипт init будет находиться в папке /etc/init.d/metricbeat. Файлы log — в папке /var/log/metricbeat.

Архитектура

Metricbeat состоит из двух компонентов: модулей и метрик-сетов. Модуль Metricbeat определяет логику сбора данных из определенных сервисов, таких как MongoDB, Apache и т.д. В модуле указываются сведения о сервисах, в том числе способ подключения, частота сбора метрик, типы метрик.

Каждый модуль имеет один или несколько метрик-сетов. Метрик-сет — это компонент, который собирает список связанных метрик по службам операционной системы, используя один запрос. Он структурирует данные событий и отправляет их в настроенный вывод, например в Elasticsearch или Logstash.

Metricbeat собирает метрики периодически, в зависимости от интервала, указанного в конфигурационном файле metricbeat.yml, и отправляет события в настроенный вывод. События отправляются асинхронно, по аналогии с работой модуля Filebeat, который гарантирует хотя бы одну доставку; если настроенный вывод недоступен, то события будут утрачены.

Например, модуль MongoDB предоставляет метрик-сеты status и dbstats, которые собирают информацию и статистику путем обработки возвращенного ответа, полученного из выполняемых команд db.serverStatus() и db.stats() в MongoDB, как показано на рис. 11.2.

274569.png 

Рис. 11.2

Ниже перечислены основные преимущества Metricbeat.

Metricbeat отправляет и события ошибок. Если сервис недоступен или вышел из строя, Metricbeat отправит события с полными описаниями ошибок, полученными из системы. Это полезно для отладки или поиска причины недоступности сервиса.

• Совмещает связанные метрики в единое событие. Metricbeat получает все связанные метрики из системы с помощью одного запроса вместо того, чтобы делать множественные запросы для получения каждой метрики отдельно. Благодаря этому снижается нагрузка на сервисы/системы. Полученные метрики комбинируются в единое событие и отправляются в настроенный вывод.

• Отправляет информацию метаданных. Отправляемая Metricbeat метрика содержит и числа, и строки с информацией статуса. Кроме того, доставляются основные метаданные о каждой метрике как часть события. Это полезно для разметки соответствующих типов данных во время хранения и помогает с запросами/фильтрацией данных, идентификации событий по информации метаданных и пр.

• Отправляет необработанные данные как есть. Metricbeat отправляет полученные необработанные данные без выполнения какой-либо обработки или операций агрегации, тем самым уменьшается сложность компонента Metricbeat.

Структура событий. Metricbeat отправляет два типа событий:

обычные события, содержащие полученную метрику;

• события, содержащие ошибки в случаях, когда сервис недоступен.

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

@timestamp — время записи события;

• beat.hostname — имя хоста сервера, на котором работает компонент Beat;

• beat.name — название, присвоенное компоненту Beat (по умолчанию совпадает с именем хоста);

• beat.version — версия компонента Beat;

• metricset.module — название модуля, который отправил данные;

• metricset.name — название метрик-сета, который отправил данные;

• metricset.rtt — время выполнения запроса в миллисекундах;

• @metadata.beat — тип компонента Beat (то есть Metricbeat);

• @metadata.type — по умолчанию doc;

• @metadata.version — версия компонента Beat.

В случае событий с ошибками к событию будет добавлено поле ошибки, такое как error.message, error.code и error.type, содержащее сообщение об ошибке, код и тип.

Типичное событие выглядит следующим образом:

{

  "@timestamp": "2017-11-25T11:48:33.269Z",

  "@metadata": {

    "beat": "metricbeat",

    "type": "doc",

    "version": "6.0.0"

  },

  "system": {

    "fsstat": {

      "total_size": {

        "free": 189415194624,

        "used": 305321828352,

        "total": 494737022976

      },

      "count": 2,

      "total_files": 0

    }

  },

  "metricset": {

    "name": "fsstat",

    "rtt": 2000,

    "module": "system"

  },

  "beat": {

    "version": "6.0.0",

    "name": "SHMN-IN",

    "hostname": "SHMN-IN"

  }

}

Пример события ошибки, если модуль MongoDB недоступен, выглядит таким образом:

{

  "@timestamp": "2017-11-25T11:53:08.056Z",

  "@metadata": {

    "beat": "metricbeat",

    "type": "doc",

    "version": "6.0.0"

  },

  "metricset": {

    "host": "localhost:27017",

    "rtt": 1003057,

    "module": "mongodb",

    "name": "status"

  },

  "error": {

    "message": "no reachable servers"

  },

  "mongodb": {

    "status": {}

  }

}

Вместе с минимальным набором полей (базовая структура события), отправляемым Metricbeat, также могут отправляться поля модулей, в зависимости от включенных модулей. Полный список доставляемых полей по модулям доступен по следующей ссылке: https://www.elastic.co/guide/en/beats/metricbeat/current/exported-fields.html.

Настройка Metricbeat

Конфигурация, связанная с Metricbeat, хранится в конфигурационном файле под названием metricbeat.yml, который использует синтаксис YAML.

Файл metricbeat.yml содержит следующую информацию:

конфигурацию модуля;

• общие настройки;

• настройки вывода;

• настройки обработки;

• настройки пути;

• настройки панели управления;

• настройки сбора данных.

Рассмотрим некоторые из этих сведений.

268916.png 

Файл metricbeat.yml будет присутствовать в папке установки только в случае, если были использованы файлы .zip или .tar. Если для установки были использованы файлы DEB или RPM, файл будет находиться в папке /etc/metricbeat.

Конфигурация модуля

Metricbeat поставляется в комплекте с различными модулями. Они призваны собирать метрики из системы и приложений, таких как Apache, MongoDB, Redis, MySQL и др.

Metricbeat предоставляет два способа активизации модулей и метрик-сетов:

активизацию конфигураций модулей в папке modules.d;

активизацию конфигураций модулей в файле metricbeat.yml.

Активизация конфигураций модулей в папке modules.d

Папка modules.d содержит конфигурации по умолчанию для всех молулей Metricbeat. Конфигурация каждого модуля хранится в файле .yml, а название файла соответствует названию модуля. Например, конфигурация модуля MySQL будет храниться в файле mysql.yml. По умолчанию, кроме модуля system, все другие модули деактивизированы. Для получения списка модулей, доступных в Metricbeat, выполните следующую команду:

Windows:

D:\packt\metricbeat-6.0.0-windows-x86_64>metricbeat.exe modules list

 

Linux:

[locationOfMetricBeat]$./metricbeat modules list

Команда modules list показывает все доступные модули, а также демонстрирует список активных/неактивных на данный момент модулей.

268945.png 

Если модуль неактивен, то в папке modules.d файл конфигурации данного модуля будет иметь расширение .disabled.

Базовая конфигурация модуля mongodb выглядит следующим образом:

- module: mongodb

  metricsets: ["dbstats", "status"]

  period: 10s

  hosts: ["localhost:27017"]

  username: user

  password: pass

Для активизации выполните команду modules enable с указанием одного или нескольких названий модулей. Например:

Windows:

D:\packt\metricbeat-6.0.0-windows-x86_64>metricbeat.exe modules enable

redis mongodb

 

Linux:

[locationOfMetricBeat]$./metricbeat modules enable redis mongodb

Аналогичным образом для деактивизации модулей выполните команду modules disable с указанием одного или нескольких названий модулей. Например:

Windows:

D:\packt\metricbeat-6.0.0-windows-x86_64>metricbeat.exe modules disable

redis mongodb

 

Linux:

[locationOfMetricBeat]$./metricbeat modules disable redis mongodb

270407.png 

Для включения динамической перезагрузки конфигурации укажите значение true для параметра reload.enabled. Для указания частоты проверки изменений конфигурации настройте параметр reload.period со значением metricbeat.config.modules.

Например:

#metricbeat.yml

 

metricbeat.config.modules:

path: ${path.config}/modules.d/*.yml

reload.enabled: true

reload.period: 20s

Активизация конфигураций модулей в файле metricbeat.yml

Если используются более ранние версии Metricbeat, можно активизировать модули и метрик-сеты напрямую в файле metricbeat.yml, добавив пункты в список metricbeat.modules. Каждый пункт списка начинается с дефиса (-) и состоит из настроек этого модуля. Например:

metricbeat.modules:

#------------------ Memcached Module -----------------------------

- module: memcached

metricsets: ["stats"]

period: 10s

hosts: ["localhost:11211"]

#------------------- MongoDB Module ------------------------------

- module: mongodb

metricsets: ["dbstats", "status"]

period: 5s

270438.png 

Можно указать модуль несколько раз с различными периодами использования для одного или нескольких метрик-сетов. Например:

#------- Couchbase Module -----------------------------

- module: couchbase

metricsets: ["bucket"]

period: 15s

hosts: ["localhost:8091"]

 

- module: couchbase

metricsets: ["cluster", "node"]

period: 30s

hosts: ["localhost:8091"]

Общие настройки

Этот раздел содержит параметры конфигурации и некоторые общие настройки, контролирующие поведение Metricbeat.

Рассмотрим некоторые из этих параметров/настроек.

* name — название отправителя, который публикует сетевые данные. По умолчанию для этого поля указано hostname:

name: "dc1-host1"

• * tags — список тегов, которые будут включены в поле tags для каждого события, доставляемого с помощью Metricbeat. Благодаря тегам можно легко группировать серверы по различным логическим свойствам, а также легко фильтровать события в Kibana и Logstash:

tags: ["staging", "web-tier","dc1"]

• * max_procs — максимальное количество ЦП, которые могут быть использованы одновременно. По умолчанию задействуются все логические ЦП, доступные в системе:

max_procs: 2

Конфигурация вывода

Этот раздел используется для настройки выводов, в которые должны доставляться события. Возможна отправка в один или несколько выводов одновременно. Доступные источники вывода: Elasticsearch, Logstash, Redis, Kafka, файл или консоль.

Некоторые из возможных источников вывода могут быть настроены, как показано ниже.

* elasticsearch — используется для отправки событий напрямую в Elasticsearch.

Образец конфигурации вывода в Elasticsearch выглядит следующим образом:

output.elasticsearch:

  enabled: true

  hosts: ["localhost:9200"]

С помощью настройки enabled можно включать или выключать вывод. Параметр hosts принимает один или несколько узлов/серверов Elasticsearch. Множественные хосты могут быть указаны для достижения устойчивости при сбоях. В случаях, когда настроено несколько хостов, события доставляются по этим узлам в циклическом порядке. Если настроена авторизация Elasticsearch, данные аутенфикации могут быть введены под параметрами username и password:

output.elasticsearch:

  enabled: true

  hosts: ["localhost:9200"]

  username: "elasticuser"

  password: "password"

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

output.elasticsearch:

  enabled: true

  hosts: ["localhost:9200"]

  pipeline: "ngnix_log_pipeline"

Индекс по умолчанию, в который записываются данные, имеет формат metricbeat-%{[beat.version]}-%{+yyyy.MM.dd}. Таким образом, каждый день будет создаваться новый индекс. Например, сегодня 2 декабря 2017 года, и все события будут размещены в индексе metricbeat-6.0.0-2017-12-02. Вы можете изменить название индекса или шаблон, используя параметр index. В следу­ющем фрагменте конфигурации новый индекс создается каждый месяц:

output.elasticsearch:

  hosts: ["http://localhost:9200"]

  index: "metricbeat-%{[beat.version]}-%{+yyyy.MM}"

Используя параметр indices, вы можете распределять события по индексам в зависимости от выбранных условий. В следующем фрагменте кода указано, что, если сообщение содержит строку DEBUG, оно будет помещено в индекс debug-%{+yyyy.MM.dd}. Если сообщение содержит строку ERR, оно будет помещено в индекс error-%{+yyyy.MM.dd}. Если сообщение не содержит таких строк, оно будет помещено в индекс logs-%{+yyyy.MM.dd}, как определено в параметре index:

output.elasticsearch:

  hosts: ["http://localhost:9200"]

  index: "logs-%{+yyyy.MM.dd}"

  indices:

  - index: "debug-%{+yyyy.MM.dd}"

    when.contains:

    message: "DEBUG"

  - index: "error-%{+yyyy.MM.dd}"

    when.contains:

    message: "ERR"

268975.png 

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

setup.dashboards.enabled: false

setup.template.enabled: false

В качестве альтернативы вы можете указать следующие параметры в файле metricbeat.yml: setup.template.name и setup.template.pattern. В противном случае Metricbeat не запустится.

• logstash — используется для отправки событий в Logstash.

269016.png 

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

Пример конфигурации вывода в Logstash выглядит следующим образом:

output.logstash:

  enabled: true

  hosts: ["localhost:5044"]

С помощью настройки enabled возможно включать или выключать вывод. Параметр hosts принимает один или несколько узлов/серверов Logstash. Множественные хосты можно указывать для достижения устойчивости при сбоях. Если настроенный хост не отвечает, тогда события будут отправлены в один из других перечисленных в настройках хостов. В случаях, когда настроено несколько хостов, события доставляются по этим узлам в случайном порядке. Для включения балансировки нагрузки событий на хосты Logstash установите флаг loadbalance на значение true:

output.logstash:

  hosts: ["localhost:5045", "localhost:5046"]

  loadbalance: true

• console — применяется для отправки событий в stdout. События будут записаны в формате JSON. Предназначено для тестирования или отладки.

Пример конфигурации консоли выглядит следующим образом:

output.console:

  enabled: true

  pretty: true

Логирование

Этот раздел содержит настройки вывода логирования Metricbeat. Система может записывать логи в syslog или циклические лог-файлы. Если не было задано четких настроек логирования, в системах Windows будет использоваться вывод в файл, а в системах Linux и OS X — вывод syslog.

Пример конфигурации выглядит следующим образом:

logging.level: debug

logging.to_files: true

logging.files:

  path: C:\logs\metricbeat

  name: metricbeat.log

  keepfiles: 10

Некоторые из настроек конфигурации:

level — для указания уровня логирования;

• to_files — для записи всех логов в файл. Файлы подлежат ротации. Это значение по умолчанию;

• to_syslog — для записи логов в syslog значение должно быть равным true;

files.path, files.name и files.keepfiles — используются для указания местонахождения файлов, их названий и количества недавно прошедших ротацию лог-файлов для хранения на диске.

Сбор системных метрик

Для мониторинга и сбора серверных метрик в Metricbeat предусмотрен модуль system. Он предоставляет следующие метрик-сеты для сбора серверных метрик.

core — статистика использования для каждого ядра ЦП.

• cpu — статистика ЦП.

• diskio — I/O-метрики диска из операционной системы. Для каждого диска, монтированного в системе, создается одно событие.

• filesystem — статистика файловой системы. Для каждой файловой системы создается одно событие.

• process — статистика процессов. По событию на каждый процесс.

• process_summary — высокоуровневая статистика по выполняемым процессам.

• fsstat — общая статистика файловой системы.

• load — статистика загрузки.

• memory — статистика памяти.

• network — I/O-метрики сети из операционной системы. По событию для каждого сетевого интерфейса.

• socket — записывает событие для каждого нового TCP-сокета. Доступен только на платформе Linux, для его работы необходим kernel версии 2.6.14 или новее.

Некоторые из метрик-сетов предоставляют возможность настраивать возвращаемые метрики. Например, метрик-сет cpu предоставляет конфигурацию cpu.metrics для контроля метрик, полученных от ЦП. Однако такие метрик-сеты, как memory и diskio, не предоставляют никаких возможностей настройки. В отличие от остальных модулей, которые можно мониторить с других серверов путем соответствующей настройки хостов (не самый лучший вариант), модули system являются локальными для сервера и могут собирать метрики только в соответствующих хостах.

269049.png 

Полный список полей по метрик-сетам, которые экспортируются модулем system, можно найти по следующей ссылке: https://www.elastic.co/guide/en/beats/metricbeat/current/exported-fields-system.html.

Запуск Metricbeat с модулем system

Используем Metricbeat для сбора системных метрик. Убедитесь, что запущены Kibana 6.0 и Elasticsearch 6.0.

1. Замените содержимое файла metricbeat.yml следующей конфигурацией и сохраните файл:

############### Metricbeat Configuration Example ################

#============== Modules configuration =========================

 

metricbeat.config.modules:

  # Glob pattern for configuration loading

  path: ${path.config}/modules.d/*.yml

 

  # Set to true to enable config reloading

  reload.enabled: false

 

  # Period on which files under path should be checked for changes

  #reload.period: 10s

 

#=========== Elasticsearch template setting =================

 

setup.template.settings:

  index.number_of_shards: 1

  index.codec: best_compression

  #_source.enabled: false

 

#=================== General

Settings===============================

name: metricbeat_inst1

 

tags: ["system-metrics", "localhost"]

 

fields:

  env: test-env

 

#============================== Dashboards

===========================

setup.dashboards.enabled: true

 

#============================== Kibana Settings

===========================

setup.kibana:

  host: "localhost:5601"

  #username: "elastic"

  #password: "changeme"

#-------------------------- Elasticsearch output Settings ---------

------------

output.elasticsearch:

  # Array of hosts to connect to.

  hosts: ["localhost:9200"]

  #username: "elastic"

  #password: "changeme"

269079.png 

Параметр setup.dashboards.enabled: true загрузит образцы панелей управления в индекс Kibana во время запуска; для загрузки используются Kibana API. Если у вас настроена безопасность для Elasticsearch и Kibana, убедитесь, что со строк username и password снят комментарий и заданы необходимые значения.

2. По умолчанию модуль system активизирован. Убедитесь в этом, выполнив следующую команду:

Windows:

D:\packt\metricbeat-6.0.0-windows-x86_64>metricbeat.exe modules

enable system

Module system is already enabled

 

Linux:

[locationOfMetricBeat]$./metricbeat modules enable system

Module system is already enabled

3. Вы можете проверить активизированные метрик-сеты для модуля system, открыв файл system.yml, который находится в папке modules.d:

#system.yml

- module: system

  period: 10s

  metricsets:

    - cpu

    #- load

    - memory

    - network

    - process

    - process_summary

    #- core

    #- diskio

    #- socket

  processes: ['.*']

  process.include_top_n:

  by_cpu: 5 # include top 5 processes by CPU

  by_memory: 5 # include top 5 processes by memory

 

- module: system

  period: 1m

  metricsets:

    - filesystem

    - fsstat

  processors:

  - drop_event.when.regexp:

    system.filesystem.mount_point:

'^/(sys|cgroup|proc|dev|etc|host|lib)($|/)'

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

Активизированы следующие метрик-сеты: cpu, memory, network, process, process_summary, filesystem, fsstats.

4. Запустите Metricbeat, выполнив такую команду:

Windows:

D:\packt\metricbeat-6.0.0-windows-x86_64>metricbeat.exe -e

 

Linux:

[locationOfMetricBeat]$./metricbeat -e

Как только Metricbeat запущен, он загружает образцы панелей управления Kibana и начинает отправлять метрики в Elasticsearch. Для проверки запустите следующую команду:

curl -X GET 'http://localhost:9200/_cat/indices?v=&format=json'

Пример ответа:

[

  {

    "health": "yellow",

    "status": "open",

    "index": "metricbeat-6.0.0-2017.11.26",

    "uuid": "w2WoP2IhQ9eG7vSU_HmgnA",

    "pri": "1",

    "rep": "1",

    "docs.count": "29",

    "docs.deleted": "0",

    "store.size": "45.3kb",

    "pri.store.size": "45.3kb"

  },

  {

    "health": "yellow",

    "status": "open",

    "index": ".kibana",

    "uuid": "sSzeYu-YTtWR8vr2nzKrbg",

    "pri": "1",

    "rep": "1",

    "docs.count": "108",

    "docs.deleted": "59",

    "store.size": "289.3kb",

    "pri.store.size": "289.3kb"

  }

]

 

curl -X GET 'http://localhost:9200/_cat/indices?v'

 

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

yellow open metricbeat-6.0.0-2017.11.26 w2WoP2IhQ9eG7vSU_HmgnA 1 1 29 0 45.3kb 45.3kb

yellow open .kibana sSzeYu-YTtWR8vr2nzKrbg 1 1 108 59 289.3kb 289.3kb

Указание псевдонимов

Elasticsearch позволяет пользователям создавать псевдонимы — виртуальное название индекса, которое можно применять для ссылки на один или несколько индексов. API псевдонимов индексов Elasticsearch позволяет предоставить индексу псевдоним, который будет автоматически конвертироваться в реальное название индекса всеми API.

Например, мы хотим выполнить запрос для набора схожих индексов. Вместо того чтобы указывать в запросе название каждого индекса, мы можем использовать псевдонимы. Псевдоним будет указывать на все индексы, и вы сможете выполнить запрос по ним. Это очень удобно: мы станем добавлять определенные индексы динамически на регулярной основе таким образом, чтобы приложение или пользователь, выполняющие запрос, не волновались о включении этих индексов в запрос. Для этого потребуется обновить индекс псевдонимом (указывает вручную администратор или задается во время создания индекса).

Предположим, IT-администратор создал псевдоним, который ссылается на все индексы, содержащие метрики по определенному месяцу. Например, как указано в следующем фрагменте кода, псевдоним с названием november_17_metrics создан для всех индексов шаблона metricbeat-6.0.0-2017.11.*, то есть индексов Metricbeat за каждый день ноября:

curl -X POST http://localhost:9200/_aliases -H 'content-type:

application/json' -d '{

  "actions":

  [

    {"add":{ "index" : "metricbeat-6.0.0-2017.11.*", "alias":

    "november_17_metrics"} }

  ]

}'

Теперь, используя псевдоним november_17_metrics, можно выполнить запрос по всем индексам шаблона metricbeat-6.0.0-2017.11.*:

curl -X GET http://localhost:9200/november_17_metrics/_search

В следующем примере псевдоним sales создан для индексов it_sales и retail_sales. В будущем при создании нового индекса продаж он также будет относиться к индексу sales. Следовательно, конечный пользователь/приложение может указывать конечную точку sales для запросов по всем данным о продажах:

curl -X POST http://localhost:9200/_aliases -d '{

"actions" : [

  { "add" : { "index" : "it_sales", "alias" : "sales" } },

  { "add" : { "index" : "retail_sales", "alias" : "sales" } }

] }

Для удаления псевдонима индекса используйте действие remove в API псевдонимов:

curl -X POST http://localhost:9200/_aliases -d '

{ "actions" : [ { "remove" : { "index" : "retail_sales", "alias" : "sales"

} }] }

Визуализация системных метрик в Kibana

Для визуализации системных метрик в Kibana выполните следующие шаги.

1. Перейдите по ссылке http://localhost:5601 и откройте Kibana.

2. Щелкните на ссылке Dashboard (Панель управления), которая находится в левом навигационном меню, и выберите [Metricbeat System] Overview или [Metricbeat System] Host Overview (рис. 11.3).

11_03.tif 

Рис. 11.3

[Metricbeat System] Overview. Эта панель управления предоставляет обзор всех систем, находящихся под мониторингом. Поскольку у нас в распоряжении только один хост, мы увидим количество хостов, равное 1 (рис. 11.4).

11_04.tif 

Рис. 11.4

[Metricbeat System] Host Overview. Эта панель управления полезна для поиска подробных метрик по выбранным системам/хостам. Для фильтрации метрик по определенному хосту добавьте соответствующий критерий поиска/фильтрации на панели поиска/запроса. На рис. 11.5 критерий поиска — beat.name:metricbeat_inst1. Вы можете использовать любой атрибут, который позволяет уникально идентифицировать систему/хост. Например, можно добавить фильтр на основе beat.hostname.

Поскольку метрик-сеты diskio и load были отключены в конфигурации системного модуля, мы увидим пустые визуализации для системной нагрузки и I/O-данных по диску (рис. 11.6).

Для просмотра панели управления в реальном времени найдите настройки в правом верхнем углу и выберите необходимый интервал обновления (рис. 11.7).

11_05.tif 

Рис. 11.5

11_06.tif 

Рис. 11.6

11_07.tif 

Рис. 11.7

270471.png 

Для просмотра панели управления в полноэкранном режиме нажмите кнопку Full screen (Полноэкранный режим) вверху навигационной панели. В результате браузер и верхняя навигационная панель будут спрятаны. Для возврата к обычному режиму нажмите кнопку Kibana снизу слева или просто клавишу Esc.

269108.png 

Более подробно об эффективном использовании Kibana для получения развернутой информации о ваших данных рассказывается в главе 7.

Архитектура внедрения

На рис. 11.8 изображена распространенная архитектура внедрения Elastic Stack.

Существует три возможных архитектуры.

Отправка операционных метрик напрямую в Elasticsearch. Как видно на схеме, на пограничных серверах, с которых необходимо доставлять операционные метрики/логи, будут установлены различные компоненты Beats, такие как Metricbeat, Filebeat, Packetbeat и пр. Если не требуется дальнейшая обработка событий, тогда полученные события будут отправлены напрямую в кластер Elasticsearch. Как только данные появляются в Elasticsearch, их можно визуа­лизировать или анализировать с помощью Kibana. В этой архитектуре поток событий будет следующим: Beats—>Elasticsearch—>Kibana.

• Отправка операционных метрик в Logstash. Собранные компонентами Beats (установленными на пограничных серверах) операционные метрики/логи отправляются в Logstash для дальнейшей обработки. После этого обработанные/дополненные события отправляются в Elasticsearch. Для увеличения объема обработки можно масштабировать экземпляры Logstash, например настроить одну часть компонентов Beats так, чтобы отправлять данные в экземпляр Logstash 1, другую часть компонентов — отправлять данные в экземпляр Logstash 2 и т.д. В этой архитектуре поток событий будет следующим: Beats—>Logstash—>Elastic­search—>Kibana.

Отправка операционных метрик в отказоустойчивую очередь. Если события создаются на высокой скорости и Logstash не справляется с нагрузкой, вы можете направить поток данных в отказоустойчивые очереди, такие как Apache Kafka, для предотвращения потерь данных. События встанут в очередь, после чего Logstash сможет обработать их на своей скорости, тем самым можно избежать потери операционных метрик/логов, собранных компонентами Beats. В этой архитектуре поток событий будет следующим: Beats—>Kafka—>Logstash—>Elastic­search—>Kibana.

270509.png 

В версии Logstash 5.x можно настроить отказоустойчивую очередь средствами Logstash. Тем не менее она не имеет такого высокого уровня устойчивости, как Kafka.

280118.png 

Рис. 11.8

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

Резюме

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

Назад: 10. Создание приложения для анализа данных с датчиков
На главную: Предисловие

Тле
Есть противоречия в тексте: "Но начиная с версии 6.0 в пределах индекса допускается хранить только один тип..." и несколькими абзацами ниже: "Индекс логически группирует разные типы документов."