2.2. Настройка Boro Solution

Примечание

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

2.2.1. Миграция проектов с сервиса Boro

Архитектурой Boro предусмотрена возможность переноса проектов с сервиса Boro на локальный сервер Boro Solution. Миграция выполняется в несколько этапов:

  1. Экспорт проекта с сервиса Boro (выполняется по запросу инженером технической поддержки)

  2. Импорт полученного проекта администратором Boro Solution

  3. Запуск зонда

  4. Применение конфигурации зонда

Перенос проекта

Перенос проектов осуществляется по одному за счет экспорта и дальнейшего импорта файла проекта в формате JSON. В экспортируемый файл попадают следующие настройки:

  • Общие настройки проекта: название проекта, параметры доступа к FTP/SFTP серверам, настройки SAML-аутентификации и пр.

  • Ключ подключения зонда к проекту.

  • Полные настройки профилей: записи, пороговых значений, KPI и всех типов оповещений.

  • Сохранённые конфигурации всех зондов. Включая конфигурации для каждого активного зонда, которые создаются автоматически при экспорте проекта.

  • Записи о всех зондах, которые были запущены в проекте с информацией об истории их обновлений.

Важно

Отсутствует возможность переноса для статистики задач, журналов событий и аларм-журналов.

Чтобы получить экспортированный файл проекта, обратитесь в отдел технической поддержки компании Elecard.

Для переноса проекта на сервер необходимо заранее создать проект с произвольным названием, в который будет импортироваться другой проект. Далее войдите под учетной записью администратора сервера (роль Суперадмин) и перейдите на вкладку пользователей AdminUsers. Кликните на имя пользователя, который создал новый проект, и на вкладке User info в разделе Проекты найдите созданный проект. Загрузите полученный файл кнопкой Choose File и запустите процесс переноса кнопкой Import.

Запуск и настройка зондов

Зонды на новом сервере могут быть запущены несколькими способами:

  1. Запуск новых зондов

    Данный способ является самым простым. Скачайте архив с зондом на сервере Boro Solution, распакуйте его и запустите зонд. Таким образом можно запустить необходимое количество зондов. В случае если ранее зонд запускался как сервис, требуется произвести настройку заново. Подробные инструкции даны в разделе Запуск зонда как службы. В Web-интерфейсе переименуйте зонды (можно использовать новые имена).

  2. Изменение конфигурационного файла зондов, работавших с сервисом

    Можно сохранить зонды, которые вы использовали ранее, но для этого необходимо указать в конфигурации адрес нового сервера. При таком способе все задачи зонда будут запущены, однако профили настроек и нотификации не применятся. В разделе ниже описано, как применить конфигурацию зонда для восстановления всех настроек. Остановите зонд, откройте его конфигурационный файл monitor.cfg и внесите следующее изменение:

    В строке server укажите адрес сервера в формате "https://ip_or_hostname:8443".

    В ОС Linux можно использовать следующий скрипт

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

    SERVER_PUBLIC_NAME="ip_or_hostname"
    sed -i "s#\"server\": \"[^\"]*\"#\"server\": \"https://${SERVER_PUBLIC_NAME}:8443\"#" /PATH/TO/BORO/PROBE/monitor.cfg
    

    После редактирования конфигурации запустите зонд и убедитесь, что зонд отображается в веб-интерфейсе сервера Solution.

Применение конфигурации зонда

При любом из методов восстановления зондов необходимо применить конфигурацию из сохранений на сервере. Перейдите на страницу зонда и нажмите кнопку Применить конфигурацию зонда. Из списка выберите конфигурацию import live tasks (import) для необходимого зонда и нажмите Просмотреть. Если потребуется, обновите IP адреса интерфейсов и примените конфигурацию. В результате список задач будет восстановлен со всеми профилями настроек и оповещений. Обратите внимание, что импортированные профили будут содержать слово «(import)» в названии. Вы можете изменить имя профилей, это действие не потребует перенастройки задач.

2.2.2. Изменение имени сервера (hostname)

Чтобы изменить имя сервера, заданное в переменной SERVER_PUBLIC_NAME, уже после установки Boro Solution необходимо выполнить следующие шаги:

  • Запросить у инженера технической поддержки сертификат для нового имени или IP-адреса сервера.

  • Под учетной записью администратора сервера (роль Суперадмин), загрузить полученный сертификат во вкладке AdminCertificates.

  • При необходимости обновить имя сервера (Host name) во вкладке AdminEmail.

  • В консоли сервера, на котором установлен Boro Solution, запустить от суперпользователя следующую команду:

    NEW_SERVER_PUBLIC_NAME="local_BoroServer_ip_or_hostname"        #set new IP address or hostname of the BoroServer
    sed -i "s#client_api_base_url: .*#client_api_base_url: \"https://${NEW_SERVER_PUBLIC_NAME}:8443\"#;
            s#turn:turn:[^:]*:3478#turn:turn:${NEW_SERVER_PUBLIC_NAME}:3478#" \
            /opt/elecard/boro-rails-server/config/.env.yml
    sudo systemctl reload boro_puma.default
    if [ -e /etc/coturn/turnserver.conf ]; then
      sed -i "s/^realm=.*/realm=${NEW_SERVER_PUBLIC_NAME}/" /etc/coturn/turnserver.conf
      sudo systemctl restart coturn
    fi
    

    Вместо local_BoroServer_ip_or_hostname следует указать новое имя сервера. В результате будут изменены адрес сервера в конфигурационном файле зонда и адрес STUN/TURN сервера.

  • Ранее скачанные зонды не смогут подключиться к серверу, для возобновления их работы следует обновить значение поля server в файле monitor.cfg. После редактирования конфигурации зонда запустите его и убедитесь, что зонд отображается на сервере Solution.

2.2.3. Изменение расположения файлов БД

Чтобы изменить директорию, в которой должны храниться файлы базы данных, выполните следующие команды от суперпользователя:

# Step #0: setup environment:
NEW_DB_LOCATION="/PATH/TO/NEW/DB/LOCATION"        # set path to new location of DB files

# Step #1: check available space:
CUR_DB_DIR=$(realpath /var/lib/pgsql);
NEW_DB_LOCATION="$NEW_DB_LOCATION/pgsql";
mkdir -p "$NEW_DB_LOCATION";
if [ "$(findmnt -o TARGET -nT "$CUR_DB_DIR")" != "$(findmnt -o TARGET -nT "$NEW_DB_LOCATION")" ]; then
  DB_SIZE=$(du -s -B1M "$CUR_DB_DIR" | cut -f1)
  TARGET_FS_AVAIL=$(df -B1M --output=avail "$NEW_DB_LOCATION" | tail -1)
  if [ "$DB_SIZE" -gt "$TARGET_FS_AVAIL" ]; then
    echo "No sufficient space on destination FS:"
    printf "%22s - %9d MB\n" \
      "DB size" "$DB_SIZE" "target FS available" "$TARGET_FS_AVAIL"
  fi
fi

# Step #2: stop PostgreSQL:
PG_VER=$(psql -V | sed 's/psql (PostgreSQL) \([0-9]\+\)\.[0-9]\+.*/\1/');
systemctl stop postgresql-${PG_VER}.service;

# Step #3: move files:
echo "Start copying: \"$CUR_DB_DIR\" -> \"$NEW_DB_LOCATION\" ...";
time mv -Tf "$CUR_DB_DIR" "$NEW_DB_LOCATION";

# Step #4: update link and SELinux rules:
ln -Tfs "$NEW_DB_LOCATION" /var/lib/pgsql;
semanage fcontext --add --equal /var/lib/pgsql "$NEW_DB_LOCATION";
restorecon -R "$NEW_DB_LOCATION";

# Step #5: restore services:
systemctl restart postgresql-${PG_VER}.service \
  boro_sidekiq.default boro_puma.{web_api,default} \
  boro_golang.{worker,server};

# Step #6: check Solution status:
/opt/elecard/bin/status.sh

