Metricbeat – это компонент Elastic Stack, который позволяет собирать данные производительности системы или же приложений, которые установлены в операционной системе. MetricBeat поддерживает большое количество модулей. В этой публикации я покажу, как осуществлять сбор метрик через Metricbeat для Linux хоста, а также нескольких приложений – Apache и MySQL.
Примеры развертывания кластера Elasticsearch и хоста с Kibana уже есть в моём блоге. Можете использовать их в качестве опорных руководств по развертывания соответствующих компонентов.
В качестве подопытной операционной системы я буду использовать Rocky Linux 9.3
Схема решения
Логическая схеме решения приведена ниже.
Схема ниже отображает физическую топологию решения.
Подготовка Apache
Установим пакет httpd через менеджер пакетов:
sudo dnf install httpd
После установки нужно включить автоматический запуск и запустить сервис:
sudo systemctl enable httpd
sudo systemctl start httpd
Включим модуль отображения статистики. Для этот откройте конфигурационный файл httpd:
sudo nano /etc/httpd/conf/httpd.conf
Затем добавьте в него следующую конфигурацию:
<Location "/server-status">
SetHandler server-status
Require ip 127.0.0.1
</Location>
Перезапустите сервис httpd:
sudo systemctl restart httpd
Подготовка MySQL
Для сервера баз данных MySQL сначала нужно установить пакет:
sudo dnf install mysql mysql-server
Активируем и запустим сервис:
sudo systemctl enable mysqld
sudo systemctl start mysqld
Поскольку для настройки модуля Metricbeat для mysql необходимо указывать комбинацию логина и пароля для подключения к серверу, то зададим пароль для пользователя root:
mysql_secure_installation
На этапе ввода пароля пользователя root укажите его пароль:
Для производственной среды настоятельно рекомендую создавать отдельного пользователя для подключения к MySQL.
Предварительная подготовка сервера MySQL завершена.
Настройка Metricbeat
Процесс настройки на стороне хоста с Metricbeat выглядит следующим образом:
1. Необходимо установить пакет Metricbeat.
2. Активировать модули для Apache и MySQL:
sudo metricbeat modules enable apache mysql
[root@tst05 roman]# metricbeat modules enable apache mysql
Enabled apache
Enabled mysql
[root@tst05 roman]#
3. Откройте на редактирование конфигурационный файл сервиса Metricbeat:
sudo nano /etc/metricbeat/metricbeat.yml
4. Поскольку я буду отправлять данные непосредственно в Elasticsearch, то пеперь необходимо указать параметры подключения. Также я бы хотел автоматически создать в Kibana набор дашбордов. Пример моего конфигурационного файла:
# =========================== 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
# ======================= Elasticsearch template setting =======================
setup.template.settings:
index.number_of_shards: 1
index.codec: best_compression
#_source.enabled: false
# ================================== General ===================================
tags: ["apache", "mysql"]
# ================================= Dashboards =================================
# These settings control loading the sample dashboards to the Kibana index. Loading
# the dashboards is disabled by default and can be enabled either by setting the
# options here or by using the `setup` command.
setup.dashboards.enabled: true
# =================================== Kibana ===================================
# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:
host: "192.168.56.36:5601"
protocol: "https"
ssl:
verification_mode: "none"
username: "elastic"
password: "rHb1w-s4lD9bZvuLXqp0"
# ================================== Outputs ===================================
# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["192.168.56.40:9200","192.168.56.37:9200"]
# Performance preset - one of "balanced", "throughput", "scale",
# "latency", or "custom".
preset: balanced
# Protocol - either `http` (default) or `https`.
protocol: "https"
ssl:
verification_mode: "none"
# Authentication credentials - either API key or username/password.
username: "elastic"
password: "rHb1w-s4lD9bZvuLXqp0"
# Configure processors to enhance or manipulate events generated by the beat.
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
Поскольку в тестовой среде я использую самоподписанный сертификат, то я пропускаю шаг проверки SSL сертификата.
По умолчанию создаются все дашборды. Можно создать только отдельные дашборды.
5. Теперь скорректируем файл конфигурации модуля Apache для Metricbeat:
sudo nano /etc/metricbeat/modules.d/apache.yml
# Module: apache
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/8.13/metricbeat-module-apache.html
- module: apache
metricsets:
- status
period: 10s
hosts: ["http://127.0.0.1"]
#username: "user"
#password: "secret"
6. Далее скорректируем файл конфигурации модуля MySQL для Metricbeat. Необходимо будет указать учетные данные для подключения к серверу MySQL:
sudo nano /etc/metricbeat/modules.d/mysql.yml
# Module: mysql
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/8.13/metricbeat-module-mysql.html
- module: mysql
metricsets:
- status
# - galera_status
- performance
# - query
period: 10s
# Host DSN should be defined as "user:pass@tcp(127.0.0.1:3306)/"
# or "unix(/var/lib/mysql/mysql.sock)/",
# or another DSN format supported by <https://github.com/Go-SQL-Driver/MySQL/>.
# The username and password can either be set in the DSN or using the username
# and password config options. Those specified in the DSN take precedence.
hosts: ["root:Qwerty123@tcp(127.0.0.1:3306)/"]
# Username of hosts. Empty by default.
#username: root
# Password of hosts. Empty by default.
#password: secret
7. Перезапустите сервис Metricbeat:
sudo systemctl restart metricbeat
Проверка
Настало время выполнить проверку нашего стенда:
1. Сначала проверим – создались ли дашборды в Kibana:
https://192.168.56.36:5601/app/dashboards
2. Теперь проверим дашборд для Linux хоста – “[Metricbeat System] Host overview ECS”:
3. Далее проверим дашборд Apache – “[Metricbeat Apache] Overview ECS”.
4. Заключительным шагом проверим дашборд для MySQL – “[Metricbeat MySQL] Database Overview”:
Если что-то пошло не так
В ходе настройки и отладки мне было достаточно просмотра журналов сервиса Metricbeat:
sudo journalctl -ru metricbeat
Сбор метрик через Metricbeat: 1 комментарий
понятно