Серверные части Traefik query живые / мертвые

#docker-swarm #traefik

#docker-swarm #traefik

Вопрос:

У нас есть установка treafik на docker swarm с несколькими сервисами, сбалансированными с помощью traefik. Каждая служба имеет как минимум два серверных модуля, сбалансированных с помощью wrr и проверки работоспособности.

Есть ли способ (api, конечная точка rest, файл журнала что угодно) выяснить, у каких интерфейсов есть мертвые серверные части? Под «мертвыми» я подразумеваю, на каких бэкэндах treafik обнаружил с помощью проверки работоспособности, что они не подходят для балансировки?

Какова наилучшая практика для этого?

Ответ №1:

Я вижу два способа получения этой информации:

Журнал запросов Traefik

Посмотрите на журнал Traefik, который предоставляет трассировки для проверок работоспособности:

 time="2019-03-05T22:19:35Z" level=debug msg="Refreshing health check for backend: backend-web-so-55004614",
time="2019-03-05T22:19:35Z" level=warning msg="Health check still failing. Backend: "backend-web-so-55004614" URL: "http://192.168.80.2:80" Reason: received error status code: 404",
time="2019-03-05T22:19:36Z" level=debug msg="Refreshing health check for backend: backend-web-so-55004614",
time="2019-03-05T22:19:36Z" level=warning msg="Health check still failing. Backend: "backend-web-so-55004614" URL: "http://192.168.80.2:80" Reason: received error status code: 404",
  

Traefik /metrics

Если анализировать журналы Traefik неудобно, вы могли бы активировать метрики Traefik Prometheus (которые включены по умолчанию):

docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p "80:80" -p "8080:8080" traefik --api --docker

Затем вы можете выполнить HTTP-запрос на http://localhost:8080/metrics и искать строки, содержащие _backend_server_up . Каждая из этих строк сообщает вам, что ваш бэкэнд запущен и исправен. Если серверная часть отсутствует, это означает, что она неработоспособна или остановлена:

 traefik_backend_server_up{backend="backend-robots",url="http://172.23.0.3:80"} 1
traefik_backend_server_up{backend="backend-smtp-ui",url="http://172.25.0.3:8025"} 1
traefik_backend_server_up{backend="backend-varnish-admin",url="http://172.23.0.8:6085"} 1
traefik_backend_server_up{backend="backend-varnish-http",url="http://172.23.0.8:6081"} 1
traefik_backend_server_up{backend="backend-web-apps",url="http://172.21.0.2:80"} 1
traefik_backend_server_up{backend="backend-web-report",url="http://172.19.0.6:80"} 1
  

У вас мог бы быть скрипт, запрашивающий этот URL, или вы могли бы установить Prometheus, в котором есть правила оповещения

Комментарии:

1. Хорошо, спасибо за подсказку, по крайней мере, это подсказка, когда что-то идет не так. Но это не подходит для автоматического обнаружения сбоев или мониторинга (он же nagios и т.д.): (

2. @Lasrik Я нашел другой способ, который использует конечную точку метрик Traefik. Я отредактировал свой ответ