Паноптикум и ИИ. Java.. Java. mcp.. Java. mcp. mongodb.. Java. mcp. mongodb. MySQL.. Java. mcp. mongodb. MySQL. Open source.. Java. mcp. mongodb. MySQL. Open source. oracle.. Java. mcp. mongodb. MySQL. Open source. oracle. PostgreSQL.. Java. mcp. mongodb. MySQL. Open source. oracle. PostgreSQL. redis.. Java. mcp. mongodb. MySQL. Open source. oracle. PostgreSQL. redis. s3.. Java. mcp. mongodb. MySQL. Open source. oracle. PostgreSQL. redis. s3. базы данных.. Java. mcp. mongodb. MySQL. Open source. oracle. PostgreSQL. redis. s3. базы данных. ИИ.. Java. mcp. mongodb. MySQL. Open source. oracle. PostgreSQL. redis. s3. базы данных. ИИ. кубернетис.

Давайте попробуем еще раз, в прошлый раз как-то не задалось, но много воды утекло с тех пор. Проект начался как простой способ “заглянуть в БД сервера” собственно таким он и остается до сих пор. Но по мере развития ИИ в нем появились новые фишки.

Как гласит слоган на главной странице: Panopticum — место, откуда видно всё. Собственно я старался сделать его именно таким, чтобы можно было посмотреть и проверить как можно больше из одного места, желательно с одинаковым интерфейсом.

Сначала я просто начал наращивать количество коннекторов. И если сначала это было четыре вида БД, потом шесть, то теперь это 26 разных БД, логи из Kuberneties и просмотр S3 бакетов.

Почти все типы соединений поддерживаемые на настоящий момент

Почти все типы соединений поддерживаемые на настоящий момент

Как это обычно бывает – аппетит рос во время еды. Сначала я просто добавлял разные БД которые отличались коннектором, но при этом имели коннектор под Java – как ни странно, но таких оказалось не много.

Затем я добавил очереди – мы начали работать с RabbitMQ и для кучи уж с Kafka, хоть сам ее не использую, но пусть будет. Отчасти это была попытка пощупать и потыкать разные БД с мыслью: “Вдруг оно мне надо, а я не знаю”.

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

MCP tools

MCP tools

Это позволило ИИ знатно разогнаться, больше не надо его убеждать что и где лежит, он сам может поправить 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

Автор: Sharque

Источник