Как анализировать системные показатели с InfluxDB на CentOS 7

Вступление

InfluxDB - это база данных временных рядов, метрик и аналитики. Базы данных временных рядов предназначены для решения проблемы хранения данных, полученных в результате последовательных измерений, выполненных в течение определенного периода времени. Эти данные могут состоять из таких элементов, как системные метрики (например, загрузка процессора и памяти) и метрики приложения (например, ошибки приложения и вызовы конечной точки REST).

Чем дольше работает система, тем больше объем накопленных данных. InfluxDB предоставляет решение для эффективного хранения этих данных. Он нацелен на варианты использования для DevOps, метрик, данных датчиков, а также мониторинга и аналитики в реальном времени. Используя InfluxDB, вы можете быстро создать мощную платформу для мониторинга в реальном времени, которая также обеспечивает исторический анализ.

В этом руководстве мы рассмотрим:

  • Как установить и настроить InfluxDB на CentOS 7.

  • Как передать данные мониторинга системы из демона статистики системы collectd в InfluxDB.

  • Как использовать SQL-подобный язык запросов InfluxDB для быстрого понимания и анализа производительности отслеживаемой системы.

  • Как использовать стек инструментов визуализации Grafana для создания многофункционального решения для панели управления, чтобы лучше изучить и представить данные, хранящиеся в нашем экземпляре InfluxDB.

Предпосылки

Перед началом вам понадобится следующее:

  • Одна 64-битная CentOS 7 Droplet. Объем ЦП, ОЗУ и хранилища, которые требуются вашему серверу, зависит от объема данных, которые вы собираетесь собирать, но для начала обычно достаточно 2 ГБ ОЗУ и 2 ЦП.

  • Пользователь sudo без полномочий root. Https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7[CentOS 7 Учебное пособие по начальной настройке сервера] объясняет, как это сделать.

  • 4 ГБ пространства подкачки. Https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-centos-7[How Add Swap on Centos 7 tutorial] объясняет, как это сделать.

Шаг 1 - Установка InfluxDB

На этом этапе мы установим InfluxDB.

InfluxDB распространяется как автономная система. Это означает, что у него нет внешних зависимостей; все, что вам нужно для запуска базы данных, предоставляется в пакете выпуска, который вы используете во время установки, что упрощает установку.

Во-первых, обновите вашу систему, чтобы у вас были последние исправления ошибок и безопасности.

sudo yum -y update

Затем установите последнюю версию InfluxDB, которая на момент написания статьи была v0.8.8.

sudo yum -y install  https://s3.amazonaws.com/influxdb/influxdb-latest-1.x86_64.rpm

После успешной установки пакета ряд файлов будет установлен в + / opt / influenxdb / version / 0.8.8 +, а символическая ссылка будет создана в + / etc / init.d + для Скрипт управления сервисом InfluxDB.

Шаг 2 - Настройка и запуск InfluxDB

На этом шаге мы настроим конфигурацию InfluxDB, чтобы отключить анонимную передачу данных и расширить ограничение времени чтения по умолчанию.

Основной конфигурационный файл InfluxDB это + / opt / influenxdb / shared / config.toml +. При этом используется формат TOML, который очень похож на форматы конфигурации INI и предназначен для удобного чтения благодаря своей очевидной семантике.

Прежде чем настраивать нашу конфигурацию, сделайте резервную копию оригинала.

sudo cp /opt/influxdb/shared/config.toml /opt/influxdb/shared/config.toml_backup

Начиная с версии 0.7.1, InfluxDB сообщает анонимные данные каждые 24 часа в + m.influxdb.com +. Чтобы минимизировать использование полосы пропускания, мы отключим эту отчетность. Сначала откройте файл конфигурации для редактирования, используя nano или ваш любимый текстовый редактор.

sudo nano /opt/influxdb/shared/config.toml

Найдите ключ конфигурации + reports-disabled + и измените его на + true +. После редактирования этот раздел должен выглядеть следующим образом:

/opt/influxdb/shared/config.toml выдержка

. . .
# Change this option to true to disable reporting.
reporting-disabled =

[logging]
. . .

Далее мы обновим время чтения по умолчанию, чтобы разрешить немного более длительное время для соединений. Тайм-аут чтения контролирует, как долго соединениям с базой данных будет разрешено ждать, прежде чем они будут закрыты.

В том же файле конфигурации найдите ключ конфигурации + read-timeout + и измените его с + 5s + на + 10s +.

/opt/influxdb/shared/config.toml выдержка

. . .
# However, if a request is taking longer than this to complete, could be a problem.
read-timeout = "s"

[input_plugins]
. . .

Сохраните и закройте файл, затем запустите демон InfluxDB.

sudo /etc/init.d/influxdb start

При успешном запуске сценарий диспетчера служб предоставит следующий вывод.

Успешный запуск демона

Setting ulimit -n 65536
Starting the process influxdb [ OK ]
influxdb process was started [ OK ]

После запуска InfluxDB перейдите к + http: //: 8083 + в веб-браузере, чтобы убедиться, что InfluxDB запущен и работает. Это покажет вам интерфейс администрирования по умолчанию, который будет иметь два раздела, помеченных * Connect * и * Hostname и Port Settings *.

Шаг 3 - Изменение учетных данных администратора InfluxDB по умолчанию

Каждый InfluxDB поставляется с набором учетных данных администратора по умолчанию. В целях безопасности вы должны изменить этот пароль.

Войдите в пользовательский интерфейс InfluxDB, используя имя пользователя по умолчанию * root * и пароль * root * в разделе * Connect *. Оставьте базу данных пустой и нажмите синюю кнопку * Connect *.

В верхнем меню на следующей странице нажмите * Администраторы кластера *. Это приведет вас к странице администрирования пользователей. В разделе * Имя пользователя * нажмите * root * и измените пароль, дважды введя новый пароль и нажав синюю кнопку * Изменить пароль *.

Наконец, выйдите из системы с помощью синей кнопки * Disconnect * и снова войдите в систему, используя новый пароль.

Шаг 4 - Создание базы данных

Когда InfluxDB впервые настроен, он не содержит никаких реальных баз данных, поэтому нам нужно создать базу данных, которую мы в конечном итоге будем использовать для хранения наших метрик.

Нажмите на меню * Базы данных * в верхнем меню веб-интерфейса. В разделе * Создать базу данных * в разделе * Сведения о базе данных * введите * metrics * в качестве имени базы данных. Параметры по умолчанию в параметрах * Shard Spaces * могут быть сохранены. Затем нажмите синюю кнопку * Создать базу данных * в правом нижнем углу, чтобы создать базу данных.

После того, как база данных была успешно создана, вы увидите ее в верхней части экрана рядом со ссылкой * Explore Data *.

изображение: https: //assets.digitalocean.com/articles/influxdb/CPrvI85.png [InfluxDB создать экран базы данных]

Чтобы убедиться, что база данных, которую мы создали, работает правильно, мы можем записать и проверить некоторые образцы данных в ней, используя интерфейс данных. Нажмите на ссылку * Explore Data *, чтобы перейти к интерфейсу данных. Вы увидите этот экран:

изображение: https: //assets.digitalocean.com/articles/influxdb/klCmqfX.png [Экран пользовательского интерфейса данных InfluxDB]

С этого экрана вы можете записать некоторые тестовые данные в базу данных. Вы также сможете выполнять специальные запросы к данным, хранящимся в базе данных, и просматривать основные визуализации. Давайте напишем немного данных, чтобы убедиться, что наша база данных функционирует.

Для ввода данных с помощью веб-интерфейса необходимо указать название серии и ее значения. Имя серии представляет собой буквенно-цифровую строку без пробелов, и поле значения должно быть предоставлено в формате ключ-значение JSON.

В разделе * Точка записи * для * Имя временного ряда * введите * test_metric *, а для * Значения * введите + {" значение ": 23,4} +. Затем нажмите синюю кнопку * Write Point *, чтобы ввести данные. Вы увидите * 200 OK *, всплывающее зеленым рядом с кнопкой.

