Из предыдущей главы вы узнали, как эффективно запускать Elastic Stack в рабочей среде и каким правилам рекомендуется следовать при работе с Elastic Stack.
В этой главе рассказывается, как использовать платформу Beats для мониторинга серверной инфраструктуры. Мы детально рассмотрим Metricbeat — компонент Beats, который помогает IT-администраторам и командам поддержки мониторить свои приложения и серверную инфраструктуру, а также оперативно реагировать в случае неполадок или недоступности сервера.
В этой главе мы разберем следующие темы.
• Компонент Beats — Metricbeat, который используется для сбора метрик в системах и приложениях.
• Установка и настройка Metricbeat.
• Архитектура внедрения.
Metricbeat — это легковесный поставщик для периодического сбора метрик в операционных системах и сервисах, запущенных на ваших серверах. Он помогает мониторить систему путем сбора метрик из нее, а также таких сервисов, как Apache, MondoDB, Redis и пр., запущенных на выбранном сервере. Metricbeat может передавать собранные метрики напрямую в Elasticsearch или отправлять в Logstash, Redis или Kafka. Для мониторинга сервисов Metricbeat установлен на пограничный сервер; также есть возможность сбора метрик и с удаленного сервера. Тем не менее рекомендуется устанавливать Metricbeat на тех серверах, на которых запущены сервисы.
Перейдите по ссылке https://www.elastic.co/downloads/beats/metricbeat и скачайте файл ZIP/TAR в зависимости от вашей операционной системы, как показано на рис. 11.1. Установка Metricbeat проста и понятна.
Рис. 11.1
Версии Beats 6.0.х совместимы с Elasticsearch 5.6.х и 6.0.х и Logstash версий 5.6.х и 6.0.х. Полную схему совместимости вы можете найти по ссылке https://www.elastic.co/support/matrix#matrix_compatibility. Прежде чем рассматривать примеры использования Elasticsearch и Logstash совместно с Beats в этой главе, убедитесь, что у вас установлены совместимые версии.
Распакуйте скачанный файл. После распаковки перейдите в созданную папку, как показано в следующем фрагменте кода:
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
Если в вашей системе отключено выполнение скриптов, вам необходимо настроить нужные политики для текущей сессии таким образом, чтобы вышеописанный скрипт был успешно выполнен. Например:
PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-metricbeat.ps1
Распакуйте пакет tar.gz и перейдите в созданную папку, как показано ниже:
$> tar -xzf metricbeat-6.0.0-linux-x86_64.tar.gz
$>cd metricbeat
Для установки с использованием 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.
Рис. 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.yml, который использует синтаксис YAML.
Файл metricbeat.yml содержит следующую информацию:
• конфигурацию модуля;
• общие настройки;
• настройки вывода;
• настройки обработки;
• настройки пути;
• настройки панели управления;
• настройки сбора данных.
Рассмотрим некоторые из этих сведений.
Файл metricbeat.yml будет присутствовать в папке установки только в случае, если были использованы файлы .zip или .tar. Если для установки были использованы файлы DEB или RPM, файл будет находиться в папке /etc/metricbeat.
Metricbeat поставляется в комплекте с различными модулями. Они призваны собирать метрики из системы и приложений, таких как Apache, MongoDB, Redis, MySQL и др.
Metricbeat предоставляет два способа активизации модулей и метрик-сетов:
• активизацию конфигураций модулей в папке modules.d;
• активизацию конфигураций модулей в файле metricbeat.yml.
Папка 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 показывает все доступные модули, а также демонстрирует список активных/неактивных на данный момент модулей.
Если модуль неактивен, то в папке 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
Для включения динамической перезагрузки конфигурации укажите значение 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, можно активизировать модули и метрик-сеты напрямую в файле 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
Можно указать модуль несколько раз с различными периодами использования для одного или нескольких метрик-сетов. Например:
#------- 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"
После того как параметр index изменен, отключите шаблоны и панели управления, добавив следующие настройки:
setup.dashboards.enabled: false
setup.template.enabled: false
В качестве альтернативы вы можете указать следующие параметры в файле metricbeat.yml: setup.template.name и setup.template.pattern. В противном случае Metricbeat не запустится.
• logstash — используется для отправки событий в Logstash.
Для использования 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 являются локальными для сервера и могут собирать метрики только в соответствующих хостах.
Полный список полей по метрик-сетам, которые экспортируются модулем system, можно найти по следующей ссылке: https://www.elastic.co/guide/en/beats/metricbeat/current/exported-fields-system.html.
Используем 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"
Параметр 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 выполните следующие шаги.
1. Перейдите по ссылке http://localhost:5601 и откройте Kibana.
2. Щелкните на ссылке Dashboard (Панель управления), которая находится в левом навигационном меню, и выберите [Metricbeat System] Overview или [Metricbeat System] Host Overview (рис. 11.3).
Рис. 11.3
[Metricbeat System] Overview. Эта панель управления предоставляет обзор всех систем, находящихся под мониторингом. Поскольку у нас в распоряжении только один хост, мы увидим количество хостов, равное 1 (рис. 11.4).
Рис. 11.4
[Metricbeat System] Host Overview. Эта панель управления полезна для поиска подробных метрик по выбранным системам/хостам. Для фильтрации метрик по определенному хосту добавьте соответствующий критерий поиска/фильтрации на панели поиска/запроса. На рис. 11.5 критерий поиска — beat.name:metricbeat_inst1. Вы можете использовать любой атрибут, который позволяет уникально идентифицировать систему/хост. Например, можно добавить фильтр на основе beat.hostname.
Поскольку метрик-сеты diskio и load были отключены в конфигурации системного модуля, мы увидим пустые визуализации для системной нагрузки и I/O-данных по диску (рис. 11.6).
Для просмотра панели управления в реальном времени найдите настройки в правом верхнем углу и выберите необходимый интервал обновления (рис. 11.7).
Рис. 11.5
Рис. 11.6
Рис. 11.7
Для просмотра панели управления в полноэкранном режиме нажмите кнопку Full screen (Полноэкранный режим) вверху навигационной панели. В результате браузер и верхняя навигационная панель будут спрятаны. Для возврата к обычному режиму нажмите кнопку Kibana снизу слева или просто клавишу Esc.
Более подробно об эффективном использовании 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—>Elasticsearch—>Kibana.
• Отправка операционных метрик в отказоустойчивую очередь. Если события создаются на высокой скорости и Logstash не справляется с нагрузкой, вы можете направить поток данных в отказоустойчивые очереди, такие как Apache Kafka, для предотвращения потерь данных. События встанут в очередь, после чего Logstash сможет обработать их на своей скорости, тем самым можно избежать потери операционных метрик/логов, собранных компонентами Beats. В этой архитектуре поток событий будет следующим: Beats—>Kafka—>Logstash—>Elasticsearch—>Kibana.
В версии Logstash 5.x можно настроить отказоустойчивую очередь средствами Logstash. Тем не менее она не имеет такого высокого уровня устойчивости, как Kafka.
Рис. 11.8
В указанных выше архитектурах можно выполнять простое масштабирование вверх или вниз для реализаций Elasticsearch, Logstash и Kibana, в зависимости от сферы применения.
В этой главе мы подробно рассмотрели еще один компонент Beats под названием Metricbeat. Мы разобрались, как установить и настроить Metricbeat так, чтобы он мог отправлять операционные метрики в Elasticsearch. Мы также рассмотрели различные архитектуры внедрения для создания решений мониторинга в реальном времени на базе Elastic Stack, которые могут быть полезны для мониторинга серверов и приложений. Это поможет IT-администраторам и сотрудникам поддержки приложений получать подробную информацию о поведении приложений и серверов и позволит им оперативно реагировать в случае выхода из строя инфраструктуры.