Чем бы визуализировать детерминированный формальным набором данных граф компьютерной сети?
Неоднократно, терпеливо перепробовав множество программ для создания визуальной документации компьютерных сетей и не испытав к ним ничего кроме ненависти, я понял:
Мне нужна программа, которая делает визуализацию полностью сама, на 100% избавляя меня от ручного рисования. Как пользователь я не хочу влиять на то, в каком именно месте листа отобразится определённый хост, из каких точек (геометрически) у него выйдут соединительные линии, вручную тягать эти линии дабы они эстэтически-приемлемо легли на карту. Я хочу описать сеть набором формальных данных (набором фактов (деклараций таких сущьностей, как хосты (а также их взаимоотношений типа хост A есть гостевая ВМ на хосте Б), интерфейсы с параметрами адресации, свитчи, кабели, кабинеты, этажи, здания, страны (сейчас даже в мелком бизнесе всё чаще встречаются географически разнесённые структуры) (последние пунуты не обязательны — можно попроще, хотябы что-то)) хранящихся, например, в виде структурированного текста или записей в БД) и получить более-менее опрятную, читабельную картинку (желательно с возможностью оптимизации под лист А4 (или какой задам)).
Конечно я был бы счастлив получить наводку на готовое приложение (особенно с вменяемой для админа-одиночки ценой), но не надеюсь на это. Как вариант я готов попытаться разработать что-то такое сам, но в таком случае, ввиду отсутствия знаний теории графов и энтузиазма к велоизобретательству, нуждаюсь в рекомендациях по выбору библиотек/компонентов и вообще дельных мыслях по поводу.
Программирую на C# и Scala (Java), но в случае оправданности (например наличия особенно хороших библиотек для этого дела) — не против и других языков. Предпочитаю десктопные приложения, но, соответственно, не побрезгую и web-технологиями.
Если я правильно понял задачу, то вам подойдёт набор программ Graphviz.
Они предназначены для автоматической отрисовки графов по описанию.
Создаётся текстовый файл с довольно простым описанием графа: вершины, связи между ними, дополнительные свойства(подписи, форма, цвета). После этого утилита dot строит готовое изображение, формат вывода можно настроить.
У самого такая же задача, поскольку формализовывать ЦОД в MS Визио с описанием всего можно с привязкой к БД, да, но описывать взаимосвязи, это уже печально.
Помню, что когда-то в одной компании был развёрнут нагиос с хранением конфигурации в mysql там в вебморде красиво рисовались по очереди хосты с зависимостями и сервисами, но это было давно и надстройку уже не помню, думаю можно найти.
из моей визио карты в html получается неплохой поиск, но автоматизация заполнения — это печалька
Поищите по возможности, интересно было бы взглянуть. Сам я по nagios и т.п., увы, не в теме совсем, всё руки не доходят изучить и необходимости пока не было (у меня все сети в пределах нескольких десятков компов).
Кроме того, раз Вы тоже об этом думали, можете покидать мне идеи (сущьности, аттрибуты, кейсы, как должно визуализироваться, например) чтобы я в своих попытках разработки (хочу таки попытаться разработать модель описания и генератор скриптов для Graphviz) не упустил чего-нибудь, с чем не сталкивался в своей скромной практике. За «ноу-хау» не волнуйтесь — программа (коли что-то получится) будет полностью свободная, с открытым кодом.
Asset management — то, что нам с Вами и надо, в общем.
А я думал «asset management» — это инвентаризация, ответ на вопрос «что у нас там на баллансе, где оно и в каком состоянии». Я же ставлю задачу сгенерировать схему, посмотрев на которую любой мало-мальски имеющий представление о предмете, узрел как устроена эта сеть, что там, как, через что и куда…
«Инвентаризация» и схема в общем-то часть документирования и ITIL'а.
инвентаризация в данном контексте не финансовая, это нас вообще касаться по факту не должно.
Но я не хочу в результате аварии линка между офисами случайно узнать, что в подвале оказались залиты не только медиаконвертер оптики, а и забытый повторитель(!) на забытом резервном линке, который был настроен на заре веков и коаксиале первым админом — реальный кейс, кстати.
Мне часто приходится принимать в своё управление сети (масштаба офисного здания), посторенные с помощю мочалкообразного нагромождения погребённых в сугробах пыли проводов, кучи полудохлых свитчей и роутеров SOHO-класса и первое (и вполне разумное) требование клиента — не просто поддержать это в рабочем состоянии с помощью синей изоленты и такой-то матери, а разработать чёткую документацию, которую я и сам бы рад иметь, да предыдущий админ как-то об этом не подумал (и в лучшем случае что-то расскажет мне на словах, а часто и вовсе откажется сотрудничать). Так вот если непосредственно разгребанием всего этого заниматься мне по натуре даже интересно и саму документацию я в результате очень хочу иметь, то вот собственно рисовать её в «пэйнтах» разной степени пафосности — это то занятие, необходимость заниматься которым заставляет меня проклинать весь мир бессонными ночами…
Ну я Вам уже предложил перейти в личку и обменяться там скайпами для более плодотворного обсуждения написания данного решения, а Вы всё молчите и молчите.
я уже навскидку несколько мыслей по данному вопросу имею.