Повторите процесс с тем же именем временного ряда и каждым из следующих значений: + {" value ": 13.1} +, + {" value ": 13.1} +, + {" value ": 78.1} + `, и + {"value": 90.4} + `. Обратите внимание, что мы намеренно записываем значение 13,1 дважды. Вы добавите в общей сложности пять баллов.

Теперь, когда мы написали несколько примеров точек данных, мы можем их проверить. В разделе * Read Points * в верхней части страницы в поле * Query * введите следующий запрос:

Запрос InfluxDB

select * from test_metric

Затем нажмите синюю кнопку * Выполнить запрос *. Результат этого запроса будет отображать все точки данных, хранящиеся в базе данных для серии + test_metric +. Затем вы увидите график, который будет выглядеть примерно так:

изображение: https: //assets.digitalocean.com/articles/influxdb/o3V5Gy6.png [Образец результатов InfluxDB]

Этот экран показывает линейный график, который суммирует тенденцию метрики во временном ряду, и таблицу данных, которая суммирует данные, хранящиеся в базе данных.

Мы также можем использовать идентификаторы столбцов, чтобы сузить область нашего поиска. Например, чтобы найти события со значением события 13,1, введите следующий поисковый запрос:

Запрос InfluxDB

select * from test_metric where value = 13.1

Это приведет к возврату двух строк для данных нашего примера:

изображение: https: //assets.digitalocean.com/articles/influxdb/Rfsb7Cn.png [Фильтрованные результаты InfluxDB]

Чтобы немного подробнее рассказать, данные в InfluxDB организованы по временным рядам, в нашем примере это + test_metric +. Каждая серия имеет набор точек данных, соответствующих событию. Мы создали пять событий выше, когда мы ввели наши данные. Каждое событие имеет время, порядковый номер и несколько столбцов, которые аналогичны метрике, которую мы измеряем для события. В нашем примере у нас есть одна метрика с именем + value + в каждом из наших пяти событий.

Шаг 5 - Установка и настройка collectd

На этом этапе мы настроим и сконфигурируем collectd для сбора метрик для нашей системы. collectd - это демон Unix, который собирает, передает и хранит данные о производительности. Это помогает вести обзор доступных ресурсов для выявления существующих или надвигающихся узких мест.

Во-первых, включите репозиторий EPEL (Extra Packages for Enterprise Linux):

sudo yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

Затем установите collectd.

sudo yum -y install collectd

После успешной установки пакета будет создан ряд двоичных файлов, общих библиотек и файлов конфигурации. Основные файлы, о которых нужно знать, это файл конфигурации collectd + / etc / collectd.conf + и основной двоичный файл демона collectd + / usr / sbin / collectd +. Как и раньше с InfluxDB, давайте сначала сделаем копию исходного файла конфигурации.

sudo cp /etc/collectd.conf /etc/collectd.conf_backup

Далее откройте файл конфигурации для редактирования.

sudo nano /etc/collectd.conf

Основной файл конфигурации collectd содержит множество настроек, большинство из которых по умолчанию неактивны, поскольку они закомментированы. Мы раскомментируем и модифицируем некоторые из них.

В верхней части конфигурации файла, в разделе Global, вы увидите следующее. Части, которые вы будете редактировать, выделены красным.

/etc/collectd.conf оригинальный отрывок

. . .
Hostname    ""
#FQDNLookup   true
BaseDir     "/var/lib/collectd"
PIDFile     "/var/run/collectd.pid"
PluginDir   "/usr/lib64/collectd"
TypesDB     "/usr/share/collectd/types.db"
. . .

Раскомментируйте поля Hostname, BaseDir, PIDFile, PluginDir и TypesDB, удалив + # + в начале строки. Кроме того, установите в поле Hostname значение + influenxdb +. После завершения этот раздел файла должен выглядеть следующим образом:

/etc/collectd.conf измененный отрывок

Hostname    ""
#FQDNLookup   true
BaseDir     "/var/lib/collectd"
PIDFile     "/var/run/collectd.pid"
PluginDir   "/usr/lib64/collectd"
TypesDB     "/usr/share/collectd/types.db"

