Зачем мы в Tuna.am написали prometheus exporter для сервиса Ping-Admin.com и при чём тут блокировки Hetzner по маршрутизации?
Где-то 3 недели назад я решил пойти в отпуск, перед отпуском ничего не обновляли, не катили нового, не меняли, в общем план был отдохнуть максимально. Но РКН имел на мой отдых другие планы ...
День 3 (отпуска). API лежит для 20% пользователей из России
Уже 6 ноября к нам в tuna.am начинают массово обращаться пользователи - сервис не работает. Смотрим в свои графики - всё работает. Просим клиента запустить команду для само-диагностики - tuna diagnose и видим следующее:
Параллельно другие пользователи начинают жаловаться на то, что сайт в браузере тоже не открывается. Также в профильных чатиках появляться новости о блокировке Cloudflare TLS 1.3 с включённой ECH.
Ну не будь дураками, мы 2+2 сложили, я пошёл понизил в настройках балансировщика TLS до 1.2, но ничего не произошло, у некоторых пользователей всё также не работало, при этом по просевшему количеству туннелей, мы понимали, что страдает примерно 20% наших пользователей. Но сами воспроизвести проблему ещё не могли.
Ну что-ж отключиться не получилось, сижу по утрам в номере за компом, днём гуляю в горах, вечером снова сижу за компом, жена мягко говоря не довольна этим 🙄
День 4 (отпуска). Нет маршрутов
Так как проблема проявляась только у части пользователей, было достаточно сложно провести диагностику и найти источник проблемы. Это Hetzner забанил Россию? Это РКН забанил Hetzner? Это просто сбой? Если да, то чей? В сетях каких провайдеров проблема? С этими вопросами я засыпал и просыпался всю первую неделю отпуска.
Мы попросили пользователей с проблемой присылать нам трассировки и о чудо, стало ясно, что это не TLS 1.3 с включённой ECH
А где наши маршруты то? Даже из сети провайдера не выходит трафик. Я не эксперт в сетях, но кажется анонсов просто нет?
Это был провайдер МТС и обращений от клиентов МТС было достаточно. Я пишу на почту 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 случайных не работает:
И если запустить трассировку с проблемных точек, то маршрутов там нет 💁♂
Решение проблемы с доступностью не сложное. Пришлось уносить сайт за CDN. Да может быть в будущем мы просто сменим провайдера, но в Hetzner мы много лет и как-то прикипели. Но это на будущее.
Итоги
Спустя неделю моего отпуска, всё перешло в штатный режим, но мониторинг от ping-admin мы решили оставить, полезная штука в наших условиях. Но нам сильно нехватило графиков с историей, дашбордов и так далее, так как в заданиях только алерты есть и история в CSV. Но как оказалось у сайта есть прекрасный API, к которому мы написали Prometheus exporter и сейчас любезно с вами делюсь 😁
Помино исходников мы сразу подготовили статические сборки, Docker образы, примеры с деплоем в Kubernetes и Docker Compose, а также базовый дашборд для Grafana.
На этом у меня всё, спасибо что дочитали до конца 🙂
Бесплатно проверить свой сайт из 184 (71 в РФ) точек вы можете тут:
А если вам нужен туннель в локальную сеть для публикации приложения, разработки телеграм ботов, тестирования платёжных систем: