Возможно ли каскадирование серверов?

Started by Dmitry, March 20, 2008, 10:11:54 AM

Previous topic - Next topic

Dmitry

Коллеги, привет!

Допустим, есть у меня энное количество филиалов. В каждом филиале есть специальный человек, который следит за состоянием ИТ-инфраструктуры. У него есть сервер NetXMS.
В головном филиале также есть сервер NetXMS и специально обученный человек, который отвечает за состояние всех филиалов. Ему также необходимо получать мониторинговую информацию с филиальной инфраструктуры.

Внимание вопрос!
Могу ли я (и если да - каким образом) настроить каскадный сбор данных с отслеживаемых устройств? То бишь, желание: сбрасывать с одного устройства информацию на два сервера. Ну, или сбрасывать с агента информацию на ближайший сервер, который бы сохранял эту информацию у себя И форвардил её вышестоящему серверу.

С уважением,
Дмитрий

Alex

+1
тоже интересуюсь как это лучше сделать.
У меня ситуация по проще. Стоит два сервака с NetXMS (у каждого своя база). Один сервер стоит в России, второй зарубежом. Оба опрашивают одни и теже железки. Как сделать так, чтоб почтовые уведомления приходили только в том случае, если оба сервера говорят что тот или иной NODE в дауне, в противном случае если один из серверов говорит что все ОК, то не нужно присылать писем.

Victor Kirhenshtein

Мысли на тему распределенного мониторинга у нас были, но готовой имплементации на данный момент нет. Простая вещь, с которой можно начать - это event forwarding. Реализовать это не очень сложно, и во многих случаях этого будет достаточно. Доделаю 0.2.20 и можно будет заняться.

Best regards,
Victor

Victor Kirhenshtein

Quote from: Dmitry on March 20, 2008, 10:11:54 AM
Могу ли я (и если да - каким образом) настроить каскадный сбор данных с отслеживаемых устройств? То бишь, желание: сбрасывать с одного устройства информацию на два сервера. Ну, или сбрасывать с агента информацию на ближайший сервер, который бы сохранял эту информацию у себя И форвардил её вышестоящему серверу.

А обязательно иметь именно форвардинг собранных данных с первого сервера на второй? Можно ведь просто настроить на втором сервере сбор данных с тех-же хостов что и на первом. А если хосты недоступны напрямую, то использовать агента на первом сервере как прокси для второго. Кстати, только что пришла в голову мысль - первым шагом можно сделать синхронизацию шаблонов между серверами - это облегчит настройку  сбора одинаковых данных несколькими серверами.

Best regards,
Victor

Alex

И синхронизацию опрашиваемых нодов со списком интерфейсов, т.е. полный конфиг ноды :)

Victor Kirhenshtein

Что в принципе и означает полноценный распределенный мониторинг :) Надо двигаться в этом направлении. Вопросов там много на самом деле - например контроль доступа к объектам. Или направление синхронизации - т.е. кто главный. Или что делать если связь с серверами пропала, потом восстановилась, и какой-то объект изменен и там и там. И так далее... Может стоит открыть отдельную ветку на эту тему в feature requests, и набирать мысли - к моменту реализации лучше будем представлять что должно получиться?

Best regards,
Victor

Alex


Dmitry

Меня бы вполне устроило снятие информации с агентов двумя серверами. Это возможно? Насколько я понял, в конфиге агента прописывается единственный сервер NetXMS. Скажите уже мне, что я не прав :)

Alex

А у меня задача не много другая..
Хочу два сервера, которые работают в паралеле. На обоих серверах стоят агенты и базы данных. Оба снимают информацию с одних и тех же нодов. Оба должны постоянно синхронизировать данные между собой. Плюс кореляция алармов и event-ов на обоих серверах. Делается этот на тот случай, если один из серверов умрет по какой либо причине, чтобы хотя бы на одном из серверов осталась живая база.

Ситуация 1: Если один сервер потерял связь с одним из нодов, а второй нет, то в этом случае аларма высылаться не должно. Т.е. аларм высылается тока в том случае, если оба сервера подтверждают падение.
Ситуация 2: Если один из серверов по какой-либо причине перестает работать (выключение электричества, падение канала до сервера и т.д.), то второй работает в обычном режиме. После восстановления работоспособности упавшего сервера, происходит синхронизация.

При этом каждый из серверов должен мониторить второй сервер для определения работоспособности и возможности синхронизации базы.

Если я что-то неучел, прошу дополнить. Если что-то не понятно, задавайте вопросы, попробую ответить.

Alex Kirhenshtein

Quote from: Dmitry on March 22, 2008, 09:45:44 AM
Меня бы вполне устроило снятие информации с агентов двумя серверами. Это возможно? Насколько я понял, в конфиге агента прописывается единственный сервер NetXMS. Скажите уже мне, что я не прав :)

Да, это возможно — в конфиге можно прописать несколько адресов через запятую.
Мало того, один сервер может быть прописан в "Servers", что подзволяет ему только собирать данные, а второй — в ControlServers или MasterServers, что позволит ему еще и редактировать удаленно конфиг / апгрейдить агента.

isherim

Quote from: Victor Kirhenshtein on March 20, 2008, 07:47:26 PM
Простая вещь, с которой можно начать - это event forwarding. Реализовать это не очень сложно, и во многих случаях этого будет достаточно. Доделаю 0.2.20 и можно будет заняться.
Не было ли в эту сторону движений? Мне аккурат подошла бы схема с первичным сервером/серверами(опрашивающими только свою зону) и отправкой эвентов с него на головной.

Victor Kirhenshtein

Sdelal event forwarding v 0.2.23. Tam esche mnogo chto nado budet uluchshat', no uze mozno nachinat' pol'zovatsja.

isherim

Хелпик по использованию event forwarding будет небольшой?

Victor Kirhenshtein

Quote from: isherim on December 12, 2008, 05:33:49 AM
Хелпик по использованию event forwarding будет небольшой?

Конечно :)

Во-первых, оба сервера должны знать хосты, для которых пересылаются события. Принимающий сервер определяет, к какому хосту относится события, по IP адресу. При этом на принимающем сервере объект хоста может быть UNMANAGED, если его не требуется активно мониторить, а только принимать события.

На отсылающем сервере:
1. Создать новый action типа "Forward event to other NetXMS server", в поле "Remote NetXMS server" вписать адрес принимающего сервера;
2. В event processing policy для нужных событий добавить этот action.

На принимающем сервере:
1. Выставить параметры EnableISCListener и ReceiveForwardedEvents в 1;
2. рестартовать сервер;
3. Убедится, что есть события с такими-же именами, как будут отсылаться;
4. Убедится, что отсылающий сервер может подключится к принимающему по порту 4702.

Вроде все :)