Зачем мы в Tuna.am написали prometheus exporter для сервиса Ping-Admin.com и при чём тут блокировки Hetzner по маршрутизации?

Где-то 3 недели назад я решил пойти в отпуск, перед отпуском ничего не обновляли, не катили нового, не меняли, в общем план был отдохнуть максимально. Но РКН имел на мой отдых другие планы ...

День 3 (отпуска). API лежит для 20% пользователей из России

Уже 6 ноября к нам в tuna.am начинают массово обращаться пользователи - сервис не работает. Смотрим в свои графики - всё работает. Просим клиента запустить команду для само-диагностики - tuna diagnose и видим следующее:

tuna diagnose Please wait, testing connectivity... TLS connectivity: Google.com: ok [1.1478288s] Yandex.ru: ok [1.7945429s] tuna API: FAIL (Get "https://api.tuna.am/v1/system/diagnose_settings": context deadline exceeded (Client.Timeout exceeded while awaiting headers)) [0s]

Параллельно другие пользователи начинают жаловаться на то, что сайт в браузере тоже не открывается. Также в профильных чатиках появляться новости о блокировке Cloudflare TLS 1.3 с включённой ECH.

Ну не будь дураками, мы 2+2 сложили, я пошёл понизил в настройках балансировщика TLS до 1.2, но ничего не произошло, у некоторых пользователей всё также не работало, при этом по просевшему количеству туннелей, мы понимали, что страдает примерно 20% наших пользователей. Но сами воспроизвести проблему ещё не могли.

Ну что-ж отключиться не получилось, сижу по утрам в номере за компом, днём гуляю в горах, вечером снова сижу за компом, жена мягко говоря не довольна этим 🙄

День 4 (отпуска). Нет маршрутов

Зачем мы в Tuna.am написали prometheus exporter для сервиса Ping-Admin.com и при чём тут блокировки Hetzner по маршрутизации?

Так как проблема проявляась только у части пользователей, было достаточно сложно провести диагностику и найти источник проблемы. Это Hetzner забанил Россию? Это РКН забанил Hetzner? Это просто сбой? Если да, то чей? В сетях каких провайдеров проблема? С этими вопросами я засыпал и просыпался всю первую неделю отпуска.

Мы попросили пользователей с проблемой присылать нам трассировки и о чудо, стало ясно, что это не TLS 1.3 с включённой ECH

Зачем мы в Tuna.am написали prometheus exporter для сервиса Ping-Admin.com и при чём тут блокировки Hetzner по маршрутизации?

А где наши маршруты то? Даже из сети провайдера не выходит трафик. Я не эксперт в сетях, но кажется анонсов просто нет?

Зачем мы в Tuna.am написали prometheus exporter для сервиса Ping-Admin.com и при чём тут блокировки Hetzner по маршрутизации?

Это был провайдер МТС и обращений от клиентов МТС было достаточно. Я пишу на почту NOC МТС - у нас проблем нет. Пишу в поддержку Hetzner - у нас проблем нет. Ну всё, это точно блокировка. Учитвая, что ни у кого проблем нет, кроме пользователей. Далее начинают появляться новости:

В России наблюдается недоступность подсетей у многих хостинг-провайдеров.

О проблемах начали сообщать еще в апреле (когда РКН заблокировал сайт провайдеров, которые не выполнили требования о приземлении) и июле этого года, тогда наблюдалась недоступность IP-адресов Linode и OVH HTTP/HTTPS на портах 80 и 443 из-за этого частично были недоступны сайт nmap, Reddit и другие.

С ноября юзеры стали сообщать о проблемах с сайтами, которые расположены на площадках Greenhost, Cloudflare, Hetzner, OVH, Aeza и других. Из-за проблем с этими площадками пострадали ресурсы: 2ip, сайт Notepad++, archlinux, filezilla и другие. При попытке открыть http версию сайта - в ответ начинают приходить TCP Retransmission

Причиной этого скорее всего является попытка Роскомнадзора бороться с VPN-сервисами, которые имеют подсети IP-адресов у этих хостинг-провайдеров. И это очень похоже на "иранизацию" российской цензуры, где практически все диапазоны IP-адресов крупных хостинг-провайдеров заблокированы.

День 5 (отпуска). От куда проверить?

Прежде чем решать как чинить, там всё просто, надо найти решение, как проверять, что починилось. Нам нужен сервис с кучей точек мониторинга по всей России, а у всех сервисов мониторинга в основном пара точек в МСК и СПБ и миллион в европе и штатах. И тут я натыкаюсь на сайт с прекрасным дизайном из 2010-х, отличным сервисом и ценами, 71 точка для проверки в России, есть API и супер демократичные цены.

Мы запустили проверку и убедились, что так и есть - примерно из 20% точек наш сайт не работает. Да даже прямо сейчас, 3 из 10 случайных не работает:

Зачем мы в Tuna.am написали prometheus exporter для сервиса Ping-Admin.com и при чём тут блокировки Hetzner по маршрутизации?

И если запустить трассировку с проблемных точек, то маршрутов там нет 💁‍♂

Решение проблемы с доступностью не сложное. Пришлось уносить сайт за CDN. Да может быть в будущем мы просто сменим провайдера, но в Hetzner мы много лет и как-то прикипели. Но это на будущее.

Итоги

Спустя неделю моего отпуска, всё перешло в штатный режим, но мониторинг от ping-admin мы решили оставить, полезная штука в наших условиях. Но нам сильно нехватило графиков с историей, дашбордов и так далее, так как в заданиях только алерты есть и история в CSV. Но как оказалось у сайта есть прекрасный API, к которому мы написали Prometheus exporter и сейчас любезно с вами делюсь 😁

Зачем мы в Tuna.am написали prometheus exporter для сервиса Ping-Admin.com и при чём тут блокировки Hetzner по маршрутизации?

Помино исходников мы сразу подготовили статические сборки, Docker образы, примеры с деплоем в Kubernetes и Docker Compose, а также базовый дашборд для Grafana.

На этом у меня всё, спасибо что дочитали до конца 🙂

Бесплатно проверить свой сайт из 184 (71 в РФ) точек вы можете тут:

А если вам нужен туннель в локальную сеть для публикации приложения, разработки телеграм ботов, тестирования платёжных систем:

11
Начать дискуссию