Как собрать метрики инфраструктуры с помощью Metricbeat на CentOS 7

Автор выбрал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, наport9200 вашего сервера 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:

Kibana Homepage

Щелкните ссылкуDiscover на левой панели навигации. На страницеDiscover выберите предопределенный шаблон индексаmeticbeat- *, чтобы увидеть данные Metricbeat. По умолчанию это покажет вам все данные журнала за последние 15 минут. Вы найдете гистограмму и некоторые метрические детали:

Discover page

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

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

Например, вы можете просмотреть краткую информацию обо всех ваших хостах:

Syslog Dashboard

Вы также можете нажать на имя хоста и просмотреть более подробную информацию:

Sudo Dashboard

У Kibana есть много других функций, таких как построение графиков и фильтров, так что не стесняйтесь исследовать.

Заключение

В этом руководстве вы установили Metricbeat и настроили Elastic Stack для сбора и анализа системных показателей. Metricbeat поставляется с внутреннимиmodules, которые собирают метрики из таких сервисов, как Apache, Nginx, Docker, MySQL, PostgreSQL и других. Теперь вы можете собирать и анализировать метрики ваших приложений, просто включив нужные вам модули.

Если вы хотите узнать больше о мониторинге сервера, посмотритеAn Introduction to Metrics, Monitoring, and Alerting иPutting Monitoring and Alerting into Practice.

Related