После долгих путешествий мы наконец у нас есть все движущиеся кусочки вместе для реализации мониторинга оборудования. Повторите: на каждом узле мы установили консуль программного обеспечения Discovery Service, Nomad и Docker. Nomad Spins up Docker Consier, который запускается где-то в кластере. Консул получает уведомление о беговых контейнерах и регистрирует услуги.
Источник для метрик будет кочевым. Почему? В начальной статье я хотел использовать консул для этой задачи. Но NOMAD предоставляет из метрик оборудования коробки (CPU, RAM, DISC) каждого узла, и он также предоставляет метрики о распределениях. Это означает, что мы можем отслеживать любой другой контейнер Docker и, следовательно, любое приложение, которое работает в кластере!
Окончательное решение будет достигнуто путем выполнения этих шагов:
- Настройте агенты NOMAD для снабжения PROMETHEUS-совместимых данным
- Настройте PROMETHEUS для доступа к конечным точкам MOMAD METRICS
- Настройте Grafana для визуализации данных PROMETHEUS
Эта статья изначально появилась в мой блог .
Настроить NOMAD
NOMAD должен предоставлять прометеус-совместимые метрики об узлах и ассигновании, обновляются каждую секунду. Все это выражено в этой телеметрии Stanza, которая должна быть добавлена в файл nomad.conf.hcl
Отказ
telemetry { collection_interval = "1s", prometheus_metrics = true, publish_allocation_metrics = true, publish_node_metrics = true }
Перезапустите агента, и теперь вы можете получить доступ к метрикам.
curl http://192.168.2.201:4646/v1/metrics?format=prometheus # HELP nomad_client_unallocated_cpu nomad_client_unallocated_cpu # TYPE nomad_client_unallocated_cpu gauge nomad_client_unallocated_cpu{datacenter="infrastructure_at_home",node_class="none",node_id="c2a79d23-9851-fd9b-dece-f86908d58d3c"} 5600 # HELP nomad_client_unallocated_disk nomad_client_unallocated_disk # TYPE nomad_client_unallocated_disk gauge nomad_client_unallocated_disk{datacenter="infrastructure_at_home",node_class="none",node_id="c2a79d23-9851-fd9b-dece-f86908d58d3c"} 26598 # HELP nomad_client_unallocated_memory nomad_client_unallocated_memory # TYPE nomad_client_unallocated_memory gauge nomad_client_unallocated_memory{datacenter="infrastructure_at_home",node_class="none",node_id="c2a79d23-9851-fd9b-dece-f86908d58d3c"} 926
Настроить PROMETHEUS.
Nomad предоставляет метрики на конечной точке $ IP: 4646/V1/Metrics
Отказ Вместо того, чтобы настроить фиксированные IP-адреса, мы будем использовать консуль для разрешения узлов. Конфигурация это:
- job_name: nomad metrics_path: "/v1/metrics" params: format: ['prometheus'] scheme: http static_configs: - targets: - raspi-3-1.node.consul:4646 - raspi-3-2.node.consul:4646 - raspi-4-1.node.consul:4646 - raspi-4-2.node.consul:4646
Запуск Прометея и Графана как контейнеры докеров
Чтобы начать Docker Containers с NOMAD, вы определяете чисто декларативную спецификацию работы и примените ее. Работа определяет, что запускать, насколько вы хотите, какие вы хотите открыть, если вы хотите предоставить медицинскую проверку обслуживания и многое другое. Смотрите предыдущую статью о Управление приложениями с NOMAD Отказ
Для PROMETHEUS соответствующая декларация определяет изображение, устанавливает файл конфигурации, устанавливает громкость докера и отображает порт UI.
task "prometheus" { driver = "docker" config { image = "prom/prometheus:latest" volumes = [ "local/prometheus.yml:/etc/prometheus/prometheus.yml", ] mounts = [ { type = "volume" target = "/prometehus" source = "prometheus" } ] port_map { prometheus_ui = 9090 } } ... }
Для Grafana мы также определяем изображение, установив громкость докера и сопоставьте порт.
task "graphana" { driver = "docker" config { image = "grafana/grafana:6.6.2" mounts = [ { type = "volume" target = "/var/lib/grafana" source = "graphana" } ] port_map { http = 3000 } } ... }
Исполнение
Давайте выполним работу мониторинга.
>>nomad job run -address=http://192.168.2.204:4646 jobs/prometheus_docker.job.nomad ==> Monitoring evaluation "ad5a5599" Evaluation triggered by job "prometheus" Evaluation within deployment: "158c6e72" Allocation "1bf7bfd2" created: node "7be9e3ea", group "monitoring" Evaluation status changed: "pending" -> "complete" ==> Evaluation "ad5a5599" finished with status "complete"
Перейдите к приборной панели и посмотрите, что Grafana работает.
Наконец я открываю Grafana через IP и порт, применить и настроить Рекомендуемая приборная панель Nomad и может видеть здоровье всех узлов.
Вывод
Эта статья показала, как собирать и визуализировать метрики оборудования, используя ноческую, прометею и графану. Nomad обнаруживает метрики для прометея с несколькими линиями конфигурации. Прометеус может поднять эти богатые данные и хранить его. Наконец, Grafana обращается к данным и выбираю и настраивающую одну из множества приборных панелей, которые мы достигаем великой визуализации. Прометей и Графана бегают как контейнеры докера, начались и управляются самим кочевником. Слева осталось две вызовы: используя правильные доменные имена для доступа к контейнерам, например grafana.infra.consul
и сохранить данные, когда контейнер развернут на другой физический узел.
Оригинал: «https://dev.to/admantium/collecting-hardware-metrics-with-nomad-pg9»