Примечания:

  • Вместо /PATH/TO/NEW/DB/LOCATION следует указать директорию для хранения файлов базы данных. Дополнительная поддиректория pgsql создастся в указанном месте назначения;

  • Из-за потенциально опасных операций следует выполнять скрипт по частям, проверяя ошибки после каждого шага;

  • Операция перемещения может занять некоторое время, которое зависит от размера БД и скоростей устройств хранения данных;

  • После выполнения переноса проверьте веб-интерфейс Solution.

2.2.4. Организация доступа к веб-интерфейсу по HTTPS

Чтобы настроить доступ к веб-интерфейсу по защищенному протоколу, необходимо выполнить следующее:

  • Добавить правило в Firewall:

    firewall-cmd --state && (firewall-cmd --permanent --add-service=https; firewall-cmd --reload);
    
  • Далее следует настроить пути до сертификата и ключа, которые должны использоваться для установки HTTPS-соединения. Для этого в файле /etc/nginx/sites-available/boro.https.conf укажите пути до сертификата ssl_certificate и ключа ssl_certificate_key. Рекомендуемым вариантом размещения сертификата и ключа являются пути, предуказанные в файле boro.https.conf Однако, если вы хотите использовать собственные пути размещения, требуется учесть следующие ограничения:

    • файлы должны иметь одинаковый контекст безопасности SELinux httpd_config_t;

    • не стоит размещать сертификат и ключ в домашних директориях каких-либо пользователей.

  • Для добавления конфигурационного файла с использованием HTTPS порта в nginx введите следующую команду:

    ln -fs ../sites-available/boro.https.conf /etc/nginx/sites-enabled/boro.https.conf;
    
  • Чтобы проверить конфигурацию и перезапустить nginx:

    nginx -t && (restorecon /var/run/nginx.pid; systemctl restart nginx)
    

2.2.5. Разрешение ControlAPI в Nginx

По умолчанию, доступ к API заблокирован для всех IP-адресов в настройках Nginx сервера. Чтобы настроить доступ, необходимо отредактировать файл /etc/nginx/sites-include/boro.conf на сервере Boro Solution. Найдите в файле следующий блок:

location /ctrl_api {
#    allow 10.1.1.0/16;
#    allow 2001:0db8::/32;
    deny all;
    try_files /dev/null @default;
}
  • Чтобы предоставить доступ, раскомментируйте строку allow и укажите IP-адрес или пул IP-адресов. Вы можете указать список правил, указывая несколько директив allow с новой строки.

  • Для разрешения доступа с любого IP-адреса закомментируйте строку deny all, чтобы она выглядела следующим образом:

    #    deny all;
    

Чтобы проверить конфигурацию и применить настройки, перезапустите nginx:

nginx -t && (restorecon /var/run/nginx.pid; systemctl restart nginx)

При возникновении ошибок устраните их и попытайтесь повторно применить конфигурацию.

Полезные ссылки: How To Whitelist IP in Nginx

2.2.6. Изменение сроков хранения статистики

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

Если необходимо изменить срок хранения, перейдите к файлу /opt/elecard/boro-rails-server/config/.env.yml и добавьте следующие строки:

db:
  keep_rotation_tables_days: xx

Вместо xx укажите нужный срок хранения в сутках. Далее примените изменения:

systemctl restart boro_sidekiq.default

2.2.7. Сброс пароля администратора

Если пароль администратора был скомпрометирован, то его можно изменить в Панели администрирования сервера. Найдите пользователя admin@admin.com, перейдите на вкладку редактирования информации и обновите его пароль.

Если пароль был забыт, единственный способ входа в аккаунт администратора — это сброс пароля. Зайдите в консоль сервера, на котором установлен Boro Solution и от суперпользователя выполните следующий скрипт. Где в качестве значения переменной USER_PASSWORD необходимо указать новый пароль:

USER_EMAIL='admin@admin.com'
USER_PASSWORD='adm1n678'

su boro -c "
  cd /opt/elecard/boro-rails-server;
  source setup_env.sh;
  bin/rails r \"
    u = User.find_by!(email: '$USER_EMAIL');
    u.password = '$USER_PASSWORD';
    u.save(validate: false)
  \"
"