171 похожих чатов

Добрый день! есть пару сайтов, находящихся где-то на Украине у одного

хостера. Наш робот периодами к ним
ходит и собирают с них какую-то инфу. Периодически робот сталкивается с сетевыми ошибками.
Владельцы этих сайтов заинтересованы, чтобы наш робот к ним ходил и не было таких проблем.
Был некоторый пинг-понг между нами и техподдержкой того хостера о том, на чьей же стороне проблема.
В общем мне передали задачу. Было бы довольно просто, если бы проблема воспроизводилась постоянно, но
она очень плавающая (mtr вроде б могла немного прояснить ситуацию).
Т.к. у нас графитовый стек для приема метрик, я настроил плагин ping у collectd. Получаю метрики по
времени отклика и drop rate пингов.
Робот находится в ДЦ одного хостера N. У данного хостера 2 независимых канала, робот ходит через первый.

Получение метрик настроил по следующему принципу: пару серверов (на одном из них работает робот), выходящих в сеть через 1-ый канал ДЦ
хостера N, один сервер - через 2-ой, еще один сервер - находится в хетцнере.

После некоторого наблюдения видно, что drop rate с наших серверов, находящихся в ДЦ хостера N, периодами достигает 20%.
А у сервера, находящегося в hz, потерь практически нет (ну или иногда бывает в пару %).
Хотя наш хостер N и заявляет, что у него 2 совсем независимых канала, но пока метрикам подтверждается, что
проблема есть.
Но теперь встает вопрос - как более полно понять где именно проблема?
Видится, что надо нечто mtr-а, которая будет запускаться периодами и показывать потери/время отклика по каждому
из хопов ведущему к проблемному сайту. Как вообще такие метрики получить?
Понятно, что mtr не является сильно точной методикой проверки, но есть метод лучше?

1 ответов

12 просмотров

Смысла мерить дропы у хопов мало. Потому что отвечает тебе контрол плейн, а трафик форвардит датаплейн.

Похожие вопросы

Обсуждают сегодня

Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
А чем вам питонисты не угодили?😂
.
79
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
Всем здравствуйте! Я хотел узнать сколько стоит средняя месячная зарплата у Electron js разработчиков? Мне очень это важно и нужно, плиз помогите узнать эту инфу! Для Джунио...
U.K.
10
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
77
А дин типизация это хорошо или плохо?
Alexey
12
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Исходники плюс документация? Вы гоните)) демок хватит всем
zamtmn
11
Карта сайта