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

Автор выбрал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 для пересылки метрик локальной системы, таких как загрузка процессора / памяти / диска и использование сети, с сервера Ubuntu 18.04 на другой сервер того же типа, на котором установлен Elastic Stack. С этим грузоотправителем вы соберете основные метрики, необходимые для получения текущего состояния вашего сервера.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

  • Два сервера Ubuntu 18.04, настроенные в соответствии сInitial Server Setup Guide for Ubuntu 18.04, включая пользователя без полномочий root с привилегиями sudo и брандмауэр, настроенный с помощьюufw. На одном сервере вы загрузите Elastic Stack; это руководство будет называть его «сервером Elastic Stack». Сервер Elastic Stack будет контролировать ваш второй сервер; этот второй сервер будет называться «вторым сервером Ubuntu».

  • Elastic Stack, установленный на сервере Elastic Stack, следуя руководствуHow To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 18.04.

[.note] #Note: при установке Elastic Stack вы должны использовать одну и ту же версию для всего стека. В этом руководстве вы будете использовать последние версии всего стека, которые на момент написания: Elasticsearch 6.6.2, Kibana 6.6.2, Logstash 6.6.2 и Metricbeat 6.6.2.
#

[[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 Ubuntu 18.04 доступ Elasticsearch ограничен только локальным хостом. На практике это происходит редко, так как вам часто приходится следить за многими хостами. На этом шаге вы настроите компоненты Elastic Stack для взаимодействия с внешним IP-адресом.

Войдите на сервер Elastic Stack как пользователь без полномочий root:

ssh sammy@Elastic_Stack_server_ip

Используйте предпочитаемый текстовый редактор для редактирования основного файла конфигурации Elasticsearch,elasticsearch.yml. В этом руководстве будет использоватьсяnano:

sudo nano /etc/elasticsearch/elasticsearch.yml

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

/etc/elasticsearch/elasticsearch.yml

. . .
network.host: 0.0.0.0
. . .

Адресу0.0.0.0 присваиваются определенные значения в ряде контекстов. В этом случае0.0.0.0 означает «любой IPv4-адрес вообще».

Сохраните и закройтеelasticsearch.yml, нажавCTRL+X, затемY, а затемENTER, если вы используетеnano. Затем перезапустите службу Elasticsearch с помощьюsystemctl, чтобы применить новые настройки:

sudo systemctl restart elasticsearch

Теперь разрешите доступ к порту Elasticsearch со второго сервера Ubuntu. Для этого вы будете использоватьufw:

sudo ufw allow from second_ubuntu_server_ip/32 to any port 9200

Повторите эту команду для каждого из ваших серверов, если у вас их больше двух. Если ваши серверы находятся на одном и том жеnetwork, вы можете разрешить доступ, используя одно правило для всех хостов в сети. Для этого нужно заменить префикс/32 на меньшее значение, например/24. Вы можете найти больше примеров настроек UFW в руководствеUFW Essentials: Common Firewall Rules and Commands.

Далее проверьте соединение. Войдите на второй сервер Ubuntu как пользователь без полномочий root:

ssh sammy@second_ubuntu_server_ip

Используйте командуtelnet, чтобы проверить соединение с сервером Elastic Stack. Эта команда включает связь с другим хостом с использованием протоколаTelnet и может проверять доступность порта в удаленной системе.

telnet Elastic_Stack_server_ip 9200

Вы получите следующий вывод:

OutputTrying Elastic_Stack_server_ip...
Connected to Elastic_Stack_server_ip.
Escape character is '^]'.

Закройте соединение Telnet, нажавCTRL+], а затемCTRL+d. Вы можете ввестиquit, а затем нажатьENTER, чтобы выйти из утилиты Telnet.

Теперь вы готовы отправлять метрики на ваш сервер Elastic Stack.

[[step-2 -—- install-and-configuring-metricbeat-on-the-elastic-stack-server]] == Шаг 2 - Установка и настройка Metricbeat на Elastic Stack Server

На следующих двух шагах вы сначала установите Metricbeat на сервере Elastic Stack и импортируете все необходимые данные, затем установите и настроите клиент на втором сервере Ubuntu.

Войдите на сервер Elastic Stack как пользователь без полномочий root:

ssh sammy@Elastic_Stack_server_ip

Поскольку вы ранее настраивали репозитории Elasticsearch в предварительном условии, вам нужно только установить Metricbeat:

sudo apt install metricbeat

После завершения установки 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-02-15T09:51:32.096Z        INFO    instance/beat.go:281    Setup Beat: metricbeat; Version: 6.6.2
2019-02-15T09: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-02-15T09:51:32.137Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.137Z        INFO    [publisher]     pipeline/module.go:110  Beat name: elastic
2019-02-15T09:51:32.138Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.140Z        INFO    elasticsearch/client.go:721     Connected to Elasticsearch version 6.6.2
2019-02-15T09:51:32.148Z        INFO    template/load.go:130    Template already exists and will not be overwritten.
2019-02-15T09:51:32.148Z        INFO    instance/beat.go:894    Template successfully loaded.
Loaded index template
Loading dashboards (Kibana must be running and reachable)
2019-02-15T09:51:32.149Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.150Z        INFO    elasticsearch/client.go:721     Connected to Elasticsearch version 6.6.2
2019-02-15T09:51:32.151Z        INFO    kibana/client.go:118    Kibana url: http://localhost:5601
2019-02-15T09:51:56.209Z        INFO    instance/beat.go:741    Kibana dashboards successfully loaded.
Loaded dashboards

Теперь вы можете запустить и включить Metricbeat:

sudo systemctl start metricbeat
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.6.2-2019.02.15",
        "_type" : "doc",
        "_id" : "A4mU8GgBKrpxEYMLjJZt",
        "_score" : 1.0,
        "_source" : {
          "@timestamp" : "2019-02-15T09: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.6.2",
            "name" : "elastic",
            "hostname" : "elastic"
          },
...

Строка"total" : 108, указывает, что Metricbeat нашла 108 результатов поиска для этого конкретного показателя. Если ваш вывод показывает 0 всего попаданий, вам нужно будет проверить настройки на наличие ошибок. Если вы получили ожидаемый результат, перейдите к следующему шагу, на котором вы установите Metricbeat на втором сервере Ubuntu.

[[step-3 -—- install-and-configuring-metricbeat-on-the-second-ubuntu-server]] == Шаг 3 - Установка и настройка Metricbeat на втором сервере Ubuntu

Выполните этот шаг на всех серверах Ubuntu, с которых вы хотите отправлять метрики на сервер Elastic Stack.

Войдите на второй сервер Ubuntu как пользователь без полномочий root:

ssh sammy@second_ubuntu_server_ip

Компоненты Elastic Stack недоступны в стандартных репозиториях пакетов Ubuntu. Тем не менее, вы можете установить их с помощью APT после добавления списка источников пакетов Elastic.

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

Для начала выполните следующую команду, чтобы импортировать открытый ключ GPG Elasticsearch в APT:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Затем добавьте список источников Elastic в каталогsources.list.d, где APT будет искать новые источники:

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

Затем обновите списки пакетов, чтобы APT прочитал новый исходный код Elastic:

sudo apt update

Затем установите Metricbeat с помощью этой команды:

sudo apt install metricbeat

После завершения установки Metricbeat настройте его для подключения к Elasticsearch. Откройте его конфигурационный файлmetricbeat.yml:

sudo nano /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