Рубрики
Uncategorized

Инфраструктура @ Дом: На пути к сбору метрик оборудования

В последней статье я показал, как установить консуль решения мониторинга службы и Discovery. Wi … Теги с DevOps, Hashicorp, мониторинг, малина.

Инфраструктура — дома (7 части серии)

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

Эта статья изначально появилась в мой блог .

Как собирать метрики оборудования

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

Какие услуги поддерживаются? Здесь докусовая консула становится немного размытым:

Это много вариантов! Что мне нужно? Если честно, мне не хватало информации о них, без концептуальной структуры для их дифференциации.

После некоторого чтения я придумал следующие понятия, чтобы понять, о чем на самом деле мониторинг. агент это процесс, который проходит на узле для сбора метрик. Эти данные хранятся внутри База данных Timeries. . База данных может тянуть данные от агента, или агент нажимает данные в базу данных. Данные могут быть визуализированы с помощью Приборная панель Отказ

Наиболее часто упомянутые инструменты для этих различных аспектов мониторинга являются:

Итак, я пришел к выводу, чтобы либо иметь стопку узла экспортеров, прометея и графана, либо Telegraf, IncoluxDB и Chronograf. Тем не менее, это много программного обеспечения для установки и управления для сбора и визуализации метрик.

Давайте остановимся здесь на мгновение.

Просмотр моей инфраструктуры в домашних условиях

Хорошо иметь требования к проектам. Каковы следующие открытые требования в моем проекте? Управление приложением. Я хочу иметь возможность динамически развертывать приложения в виде пакетов, специфичных ОС, бинарии или контейнер докера к определенным узлам или где-то в кластере. И я хочу иметь динамичное открытие услуг. Могу ли я работать по этим требованиям и выполнить аспекты мониторинга?

Некоторые из инструментов мониторинга могут быть запущены внутри контейнера Docker. Итак, как только я смогу развернуть Docker Containers в моем кластере, я могу поместить программное обеспечение для мониторинга в качестве контейнеров Docker в кластер. Эта идея звучит выходу! Докер везде! Я могу запускать агенты на каждом узле, и где-то в кластере базы данных и панели мониторинга доступны через имена DNS.

Давайте продолжим в этом направлении!

Установка докера

Первый шаг — получить докер, бегущий на всех моих узлах. Как и прежде, я создал анаюмный игровой книг. Установка на Arch-Linux можно сделать через менеджер пакетов. Для Raspberry Pi, я следовал Эта отличная документация , который сводится к этим конкретным этапам:

  • Установите докерные зависимости
  • Скачать и выполнить скрипт оболочки Docker Installle
  • Добавить Raspian Docker Reppo
  • Обновите систему Complete
  • Включить Docker с SystemD

Я не буду подробно рассказать об этих книгах, потому что это следует одними и теми же шагами, что и моим Playbook Consul Player.

Кроме того, я создал проверку здоровья Docker Service в консул. Проверка здоровья определяется как файл yaml. Вы определяете имя службы, команду для запуска и интервала. Я пришел с этим файлом:

{
  "check": {
    "id": "docker-service",
    "name": "Docker Service",
    "args": [
      "/usr/local/bin/docker_health_check.sh"
    ],
    "interval": "10s",
    "status": "passing"
  }
}

Сам проверка здоровья — это простой скрипт Bash:

#! /bin/bash
systemctl status docker > /dev/null 2>&1

if [[ $? -eq 0 ]]; then
    echo "Docker daemon is running."
    exit 0
else
    echo "Error! Docker daemon is not running."
    exit 1
fi

Теперь Docker успешно устанавливается и контролируется в консул.

Как управлять докерными контейнерами

Теперь у нас наконец-то есть возможности начать Docker Containers. И снова вопрос о том, как возникает:

  • Используйте равнину Докер Для создания и запуска изображений на хостах
  • Использовать Docker-Compose Для Orchestrate работает набор зависимых контейнеров на хостах
  • Использовать неизбежное docker_image создавать изображения и Docker_container Для запуска контейнеров на узлах
  • Использовать Ansible_container Для создания, публикации и Orchestrate запустить набор зависимых контейнеров в средах, таких как OpenStack или K8S
  • Использовать Hashicorp. Кочевник к оркестровым контейнерам и запустить их на кластере

С момента запуска серии Nomad был моим «решением» для развертывания любого приложения на кластере. Поскольку он может запустить Docker, а поскольку агенты метрики, база данных и приборных панелей также могут работать в Docker, Nomad будет автомобилем для загрузки коллекции метрик. Тем не менее, у меня нет опыта WIT NOMAD, и поэтому я напишу Anisible Scripts, которые будут развертывать контейнеры Docker с программным обеспечением мониторинга для меня.

Прометей в доке

PROMETHEUS будет настроен для получения метрик из консула. Это соответствующая часть конфигурации:

- job_name: consul
  metrics_path: "/v1/agent/metrics"
  params:
    format: ['prometheus']
  scheme: http
  static_configs:
  - targets:
    - 192.168.2.201:8500
    - 192.168.2.202:8500
    - 192.168.2.203:8500
    - 192.168.2.204:8500

Затем выполните контейнер Docker.

docker run -d --network host \
  -v /home/pi/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus:v2.16.0

`

И мы можем увидеть PROMETHEUS UI:

Графана в докере

Последний шаг — начать GRAFANA, настроить его для использования источника данных PROMETHEUS, а затем выберите подходящую приборную панель.

Grafana будет запущен с этой командой Docker:

башмак Docker Run -d — Nnetwork Host Grafana/Grafana: 6.6.2

Затем мы доступ к веб-интерфейсу, добавьте источник данных Grafana и Подходящая приборная панель консула , как этот Отказ

Вывод

Это была длинная статья, пока путешествие. Мы прибыли в состояние, где собраны метрики, захватываемые Прометей и оказали с графаной. Однако мы используем явные команды Docker Run, чтобы начать это. Я хочу улучшить это: контейнеры должны начинаться с программного обеспечения для управления сервисом, а их конфигурация должна быть динамическими с именами хостов вместо фиксированных IP-адресов. Это будет сделано в будущей статье.

Инфраструктура — дома (7 части серии)

Оригинал: «https://dev.to/admantium/infrastructure-home-towards-collecting-hardware-metrics-5cc0»