Контролируем работу множества серверов, при помощи БД и MySQL

vierasen

Client
Регистрация
10.12.2015
Сообщения
595
Благодарностей
281
Баллы
63
Статья рассчитана на пользователей ZennoPoster среднего уровня и вряд ли выйдет на первые места, но возможно кому-то будет интересно достаточно простое техническое решение, которое позволяет с 1 телефона контролировать работу нескольких серверов в режиме реального времени.

Предположим, у нас ситуация, когда аккаунты регистрируются одновременно на 4 серверах.

Как нам в таком случае понимать, какие сервера работают, какие отвалились? Какая сейчас скорость регистрации, возможно надо на какой-то сервер зайти и подправить положение?

В таком случае реализация шаблонов «на файлах» не очень подходит. Надо открывать, переключать окна в каждом из 4 дедиков, относительно удобно делать это с ПК, где много мониторов, но даже если отдельный человек этим занимается, то бегать всю смену по дедикам и заглядывать в лог вряд ли возможно.

Зато, когда мы всегда можем держать открытой подобную табличку, где сразу чисто визуально видна вся «температура по больнице» слежение за постоянной работоспособностью системы не является настолько уж и затруднительной задачей.
136042

Чтобы реализовать данный замысел, нам нужно реализовать эти подзадачи:
  • Установить базу данных MySQL
  • Настроить шаблоны на запись результатов именно в базу данных, а не в файлы (можно дублировать и то и то)
  • Настроить в live режиме выдачу данных в визуальном отображении, используя Metabase.
136043


Установка базы данных MySQL

Для меня работа с базами данных какое-то время казалось какой-то неведомой и непонятно зачем нужной вещью, и я всегда предпочитал все результаты записывать в файлы. Но жизнь заставила все-таки познакомиться с таким инструментом как базы данных (далее БД).

Так как у меня уже есть сервера с windows server, то почему бы просто не поставить все на один из них, они всегда подняты, работают практически круглосуточно и редко сбоят.

Качаем официальный MySQL Installer for Windows, устанавливаем его, проходим стандартно все шаги, выбираем пароль администратора БД (сохраняем его).

Затем скачиваем и устанавливаем DBeaver – софт, который поможет нам работать с базой данных. Это как phpMyAdmin -на максималках.

Жмем новое соединение - MySql – видим локалхост, вводим пароль, соглашаемся со всем. Создаем нужную базу данных, создаем таблицы, создаем поля.

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

136044


Я лишь приведу пару подводных камней, которые встретил, чтобы вы не тратили время.

Порт в файрволле открывается как правило автоматически после установки MySql. Но внешнее подключение запрещено для пользователя с админ правами, поэтому вам надо будет выполнить SQL запрос, который создает дополнительного пользователя.

SQL:
-- Создаем пользователя 'zenno_user' с надежным паролем, который может подключаться с любого IP ('%')
CREATE USER 'zenno_user'@'%' IDENTIFIED BY 'Ваш_Очень_Надежный_Пароль';

-- Даем этому пользователю полные права ТОЛЬКО на базу [ВАША БАЗА]
GRANT ALL PRIVILEGES ON myip_data.* TO 'zenno_user'@'%';

-- Применяем права
FLUSH PRIVILEGES;
Делается все примерно так:


136045



Чтобы проверить все ли работает - на своем локальном компьютере в DBeaver попробуйте создать новое подключение, используя IP-адрес вашего сервера, порт 3306, и логин/пароль нового пользователя zenno_user.
Если подключение прошло успешно — всё замечательно, можем переходить к следующему шагу.

Public Key Retrieval is not allowed – если вы получаете такую ошибку, предлагается следующий вариант решения:

Подключитесь к базе на сервере через root (например, в DBeaver на самом сервере) и выполните следующую SQL-команду:
SQL

SQL:
-- Меняем плагин аутентификации для вашего пользователя
ALTER USER 'zenno_user'@'%' IDENTIFIED WITH mysql_native_password BY 'Ваш_Очень_Надежный_Пароль';

-- Применяем изменения
FLUSH PRIVILEGES;
Настраиваем шаблон на работу с базой данных.

В базе данных у вас должны быть следующие колонки id (идентификатор, тип int) и время записи (тип timestamp). Остальные поля в зависимости от того, что делает ваш шаблон, например логин, пароль, поиск. Рекомендую обратиться в любую нейросеть которой опишите выше два параметра и что вы хотите вставить, и оно создаст вам 2 запроса – первый который создаст все эти колонки в вашей базе данных, второй – который будет вставлять это все через зенно.

Можете использовать как стандартный кубик для подключения mysql, так и c#.

Не расписываю подробно этот момент, так как сам пользуюсь нейросетями для составления MySQL команд.

Так выглядят данные для подключения на c# (ниже идет код вставки нужных полей):

136046


Так выглядит обычный кубик:

136047



Кому как удобно. У вас уже должны иметься переменные в шаблоне, которые нужно будет вставлять в БД. Некоторые переменные (типа временной метки) могут генерироваться автоматически.

Настроить в live режиме выдачу данных в визуальном отображении, используя Metabase

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

Он бывает в 2 вариантах в облачном либо jar (java-приложение). Будем использовать jar вариант.

Чтобы не захламлять статью – пишем в нейросеть «Как установить Metabase jar» и делаем все по инструкции, там проблем особых нет. Устанавливать надо в конкретную папку. По результатам советую создать bat файл, которым вы будете сразу запускать программу, если вдруг дедик потребовалось перезагрузить.

Код:
"C:\Program Files\Java\jdk-24\bin\java.exe" -Xmx4g -DMB_JETTY_HOST=0.0.0.0 -DMB_SITE_URL="http://ХХХ.ХХХ.XX.XX:3000" -jar metabase.jar
Мой бат файл выглядит так. XXX – это внешний айпи (порт надо так же открыть в защитнике) и обратите внимание -Xmx4g – этот ключ выделяет 4 гигабайта оперативной памяти, больше не надо, но и сервер должен позволять.

По результатам у вас будет на http://localhost:3000 (на том дедике где вы установили софт) открываться поле с предложением войти в metabase.

Логинимся, добавляем новую базу данных (все те реквизиты пользователя что мы и создавали в начале)

136048


Далее выбираем новый, выбираем нашу базу и в конструкторе выбираем представление которое мы хотим видеть. Можно не пользоваться конструктором, а выбрать SQL запрос (который сгенерили в нейросети словами) и выбрать создать новый SQL запрос.

136050


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

136051


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

136052


Собственно, рассказать о наличии данных инструментов и была цель данной статьи.

Если какие-то вопросы по сути статьи, готов ответить в рамках данной темы.
 

Вложения

  • Спасибо
Реакции: Dimon174

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)