Давайте попробуем еще раз, в прошлый раз как-то не задалось, но много воды утекло с тех пор. Проект начался как простой способ «заглянуть в БД сервера» собственно таким он и остается до сих пор. Но по мере развития ИИ в нем появились новые фишки.
Как гласит слоган на главной странице: Panopticum — место, откуда видно всё. Собственно я старался сделать его именно таким, чтобы можно было посмотреть и проверить как можно больше из одного места, желательно с одинаковым интерфейсом.
Сначала я просто начал наращивать количество коннекторов. И если сначала это было четыре вида БД, потом шесть, то теперь это 26 разных БД, логи из Kuberneties и просмотр S3 бакетов.
Как это обычно бывает — аппетит рос во время еды. Сначала я просто добавлял разные БД которые отличались коннектором, но при этом имели коннектор под Java — как ни странно, но таких оказалось не много.
Затем я добавил очереди — мы начали работать с RabbitMQ и для кучи уж с Kafka, хоть сам ее не использую, но пусть будет. Отчасти это была попытка пощупать и потыкать разные БД с мыслью: «Вдруг оно мне надо, а я не знаю».
Потом мне надоело копи-пастить данные в курсор, но прикрутить просто MCP с возможностью выполнять SQL/HQL и прочее — оказалось недостаточно. Сети тупят, они не понимают типы полей, они не видят ключей и связи, это все сильно бесит и их и меня. Пришлось доработать напильником и набросать всяких описательных инструментов.
Это позволило ИИ знатно разогнаться, больше не надо его убеждать что и где лежит, он сам может поправить INSERT, создать дополнительные данные в словарях, удалить зависимости.
Для авто-тестов добавил REST API после чего появилась возможность тыкать те же сервера и проверять те же данные, которые только что записал туда бэк. Можно писать e2e, можно создавать невозможные данные и всякие неожиданные null — записи. Все это сильно помогает проверять не изобретая велосипед каждый раз когда авто-тесту нужно просто сходить в базу.
Но мне и этого оказалось мало. В какой-то момент взялся я за профилирование, а в системе с микросервисами это то еще удовольствие. На каждом сервере часы идут немножко по-своему, сеть может работать как захочет и тупить в самых неожиданных местах. И чтобы «видеть все» нам нужны были логи!
Сначала я подумал: «Где БД и где логи, как ты себе это представляешь?», а потом подумал и действительно… name-space, pod, logs — все линейно, все понятно… Как говориться: «Тот же Dizzy, вид с боку». Следом прилетели S3, нет ну а чего? Всем можно, а им нет?
В итоге MCP смог разбирать длинные цепочки запросов, смотреть в логи всех сервисов, а заодно и все доступные базы. Если же между ними висит брокер сообщений, то можно посмотреть и в него.
ИИ больше не тупит разбирая локальные логи с фразой: «Во всем виноват удаленный сервер, он долго обрабатывал запрос», — больше так легко не объяснить почему все так медленно работает. Попутно появилась фактура которую можно показать девопсам, чтобы было понятней что где и как сломалось.
И так зачем же это все нужно? Да просто чтобы поднять один докер-образ, а не разворачивать целый зоопарк разных тулов под каждую базу. Чтобы ИИ можно было просто скопировать ту таблицу которая прямо сейчас открыта в интерфейса и сказать «Посмотри когда мы создали эти записи» или что-то подобное. Можно читать логи кубера не разворачивая монстра типа ранчера и не настраивая линзу каждый раз после обновления.
А еще меня крайне удивляет ставший в последнее время модный подход разработчиков, которые делают «универсальный инструмент» с доступом к 2-3 коннекторам, а остальное «простите за деньги». А потому лицензия MIT и открытый код — наше все: https://github.com/theSharque/panopticum — Тут все исходники, там же настроен action на выкладывание докера.
Вот тут чуть больше технички и на русском: https://github.com/theSharque/panopticum/blob/main/README_RU.md
После свежего релиза как правило проходит 1-2 минорных ибо новые библиотеки приносят новые проблемы и их надо исправлять, но я стараюсь следить за выходом обновлений библиотек и своевременно фиксить.
Собственно разворачивается все достаточно легко и быстро с hub.docker: https://hub.docker.com/r/sharque/panopticum
ссылка на оригинал статьи https://habr.com/ru/articles/1034894/