Devendra6 Ответов: 2

Получить статус сервера вверх/вниз в C#


Прежде всего, я прошу прощения, если это было не по теме, но мне было важно получить разрешение. Вопрос немного длинноват.

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

Обзор проекта:
Этот проект относится к телекоммуникационному сектору, дело в том, что у них есть почти 200 передающих комнат, которые соединены между собой через оптоволоконный кабель и могут быть доступны через IP-адрес.

Пожалуйста, посмотрите на изображение [Сетевое веб-изображение]

Посмотрите на центр (главный сервер). Все узлы от А до О (маршрутизаторы/серверы) взаимосвязаны с главным сервером, который может быть доступен через его IP-адрес. Узел N имеет 2 дочерние узлы (станции технического обслуживания) O и P, где K имеет подчиненных узлов L и M.

L и M подключены (состояние подключено)

в то время как оранжевая линия O и P, когда они отключены друг от друга или имеют пробой в своем маршруте, как главный сервер получает уведомление об этом.

Как я видел текущий сценарий, в настоящее время, когда у них есть какая-либо поломка между O и P, либо администратор должен войти на O-сервер и проверить, является ли статус P-сервера повышенным или пониженным, либо человек, сидящий на O-сервере, уведомляет основной сервер по телефону (то есть вручную).

Теперь владелец этого телекоммуникационного сектора хочет, чтобы всякий раз, когда у них происходит какая-либо поломка на каком-либо из своих серверов, они хотели получать автоматическое уведомление на экране.

Примечание: при подключении к каждому маршрутизатору для входа в систему требуется идентификатор пользователя и пароль.

Теперь, как я могу обнаружить, что O не подключен к P и показать уведомление на экране. какой класс В c# поможет мне выполнить эту задачу? Если какая-либо служба должна быть установлена на каждом сервере, который уведомляет о подключении своих подузлов к главному серверу, то в настоящее время их насчитывается (200 серверов), что не так уж мало.

Как насчет класса Pathping, но все еще не знаю о знании связи между O и P.

Пожалуйста, дайте любую идею/предложение, чтобы достичь этого. Поскольку я не хочу использовать для этого какое-либо стороннее программное обеспечение. Я должен развиваться самостоятельно, и в этой технологии должны быть изменения/улучшения в приложении.

Пожалуйста, помогите мне в чем-нибудь, в какой-нибудь статье или в чем-нибудь подобном.

Что я уже пробовал:

Я думал, что пингую на каждый сервер, но есть около 200 комнат передачи(серверов), которые взаимосвязаны друг с другом. Я не могу вычислить результат, который выполнит мою задачу.

2 Ответов

Рейтинг:
0

bling

Я предполагаю, что в каждой комнате передачи есть сервер. Вам нужно измерить каждый сервер в сети. На каждом сервере будет работать агент, который отслеживает путь канала к каждому соседнему серверу. Ваша идея использовать ping будет работать для этого. Эта статистика затем передается на центральный сервер и дополнительно отображается на консоли оператора помещения.

Конечно, сервер комнаты передачи может потерять связь с центральным сервером.

Ваш центральный сервер может отображать эти статистические данные в агрегированном виде на консоли.


Рейтинг:
0

bling

Вот еще один подход. Используйте протокол SNMP. Большинство устройств, включая коммутаторы и маршрутизаторы, поддерживают это.

В главной серверной комнате работает программа, которая отправляет SNMP-запросы каждому узлу сети.

Отсутствие ответа SNMP говорит вам, что узел не работает.

Ответы SNMP сообщают вам, какой сетевой интерфейс на каждом узле подключен или нет, а также сколько пакетов прошло или не прошло. Это было бы лучше, чем простое состояние вверх или вниз, поскольку вы могли бы определить QoS или качество обслуживания для каждого пути.


Devendra6

Огромное спасибо @bling за ваш ценный ответ. Я верю, что SNMP выполнит это требование. Подключается ли он ко всем подузлам без аутентификации. Если возможно, можете ли вы поделиться некоторыми ссылками или примером для достижения этой цели, так как я не знаю об использовании класса SNMP

[no name]

Более старый протокол SNMP использовал общий секрет - простой пароль, называемый "строкой сообщества". Новые протоколы SNMP используют более надежную аутентификацию. SNMP не только измеряет сетевые устройства-он также может управлять ими, поэтому доступ должен управляться.

Вот две возможные библиотеки:

http://www.snmpsharpnet.com/

https://github.com/lextm/sharpsnmplib