Рубрики
Uncategorized

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

После долгих путешествий мы наконец у нас вместе все движущиеся кусочки для реализации аппаратного мониторинга …. Помечено DevOps, Nomad, Grafana, Premetheus.

После долгих путешествий мы наконец у нас есть все движущиеся кусочки вместе для реализации мониторинга оборудования. Повторите: на каждом узле мы установили консуль программного обеспечения 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»