Автор выбралComputer History Museum для получения пожертвования в рамках программыWrite for DOnations.
Вступление
Metricbeat, который является одним из несколькихBeats, который помогает отправлять различные типы данных сервера на серверElastic Stack, представляет собой облегченный отправитель данных, который после установки на ваших серверах периодически собирает системные данные. широкая статистика ЦП и памяти по процессам и отправка данных непосредственно в ваше развертывание Elasticsearch. Этот поставщик заменил более раннийTopbeat в версии 5.0 Elastic Stack.
Другие ритмы, доступные в настоящее время от Elastic:
-
Filebeat: собирает и отправляет файлы журналов.
-
Packetbeat: собирает и анализирует сетевые данные.
-
Winlogbeat: собирает журналы событий Windows.
-
Auditbeat: собирает данные системы аудита Linux и контролирует целостность файлов.
-
Heartbeat: отслеживает доступность сервисов с помощью активного зондирования.
В этом руководстве вы будете использовать Metricbeat для пересылки метрик локальной системы, таких как загрузка ЦП / памяти / диска и использование сети, с сервера CentOS 7 на другой сервер того же типа с установленным Elastic Stack. С этим грузоотправителем вы соберете основные метрики, необходимые для получения текущего состояния вашего сервера.
Предпосылки
Чтобы следовать этому уроку, вам понадобится:
-
Два сервера CentOS 7, настроенные в соответствии с руководствомInitial Server Setup with CentOS 7, включая пользователя без полномочий root с привилегиями sudo и брандмауэр, настроенный с помощью
firewalld
. Чтобы настроитьfirewalld
, следуйте разделу“Configuring a Basic Firewall” в руководствеAdditional Recommended Steps for New CentOS 7 Servers. На одном сервере вы загрузите Elastic Stack; это руководство будет называть его «сервером Elastic Stack». Сервер Elastic Stack, который в этом руководстве будет иметь 4 ГБ ОЗУ и 2 ЦП, будет контролировать ваш второй сервер. Этот второй сервер будет называться «вторым сервером CentOS». -
Elastic Stack, установленный на сервере Elastic Stack, следуя руководствуHow To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on CentOS 7.
[.note] #Note: при установке Elastic Stack вы должны использовать одну и ту же версию для всего стека. В этом руководстве вы будете использовать последние версии всего стека, которыми на момент написания этой статьи являются Elasticsearch 6.7.0, Kibana 6.7.0, Logstash 6.7.0 и Metricbeat 6.7.0.
#
[[step-1 -—- configuring-elasticsearch-to-listen-for-traffic-on-an-external-ip]] == Шаг 1. Настройка Elasticsearch для прослушивания трафика на внешнем IP-адресе
УчебникHow To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on CentOS 7 ограничил доступ Elasticsearch только дляlocalhost
. На практике это происходит редко, так как вам часто приходится следить за многими хостами. На этом шаге вы настроите компоненты Elastic Stack для взаимодействия с внешним IP-адресом.
Войдите на сервер Elastic Stack как пользователь без полномочий root:
ssh sammy@Elastic_Stack_server_ip
Используйте предпочитаемый текстовый редактор для редактирования основного файла конфигурации Elasticsearch,elasticsearch.yml
. В этом руководстве будет использоватьсяvi
:
sudo vi /etc/elasticsearch/elasticsearch.yml
Найдите следующий раздел и измените его так, чтобы Elasticsearch прослушивал все интерфейсы. Войдите в режим вставки, нажавi
, затем добавьте следующий выделенный элемент:
/etc/elasticsearch/elasticsearch.yml
...
network.host: 0.0.0.0
...
Адресу0.0.0.0
присваиваются определенные значения в ряде контекстов. В этом случае0.0.0.0
означает «любой IPv4-адрес вообще».
Когда вы закончите, нажмитеESC
, чтобы выйти из режима вставки, затем нажмите:wq
иENTER
, чтобы сохранить и выйти из файла. Чтобы узнать больше о текстовом редакторе vi и его преемнике Vim, ознакомьтесь с нашим руководством поInstalling and Using the Vim Text Editor on a Cloud Server. После сохранения и выхода из файла перезапустите службу Elasticsearch с помощьюsystemctl
, чтобы применить новые настройки:
sudo systemctl restart elasticsearch
Теперь разрешите доступ к порту Elasticsearch с вашего второго сервера CentOS. Для настройки доступа, поступающего с определенных IP-адресов или подсетей, используйте функциюrich rulefirewalld
:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="second_centos_server_ip/32" port protocol="tcp" port="9200" accept'
Богатые правила позволяют создавать более сложные и настраиваемые правилаfirewalld
, чтобы получить больший контроль над вашим брандмауэром. В этой команде вы добавляете правило, которое принимает трафикipv4
отsource
, который вы установили в качестве IP-адреса второго сервера CentOS, наport
9200
вашего сервера Elastic Stack.
Затем перезагрузитеfirewalld
, чтобы активировать новое правило:
sudo firewall-cmd --reload
Повторите эти команды для каждого из ваших серверов, если у вас их больше двух. Если ваши серверы находятся на одном и том жеnetwork, вы можете разрешить доступ, используя одно правило для всех хостов в сети. Для этого вам нужно заменить/32
после IP-адреса на более низкое значение, например/24
.
Далее проверьте соединение. Войдите на второй сервер CentOS как пользователь без полномочий root:
ssh sammy@second_centos_server_ip
Используйте командуcurl
, чтобы проверить соединение с сервером Elastic Stack:
curl Elastic_Stack_server_ip:9200
Вы получите вывод, подобный следующему:
Output{
"name" : "tl5Is5f",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "W9AcSNWHQ3mYs2uE8odklA",
"version" : {
"number" : "6.7.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "3bd3e59",
"build_date" : "2019-03-06T15:16:26.864148Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
Теперь, когда вы знаете, что соединение работает, вы готовы отправлять метрики на ваш сервер Elastic Stack.
[[step-2 -—- install-and-configuring-metricbeat-on-the-elastic-stack-server]] == Шаг 2 - Установка и настройка Metricbeat на Elastic Stack Server
На следующих двух шагах вы сначала установите Metricbeat на сервере Elastic Stack и импортируете все необходимые данные, затем установите и настроите клиент на втором сервере CentOS.
Войдите на сервер Elastic Stack как пользователь без полномочий root:
ssh sammy@Elastic_Stack_server_ip
Поскольку вы ранее настраивали репозитории Elasticsearch в предварительном условии, вам нужно только установить Metricbeat:
sudo yum install metricbeat
После завершения установки загрузите шаблон индекса в Elasticsearch. Elasticsearch index - это набор документов со схожими характеристиками. Определенные имена идентифицируют каждый индекс, который Elasticsearch будет использовать для ссылки на индексы при выполнении различных операций. Ваш сервер Elasticsearch автоматически применяет шаблон индекса при создании нового индекса.
Чтобы загрузить шаблон, используйте следующую команду:
sudo metricbeat setup --template -E 'output.elasticsearch.hosts=["localhost:9200"]'
Вы увидите следующий вывод:
OutputLoaded index template
Metricbeat поставляется с примерами инструментальных панелей Kibana, визуализаций и поисков для визуализации данных Metricbeat в Kibana. Прежде чем вы сможете использовать информационные панели, вам нужно создать шаблон индекса и загрузить информационные панели в Kibana.
Чтобы загрузить шаблоны, используйте следующую команду:
sudo metricbeat setup -e -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601
Вы увидите вывод, который выглядит следующим образом:
Output...
2019-03-20T09:51:32.096Z INFO instance/beat.go:281 Setup Beat: metricbeat; Version: 6.7.0
2019-03-20T09:51:32.136Z INFO add_cloud_metadata/add_cloud_metadata.go:323 add_cloud_metadata: hosting provider type detected as digitalocean, metadata={"instance_id":"133130541","provider":"digitalocean","region":"fra1"}
2019-03-20T09:51:32.137Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200
2019-03-20T09:51:32.137Z INFO [publisher] pipeline/module.go:110 Beat name: elastic
2019-03-20T09:51:32.138Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200
2019-03-20T09:51:32.140Z INFO elasticsearch/client.go:721 Connected to Elasticsearch version 6.7.0
2019-03-20T09:51:32.148Z INFO template/load.go:130 Template already exists and will not be overwritten.
2019-03-20T09:51:32.148Z INFO instance/beat.go:894 Template successfully loaded.
Loaded index template
Loading dashboards (Kibana must be running and reachable)
2019-03-20T09:51:32.149Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200
2019-03-20T09:51:32.150Z INFO elasticsearch/client.go:721 Connected to Elasticsearch version 6.7.0
2019-03-20T09:51:32.151Z INFO kibana/client.go:118 Kibana url: http://localhost:5601
2019-03-20T09:51:56.209Z INFO instance/beat.go:741 Kibana dashboards successfully loaded.
Loaded dashboards
Теперь вы можете запустить Metricbeat:
sudo systemctl start metricbeat
Чтобы с этого момента Metricbeat запускался автоматически при загрузке, используйте командуenable
:
sudo systemctl enable metricbeat
Metricbeat начнет отправлять статистику вашей системы в Elasticsearch.
Чтобы убедиться, что Elasticsearch действительно получает эти данные, запросите индекс Metricbeat с помощью этой команды:
curl -XGET 'http://localhost:9200/metricbeat-*/_search?pretty'
Вы увидите вывод, который выглядит примерно так:
Output...
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 108,
"max_score" : 1.0,
"hits" : [
{
"_index" : "metricbeat-6.7.0-2019.03.20",
"_type" : "doc",
"_id" : "A4mU8GgBKrpxEYMLjJZt",
"_score" : 1.0,
"_source" : {
"@timestamp" : "2019-03-20T09:54:52.481Z",
"metricset" : {
"name" : "network",
"module" : "system",
"rtt" : 125
},
"event" : {
"dataset" : "system.network",
"duration" : 125260
},
"system" : {
"network" : {
"in" : {
"packets" : 59728,
"errors" : 0,
"dropped" : 0,
"bytes" : 736491211
},
"out" : {
"dropped" : 0,
"packets" : 31630,
"bytes" : 8283069,
"errors" : 0
},
"name" : "eth0"
}
},
"beat" : {
"version" : "6.7.0",
"name" : "elastic",
"hostname" : "elastic"
},
...
Строка"total" : 108,
указывает, что Metricbeat нашла 108 результатов поиска для этого конкретного показателя. Любое количество результатов поиска означает, что Metricbeat работает; если ваш вывод показывает 0 всего попаданий, вам нужно будет проверить настройки на наличие ошибок. Если вы получили ожидаемый результат, перейдите к следующему шагу, на котором вы установите Metricbeat на втором сервере CentOS.
[[step-3 -—- install-and-configuring-metricbeat-on-the-second-centos-server]] == Шаг 3 - Установка и настройка Metricbeat на втором сервере CentOS
Выполните этот шаг на всех серверах CentOS, с которых вы хотите отправлять метрики на сервер Elastic Stack. Если у вас также есть серверы Ubuntu, вы можете установить Metricbeat, выполнив шаг 3How To Gather Infrastructure Metrics with Metricbeat on Ubuntu 18.04.
Войдите на свой второй сервер CentOS как пользователь без полномочий root:
ssh sammy@second_centos_server_ip
Компоненты Elastic Stack по умолчанию недоступны через менеджер пакетов yum, но вы можете установить их, добавив хранилище пакетов Elastic.
Все пакеты Elastic Stack подписаны с помощью ключа подписи Elasticsearch, чтобы защитить вашу систему от подделки пакетов. Ваш менеджер пакетов будет доверять пакетам, которые были аутентифицированы с использованием ключа. На этом шаге вы импортируете открытый ключ GPG Elasticsearch и добавите список источников пакета Elastic для установки Metricbeat.
Для начала выполните следующую команду, чтобы загрузить и установить открытый ключ подписи Elasticsearch:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Затем добавьте Elastic-репозиторий. Используйте предпочитаемый вами текстовый редактор, чтобы создать файлelasticsearch.repo
в каталоге/etc/yum.repos.d/
:
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
Когда вы закончите, сохраните и закройте файл.
Затем установите Metricbeat с помощью этой команды:
sudo yum install metricbeat
После завершения установки Metricbeat настройте его для подключения к Elasticsearch. Откройте его конфигурационный файлmetricbeat.yml
:
sudo vi /etc/metricbeat/metricbeat.yml
[.note] #Note: Файл конфигурации Metricbeat имеет формат YAML, а это значит, что отступы очень важны! Убедитесь, что вы не добавляете лишних пробелов при редактировании этого файла.
#
Metricbeat поддерживает множество выходных данных, но вы обычно отправляете события непосредственно в Elasticsearch или в Logstash для дополнительной обработки. Найдите следующий раздел и обновите IP-адрес:
/etc/metricbeat/metricbeat.yml
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["Elastic_Stack_server_ip:9200"]
...
Сохраните и закройте файл.
Вы можете расширить функциональность Metricbeat с помощьюmodules. В этом руководстве вы будете использовать модульsystem
, который позволяет вам отслеживать статистику вашего сервера, такую как использование ЦП / памяти / диска и использование сети.
В этом случае модульsystem
включен по умолчанию. Вы можете увидеть список включенных и отключенных модулей, запустив:
sudo metricbeat modules list
Вы увидите список, подобный следующему:
OutputEnabled:
system
Disabled:
aerospike
apache
ceph
couchbase
docker
dropwizard
elasticsearch
envoyproxy
etcd
golang
graphite
haproxy
http
jolokia
kafka
kibana
kubernetes
kvm
logstash
memcached
mongodb
munin
mysql
nginx
php_fpm
postgresql
prometheus
rabbitmq
redis
traefik
uwsgi
vsphere
windows
zookeeper
Вы можете увидеть параметры модуля в конфигурационном файле/etc/metricbeat/modules.d/system.yml
. В случае с этим руководством вам не нужно ничего менять в конфигурации. Наборы показателей по умолчанию:cpu
,load
,memory
,network
,process
иprocess_summary
. Каждый модуль имеет один или несколько показателей. Метрика - это часть модуля, которая извлекает и структурирует данные. Вместо того, чтобы собирать каждую метрику как отдельное событие, наборы метрик получают список из нескольких связанных метрик в одном запросе к удаленной системе.
Теперь вы можете запустить и включить Metricbeat:
sudo systemctl start metricbeat
sudo systemctl enable metricbeat
Повторите этот шаг на всех серверах, где вы хотите собирать метрики. После этого вы можете перейти к следующему шагу, на котором вы увидите, как перемещаться по некоторым инструментальным панелям Kibana.
[[step-4 -—- explore-kibana-dashboards]] == Шаг 4 - Изучение Kibana Dashboards
На этом этапе вы познакомитесь с Kibana, веб-интерфейсом, который вы установили в разделе «Предварительные условия».
В веб-браузере перейдите на полное доменное имя или общедоступный IP-адрес сервера Elastic Stack. После ввода учетных данных, определенных на шаге 2the Elastic Stack tutorial, вы увидите домашнюю страницу Kibana:
Щелкните ссылкуDiscover на левой панели навигации. На страницеDiscover выберите предопределенный шаблон индексаmeticbeat- *, чтобы увидеть данные Metricbeat. По умолчанию это покажет вам все данные журнала за последние 15 минут. Вы найдете гистограмму и некоторые метрические детали:
Здесь вы можете искать и просматривать свои метрики, а также настраивать свою панель мониторинга. На данный момент, однако, там не будет много, потому что вы только собираете системную статистику со своих серверов.
Используйте левую панель, чтобы перейти на страницуDashboard и найти панель управленияMetricbeat System. Оказавшись там, вы можете найти образцы панелей мониторинга, которые поставляются с модулем Metricbeatsystem
.
Например, вы можете просмотреть краткую информацию обо всех ваших хостах:
Вы также можете нажать на имя хоста и просмотреть более подробную информацию:
У Kibana есть много других функций, таких как построение графиков и фильтров, так что не стесняйтесь исследовать.
Заключение
В этом руководстве вы установили Metricbeat и настроили Elastic Stack для сбора и анализа системных показателей. Metricbeat поставляется с внутреннимиmodules, которые собирают метрики из таких сервисов, как Apache, Nginx, Docker, MySQL, PostgreSQL и других. Теперь вы можете собирать и анализировать метрики ваших приложений, просто включив нужные вам модули.
Если вы хотите узнать больше о мониторинге сервера, посмотритеAn Introduction to Metrics, Monitoring, and Alerting иPutting Monitoring and Alerting into Practice.