Прометей не может связаться с экспортером узлов - PullRequest
0 голосов
/ 09 июля 2020

Я изучаю prometheus и node_exporter и пытаюсь настроить их локально с помощью docker. Я загрузил docker изображений с этого https://hub.docker.com/r/prom/node-exporter и этого https://hub.docker.com/r/prom/prometheus, затем запустил их с помощью команд:

docker run -d -p 9100:9100 prom/node-exporter

docker run \
    -d \
    -p 9090:9090 \
    -v /Users/person/sandbox/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus

перед запуском prometheus Я добавил yml file:

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
- job_name: 'node'
  static_configs:
  - targets: ['localhost:9100']

Но похоже, что прометей не может добраться до node_export. Я вижу метрики из node_export -> enter image description here

and I see metrics from prometheus -> enter image description here

but I cannot get node_export metrics from prometheus web-browser from:

enter image description here

By the way prometheus read yml file: enter image description here

What did I wrong?

UDP: nice, it seems that localhost:9100 is unreachable введите описание изображения здесь

1 Ответ

1 голос
/ 09 июля 2020

Это происходит потому, что внутри контейнера Prometheus localhost разрешается в петлевой сетевой интерфейс контейнера. Чтобы смягчить это, используйте сеть хоста, явно указав --network=host при запуске этих контейнеров. При использовании сети хоста Docker не выделяет контейнеру собственное сетевое пространство имен. Скорее они будут делиться им со своего хоста.

В качестве альтернативы, лучший подход - создать оверлейную сеть.

docker network create prom
docker network connect prom <prometheus_container_name>
docker network connect prom <node_exporter_container_name>

После создания и подключения контейнеров к оверлейной сети они должны быть доступны друг от друга по их Docker имени 1 .

...