Обзор
Хост может запускать несколько контейнерных приложений. Контейнерные приложения работают на хосте. Нам необходимо знать текущее состояние контейнера, включая ряд сведений, таких как использование ЦП, использование памяти, состояние сети и место на диске. Эта информация меняется в течение время, мы называем это данными временных рядов, и в этой статье мы будем практиковатьКак построить центр визуального мониторингаЧтобы собрать информацию о времени этих контейнеров, несущих определенные приложения, и визуализировать их для анализа и отображения!
Начинай, начинай...
Примечание:Эта статья была впервые опубликована на моем официальном аккаунтеCodeSheep,МогуНажмитеилисканированиепоследующийбудь остороженЗаходи подписывайся ↓ ↓ ↓
Подготовьтесь к зеркалированию
-
советник: отвечает за сбор изменяющихся во времени данных о контейнере
-
influxdb: отвечает за хранение данных временных рядов
-
grafana: отвечает за анализ и отображение данных временных рядов.
Разверните службу Influxdb
Думайте об этом как о службе базы данных, которая хранит данные. Причина выбора этой базы данных, как говорится на официальном сайте:
Open Source Time Series DB Platform for Metrics & Events (Time Series Data)
Далее разворачиваем сервис
docker run -d -p 8086:8086 \
-v ~/influxdb:/var/lib/influxdb \
--name influxdb tutum/influxdb
- Войдите внутрь контейнера influxdb и выполните команду influx:
docker exec -it influxdb influx
- Создайте тест базы данных и пользователя root для этого тестового теста.
CREATE DATABASE "test"
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
Разверните службу cAdvisor
Кадвизор Google можно использовать для сбора информации о времени для контейнеров Docker, включая данные об использовании ресурсов и производительности во время работы контейнера.
- Запустите службу cadvisor
docker run -d \
-v /:/rootfs -v /var/run:/var/run -v /sys:/sys \
-v /var/lib/docker:/var/lib/docker \
--link=influxdb:influxdb --name cadvisor google/cadvisor:v0.27.3 \
--storage_driver=influxdb \
--storage_driver_host=influxdb:8086 \
--storage_driver_db=test \
--storage_driver_user=root \
--storage_driver_password=root
Специальные примечания:
При запуске вышеупомянутого докера могут быть два других элемента конфигурации, которые необходимо добавить (необходимы CentOS, RHEL):
- --privileged=true
После того, как для него установлено значение true, корень в контейнере имеет реальную привилегию root, может видеть устройства на хосте и может выполнять монтирование; в противном случае корень в контейнере — это просто внешняя привилегия обычного пользователя. Этот параметр требуется в системах CentOs и RHEL, поскольку cadvisor должен получить доступ к демону Docker через сокеты.
- --volume=/cgroup:/cgroup:ro
Для некоторых версий систем CentOS и RHEL (например, CentOS6) иерархия cgroup висит в каталоге /cgroup, поэтому вам нужно добавить параметр --volume=/cgroup:/cgroup:ro при запуске cadvisor.
Развернуть сервис Grafana
Grafana — это инструмент для анализа данных временных рядов с открытым исходным кодом, а его интерфейс профессиональный и простой в использовании.После завершения развертывания каждый может почувствовать:
docker run -d -p 5000:3000 \
-v ~/grafana:/var/lib/grafana \
--link=influxdb:influxdb \
--name grafana grafana/grafana
На данный момент запущены все три контейнера:
Давайте начнем конкретный эксперимент
настоящий бой
- доступ к сервису графана
Откройте localhost:5000 для доступа к веб-службе grafana.В это время вам будет предложено войти в систему.Обратите внимание, что имя пользователя и парольadmin
После авторизации вы можете увидеть главную страницу grafana:
Очевидно, что на Grafana нужно сделать несколько шагов, здесьInstall Grafana
Готово, дальше нам понадобится:
- Add data source
- Create dashboard
- …
-
Add Data Source
Нажмите Добавить источник данных, чтобы ввести
Затем в основном настройки вкладки «Настройки»
Нам нужно заполнить содержимое в соответствии с реальной ситуацией:
Если источник данных добавлен успешно, будет предложено
После добавления источника данных нам нужно добавить дашборд (Dashboard)
-
Add Dashboard
Нажмите Добавить панель управления, чтобы войти
Существует множество типов информационных панелей на выбор, мы просто выбираем наиболее часто используемый график.
После ввода щелкните раскрывающийся список «Название панели», а затем выберите «Редактировать», чтобы изменить
Главное в Правке добавить условия запроса, продолжение смотрите ниже
-
Add Query Editor
В условиях запроса мы можем выбрать показатели для мониторинга:
Выберите здесь использование памяти, а затем выберите графану в качестве контейнера для мониторинга.
Конечно, здесь можно отслеживать не только один индикатор, но и более одного контейнера, для большего количества комбинаций нам просто нужно добавить записи запроса по одной ниже!
Наконец, я добавил три условия мониторинга, чтобы следить за показателями использования памяти тремя контейнерами, grafana, influxdb и cadvisor, и отображать их на графике одновременно, не правда ли, это очень интуитивно понятно!
Здесь все еще есть много элементов настройки, которые можно изучить, например, некоторые настройки координат, настройки стратегии отображения, и даже мы можем настроить стратегию сигналов тревоги и т. д.
постскриптум
Другие практические статьи автора SpringBt находятся здесь:
- Мониторинг приложений Spring Boot на практике
- Приложения SpringBoot развертываются во внешнем контейнере Tomcat.
- Практика поисковой системы ElasticSearch в SpringBt
- Предварительное изучение совместного программирования Kotlin+SpringBoot
- Практика ведения журнала Spring Boot
- Элегантное кодирование SpringBoot: благословение Ломбока
Если вам интересно, вы также можете уделить время прочтению некоторых статей автора о контейнеризации и микросервисах:
- Используйте стек технологий K8S для создания личного частного облака Серийная статья
- Подробная конфигурация сервера Nginx из списка конфигураций
- Строительство центра мониторинга визуализации контейнеров Docker
- Использование ELK для создания контейнерного центра журналов приложений Docker
- Практика фреймворка RPC: Apache Thrift
- Практика фреймворка RPC: Google gRPC
- Построение микросервисного центра отслеживания цепочки вызовов
- Контейнеры Docker обмениваются данными между хостами
- Предварительное исследование кластера Docker Swarm
- Несколько рекомендаций по эффективному написанию Dockerfile