LINUX.ORG.RU
решено ФорумAdmin

Prometheus + node_exporter и сбор информации из закрытых сетей

 ,


0

1

Всем привет.

Имею n-цать серверов без внешних ip, один из них с внешним ip. Хочу их мониторить.

Подумал что можно сделать такое решение.

Сервера без ip - буду называть childN (например child1, child4 и т.д.).

Cервер с внешним ip - буду называть его dady1. У dady1 в /etc/hosts перечислены все childN.

И на сервере dady1 такой конфиг nginx'a :

server {
  listen      80;
  server_name dady1;
  location / {
    proxy_pass http://127.0.0.1:9100;
  }
  location /child1 {
    proxy_pass http://child1:9100/;
  }
  location /child1 {
    proxy_pass http://child2:9100/;
  }
# и так далее
}
curl'ом (с сервера где установлен prometheus) и браузером http://dady1/childN/metrics вижу и всё ок, т.е. конфигаруция такая работает и метрики видны.

И такой думаю: ха-ха проблема решена, все круто.

Но prometheus отказывается понимать в своем конфиге http url, вот варианты что я пробовал:

     - targets: ['http://dady1:80/child2']
     - targets: ['dady1:80/child2']
В итоге полный облом.

В документации ничего не нашел, поискал в гугле - тоже ничего, максимум что можно - это настроить auth_basic авторизацию собсно она мне не нужна.

Есть еще вариант пробросить iptables'ом каждый child, но это не оч красиво и сложнее автоматизируется (в моем случае puppet'ом). И потом когда я захочу добавить новых mysql_exporter,snmp_exporter это все будет занимать доп порт, ужасное решение имхо.

Посоветуйте что делать?

Спасибо!

★★★

Помогло чтение исходников.

Конкретно в prometheus/config/config.go

Решается через :

     metrics_path: /child2/metrics
     -targets: ['dady1:80']

fura13 ★★★
() автор топика
14 сентября 2016 г.

В твоём случая я бы лучше применил relabeling. Что-то типа такого:

job: hosts-behind-proxy
  static_configs:
    targets:
      - child1
      - child2
    labels:
      __tmp_revproxy: dady1
  relabel_configs:
    - source_labels: [ __address__ ]
      regex: "(.*)(:80)?"
      target_label: __metrics_path__
      replacement: ${1}
    - source_labels: [ __tmp_revproxy ]
      regex: "(.*)"
      target_label: __address__
      replacement: ${1}

AnDoR ★★★★★
()
Последнее исправление: AnDoR (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.