Затем прокрутите вниз до раздела LoadPlugin, в котором перечислено большое количество плагинов в алфавитном порядке. Прокрутите их и раскомментируйте строки + LoadPlugin network + и + LoadPlugin uptime +, удалив + # + в начале строки.

Наконец, мы настроим collectd для отправки данных напрямую в InfluxDB.

Прокрутите вниз до раздела Конфигурация плагина. После разделителя разделов (показан ниже) добавьте конфигурацию сетевого плагина (выделено красным).

/etc/collectd.conf измененный отрывок

. . .
##############################################################################
# Plugin configuration                                                       #
#----------------------------------------------------------------------------#
# In this section configuration stubs for each plugin are provided. A desc-  #
# ription of those options is available in the collectd.conf(5) manual page. #
##############################################################################





#<Plugin "aggregation">
. . .

Теперь сохраните и выйдите из файла. Мы должны проверить конфигурацию, чтобы убедиться, что мы случайно не ввели опечатки или синтаксические ошибки. Мы можем использовать collectd для проверки конфигурации следующим образом:

sudo /usr/sbin/collectd -t

Если в конфигурации collectd нет ошибок, эта команда вернется без вывода. Если в файле обнаружены какие-либо ошибки, они будут перечислены в терминале.

Как только конфигурация без ошибок, перезапустите collectd, чтобы активировать новую конфигурацию. Это может занять некоторое время.

sudo service collectd start

Шаг 6 - Настройте InfluxDB для использования собранных метрик

Чтобы хранить метрики системы collectd, собираемые с помощью collectd в InfluxDB, нам нужно включить и настроить плагин ввода InfluxDB collectd.

Сначала откройте файл конфигурации InfluxDB для редактирования.

sudo nano /opt/influxdb/shared/config.toml

Найдите конфигурацию плагина + input_plugins.collectd +, которая будет выглядеть следующим образом. Строки, которые вы измените, выделены красным.

/opt/influxdb/shared/config.toml оригинальная выдержка

. . .
 # Configure the collectd api
 [input_plugins.collectd]
 enabled =
 # address = "0.0.0.0" # If not set, is actually set to bind-address.
  port =
  database =
 # types.db can be found in a collectd installation or on github:
 # https://github.com/collectd/collectd/blob/master/src/types.db
  typesdb = "/usr/share/collectd/types.db" # The path to the collectd types.db file
. . .

Измените его в соответствии с приведенной ниже выдержкой, внеся следующие изменения:

  • Установите включен в true.

  • Измените порт на 8096.

  • Измените базу данных на метрики.

  • Раскомментируйте строки порта, базы данных и typesdb.

/opt/influxdb/shared/config.toml измененный отрывок

. . .
 # Configure the collectd api
 [input_plugins.collectd]
 enabled =
 # address = "0.0.0.0" # If not set, is actually set to bind-address.
 port =
 database = ""
 # types.db can be found in a collectd installation or on github:
 # https://github.com/collectd/collectd/blob/master/src/types.db
 typesdb = "/usr/share/collectd/types.db" # The path to the collectd types.db file
. . .

Сохраните файл и перезапустите InfluxDB, чтобы активировать новую конфигурацию.

sudo /etc/init.d/influxdb restart

Далее, давайте проверим, что InfluxDB получает системные метрики от collectd. В интерфейсе * Data * в пользовательском интерфейсе, который мы остановили на шаге 5, введите следующий запрос в текстовом поле * Query * в разделе * Read Points *, затем нажмите синюю кнопку * Execute Query *.

Запрос InfluxDB

list series

Если вы получаете данные из collectd, вы должны увидеть длинный список серий, подобный приведенному ниже:

изображение: https: //assets.digitalocean.com/articles/influxdb/YXJ5bvF.png [InfluxDB Collectd Series]

Теперь мы можем начать анализировать производительность нашей системы, изучая эти данные, как в шаге 5. Например, выполнение следующего запроса позволит вам наблюдать за использованием памяти в вашей системе:

Запрос InfluxDB

select * from "influxdb/memory/memory-used"

Отображение результирующих данных четко показывает изменения в использовании памяти, которые были записаны для нашего экземпляра InfluxDB. Вот пример:

изображение: https: //assets.digitalocean.com/articles/influxdb/8KIQWsK.png [Образец набора результатов использования памяти InfluxDB]

Шаг 7 - Установка и запуск Grafana

Мы можем использовать веб-интерфейс InfluxDB для изучения данных и визуализации тенденций системы на основе данных временных рядов. Тем не менее, веб-интерфейс пользователя несколько прост и не идеален для представления данных метрик, которые мы собираем.

Grafana - это многофункциональная панель показателей, которая хорошо интегрируется с InfluxDB. Grafana даст нам возможность создавать информационные панели, которые предоставляют обзоры системы и подходят для совместного использования или использования в качестве настенных дисплеев.

Чтобы установить Grafana, введите следующую команду.

sudo yum -y install  https://grafanarel.s3.amazonaws.com/builds/grafana-2.0.2-1.x86_64.rpm

Запустите стек Grafana, сначала перезагрузив демоны systemd.

sudo systemctl daemon-reload

Затем запустите сервер Grafana.

sudo systemctl start grafana-server

Наконец, проверьте его статус.

sudo systemctl status grafana-server

При успешном запуске статус менеджера сервисов подтвердит, что сервис Grafana запущен и что веб-интерфейс обслуживается. Вывод, который вы получите в своем терминале, начнется с этого:

Графана вывод статуса

grafana-server.service - Starts and stops a single grafana instance on this system
  Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled)
   since Tue 2015-06-02 18:59:17 EDT; 3s ago
. . .

Шаг 8 - Изменение учетных данных Grafana Admin по умолчанию

Каждый экземпляр Grafana поставляется с набором учетных данных администратора по умолчанию. В целях безопасности вы должны изменить этот пароль. Для этого вы можете использовать веб-интерфейс или файл конфигурации Grafana, но из-за простоты использования мы будем использовать веб-интерфейс.

После запуска Grafana перейдите к + http: //: 3000 +. Войдите в пользовательский интерфейс Grafana, используя имя пользователя по умолчанию * admin * и пароль * admin *. Нажмите на логотип Graphana в верхнем левом углу экрана, затем нажмите * admin * в появившемся меню. Это приведет вас к следующей странице администрирования профиля.

изображение: https: //assets.digitalocean.com/articles/influxdb/tE0veFY.png [Страница конфигурации профиля администратора Grafana]

Нажмите на ссылку * Изменить пароль * в верхнем меню заголовка. Введите новый пароль в соответствующие поля и нажмите * Изменить пароль *.

Шаг 9 - Добавление базы данных InfluxDB в Графану

На этом этапе мы добавим нашу базу данных InfluxDB в качестве источника в Grafana.

Чтобы добавить источник данных, откройте боковое меню, щелкнув значок Grafana в верхнем заголовке. В боковом меню нажмите * Источники данных *. Нажмите на ссылку * Добавить новый * в верхнем заголовке, чтобы открыть экран определения источника данных.

Заполните этот экран, используя следующие настройки:

  • * Имя *: приток

  • * Тип *: выберите * InfluxDB 0.8.x * в раскрывающемся меню.

  • * По умолчанию *: убедитесь, что этот флажок установлен. Источник данных по умолчанию означает, что он будет предварительно выбран для новых панелей.

  • * Url *: + http: // localhost: 8086 +

  • * Доступ *: выберите * прокси * из выпадающего меню.

  • * Basic Auth *: оставьте этот флажок снятым.

  • * База данных *: метрики

  • * Пользователь *: root

  • * Пароль *: пароль корневой базы данных InfluxDB, выбранный на шаге 4.

Наконец, нажмите зеленую кнопку * Добавить * в нижней части экрана.

Шаг 10 - Создание информационных панелей Grafana

Grafana предоставляет мощные, но удобные в использовании средства для создания информативных диаграмм и информационных панелей На этом шаге мы создадим панель обзора системы для отображения трендов системных метрик, которые мы собираем в InfluxDB.

В Grafana dashboard - это основной поддон, с которого вы работаете. Панели мониторинга содержат display elements (например, графики и текстовые панели). Элементы отображения содержат запросы, которые используются для получения данных из вашего источника данных (в нашем случае это InfluxDB). Поэтому сначала нам нужно создать пустую панель инструментов, которая будет служить основой для нашего дисплея.

Перейдите на домашнюю страницу Grafana, + http: //: 3000 +. Нажмите на ссылку * Home * в верхнем заголовке, чтобы открыть экран со списком панели инструментов. В нижней части этого экрана нажмите * + New *. Это приведет вас к новой пустой панели инструментов.

Нажмите на шестерню в верхнем меню вашей приборной панели, а затем нажмите * Настройки *. Вам будет представлен следующий экран:

изображение: https: //assets.digitalocean.com/articles/influxdb/YDry7YH.png [Меню администратора Grafand Dashboard]

Этот экран используется для изменения основных настроек панели инструментов. Измените поле * Заголовок * с * Новая панель управления * на * Обзор системы *. Затем щелкните значок дискеты в верхнем заголовке, чтобы сохранить панель управления.

Теперь мы заполним панель инструментов элементами отображения, чтобы создать визуальный информационный радиатор обзора системы.

На панели инструментов щелкните меню элементов управления строками, которое представляет собой маленький зеленый прямоугольник, расположенный в верхнем левом углу панели инструментов. В этом меню наведите курсор на * Добавить панель *, а затем нажмите * График *. Это создаст пустой график на вашей панели.

Нажмите на заголовок диаграммы в верхней части диаграммы, которая гласит * без заголовка (нажмите здесь) *, а затем нажмите * изменить * в появившемся меню. Это приведет вас в меню управления графиком. Нажмите на вкладку * General * и измените поле * Title * на * Network *.

Затем нажмите на вкладку * Metrics *, чтобы перейти к построителю запросов. В поле * series * мы можем указать метрики, которые мы хотим использовать в качестве источника наших данных для графика. Начните вводить * interface *; Затем вам будет предложено выбрать автозаполнение. Выберите метрику * effxdb / interface-eth0 / if_errors *.

Затем нажмите * + Добавить запрос * внизу меню администрирования диаграммы. Это добавит вторую строку запроса в построитель запросов. Используйте тот же метод, что и раньше, чтобы добавить запрос для метрики * influenxdb / interface-eth0 / if_octets *, и снова для метрики * influenxdb / interface-eth0 / if_packets *.

После добавления трех запросов ваш экран метрик должен выглядеть примерно так:

изображение: https: //assets.digitalocean.com/articles/influxdb/96PsmhC.png [Меню администратора Grafand Dashboard]

Наконец, нажмите на ссылку * Back to Dashboard *, чтобы перейти на свою панель мониторинга, которая теперь содержит график, отображающий сетевые тренды для вашей системы, и нажмите на значок дискеты в верхнем заголовке, чтобы сохранить новый график отображения. и приборная панель.

Вышеописанный процесс может быть повторен для создания визуальных графиков для отображения любых данных, сохраняемых в серии InfluxDB.

Заключение

InfluxDB - это мощный инструмент для хранения и анализа данных временных рядов, например данных, генерируемых при мониторинге производительности работающей системы. Объединение InfluxDB с Grafana обеспечивает решение для эффективного хранения и визуализации таких данных.

После завершения этого урока вы должны иметь общее представление о InfluxDB: как его установить, как настроить базу данных для использования и как отправить в нее данные. Кроме того, вы можете настроить Grafana и использовать его для создания универсальной панели мониторинга системы.

InfluxDB и Grafana имеют много дополнительных возможностей и вариантов использования. Вы можете выполнить более глубокий анализ поведения ваших систем, используя aggregate functions, предоставляемые InfluxDB. Возможно, вы также захотите начать сбор данных из распределенных систем, чтобы сравнить производительность по ряду систем, или начать сбор и анализ других типов показателей несистемного уровня (например, количество посещений страницы на пользователя или количество вызовов API для конечной точки REST). InfluxDB очень хорошо подходит для таких данных, и в официальной документации InfluxDB есть список tools и библиотек.

Related