Руководство администратора Спектр v 1.2.1

Глоссарий#

Термины и сокращения, которые используются для описания внутреннего устройства и функций программы:

Термин Описание, комментарий
Ansible ПО с открытым исходным кодом, которое автоматизирует установку программного обеспечения, управление конфигурацией и развёртывание приложений
API Application Programming Interface, программный интерфейс приложения
Corosync Программное обеспечение, позволяющее объединять сервера в кластер
CPU Central Processing Unit, центральный процессор
Dashboard Графический интерфейс, отображающий ключевые метрики и показатели процессов
IP-адрес Уникальный сетевой адрес узла в компьютерной сети, построенной на основе стека протоколов TCP/IP
JSON JavaScript Object Notation. Текстовый формат обмена данными, который представлен наборами пар “ключ-значение”
NTP Network Time Protocol. Сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью
Pacemaker Программное обеспечение – менеджер ресурсов кластера
PostgreSQL Свободная объектно-реляционная система управления базами данных
RAM Random Access Memory, оперативная память
RPM Red Hat Package Manager. Формат пакетов программного обеспечения, используемые в ряде Linux-дистрибутивов
SSH Secure Shell – сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений
SSL Secure Sockets Layer – уровень защищенных сокетов – криптографический протокол, который подразумевает более безопасную связь. Он использует асимметричную криптографию для аутентификации ключей обмена, симметричное шифрование для сохранения конфиденциальности, коды аутентификации сообщений для целостности сообщений
web-IPMI Интерфейс управления ЭВМ, предназначенный для автономного мониторинга и управления функциями, встроенными непосредственно в аппаратное и микропрограммное обеспечения серверных платформ
База данных Объект сервиса СУБД, в котором пользователи создают таблицы, представления, хранимые процедуры
Инстанс Экземпляр PostgreSQL, запущенный на одном из серверов сегментов, хранящий и обрабатывающий свою часть данных. Экземпляр класса в объектно-ориентированном программировании
Кластер Объект управления верхнего уровня; группа узлов, на которой запускаются сервисы СУБД
ОС Операционная Система
ПО Программное Обеспечение
ПАК Программно-аппаратный комплекс, совокупность аппаратных компонент (сервера, коммутаторы доступа и т.п.) и программного обеспечения, решающих некие прикладные задачи (машина баз данных, система управления виртуализацией и т.д.)
Сервис СУБД Целостная служба СУБД, работающая на конкретном кластере
СУБД Система Управления Базами Данных
Узел Сервер, входящий в кластер, на котором устанавливается ПО СУБД для запуска экземпляров СУБД и организации из них сервисов СУБД
ЭВМ Электронно-Вычислительная Машина

1 Общие сведения#

1.1 Область применения программы#

Основным предназначением Модуля управления кластером “Скала^р Спектр” (далее – “Спектр”) является предоставление возможности управления жизненным циклом ПАК семейства СКАЛА персоналом, к квалификации которого не предъявляется серьезных требований, в том числе персоналом сторонних организаций.

Основными задачами, решаемыми “Спектром”, являются:

  • Вывод узла ПАК из эксплуатации на обслуживание и его ввод в работу;
  • Остановка и запуск сервисов СУБД;
  • Остановка и запуск кластеров;
  • Выполнение операций над базами данных в сервисах СУБД;
  • Мониторинг узлов кластера и сервисов СУБД;
  • Снижение трудоемкости и времени обновления приложений и операционных систем за счет использования готовых эталонных образов.

“Спектр” должен обеспечивать реализацию следующих возможностей:

  • Регистрация (импорт) существующего кластера;
  • Регистрация кластеров Postgres из JSON, предоставляемого REST API Модуля Управления ПАК;
  • Управление кластерами для операций «старт кластера» и «остановка кластера»;
  • Управление узлами кластера для операций «старт узла кластера», «остановка узла кластера», «вывод узла на обслуживание», «возвращение узла из обслуживания»;
  • Управление сервисами СУБД для операций «изменение конфигурации сервиса» и «применение измененной конфигурации сервиса»;
  • Отображение данных из Модуля Мониторинга;
  • Добавление сервиса СУБД в кластер / удаление сервиса СУБД из кластера;
  • Добавление расширений СУБД Postgres;
  • Активация расширений СУБД Postgres;
  • Создание кластера Postgres, построенного с использованием компонентов Pacemaker и Corosync.

1.2 Уровень подготовки администраторов#

Администратор должен обладать следующими навыками:

  • установка, настройка системного программного обеспечения в ОС Linux;
  • просмотр и редактирование файлов с использованием команд ls, cat, less, vim, nano.

2 Условия применения программы#

2.1 Условия, необходимые для выполнения программы#

Работа “Спектра” в основном режиме осуществляется путем отправки управляющих воздействий через SSH или при помощи HTTP-запросов к Агенту “Спектра”. Это означает, что сервер с развернутым “Спектром” должен находится в одной сети c обслуживаемыми серверами.

Оптимальным решением является выделение под “Спектр” отдельного виртуального сервера в рамках хоста управления ПАК.

Тип реализующей ЭВМ: x86-64.

Минимальная аппаратная конфигурация сервера для установки “Спектра”:

  • CPU: от 2 ядер;
  • RAM: от 16 Гб;
  • ROM: от 600 Гб SSD для системных компонент;
  • NET: от 1 Гб Ethernet.

Для установки “Спектра” требуется наличие ПО ОС “АльтЛинукс 8 СП pелиз 9” или “АльтЛинукс 8 СП pелиз 10” на хосте “Спектра”, а также наличие запущенной в составе Узла управления виртуальной машины с ПО “Геном”.

2.2 Используемые сетевые порты#

ПOPT ПРОТОКОЛ НАЗНАЧЕНИЕ
8092 HTTPS На хосте “Спектра”, для доступа к веб-интерфейсу Спектра.
9000 HTTP На узлах кластера, для доступа к API агента “Спектра”
22 SSH На узлах кластера, для установки агентов “Спектра”
TCP/IP На узлах кластера, для доступа к PostgreSQL (порты зависят от настроек сервисов в кластере)
80 HTTP На хосте с ПО “Геном”, для доступа к HTTP репозиториям пакетов для установки “Спектра”.
50888 HTTP На хосте с ПО “Геном”, для доступа к API ПО “Геном”

3 Установка программы#

ПЕРЕД НАЧАЛОМ УСТАНОВКИ Перед началом установки ПО “Скала^р Спектр” необходимо убедиться в доступности хоста с ПО “Скала^р Геном” с хоста “Спектра”. Проверить доступность можно при помощи команды ping. IP-адрес хоста с ПО “Скала^р Геном” можно узнать в инсталляционной карте Машины МБД.П. Если в выводе команды ping содержатся ошибки, необходимо убедиться в том, что: виртуальная машина с ПО " Скала^р Геном" запущена на Узле управления. IP-адрес узла управления также может быть уточнен в инсталляционной карте; обеспечена сетевая связность между хостами ПО “Скала^р Геном” и “Спектра”; файрволл не блокирует доступ по протоколу HTTP и портам 80 и 50888 на хосте с ПО " Скала^р Геном".

В приведенных в данном руководстве примерах команд в качестве интерпретатора команд терминала используется Bash.

Примеры команд приведены вместе с приглашением интерпретатора команд, которое может отличаться у пользователя. В данном руководстве в приглашении интерпретатора команд выводятся имя пользователя, имя узла, на котором запускаются команды, и текущий каталог, в котором находится пользователь. Приглашение интерпретатора команд заканчивается символом “#”, что означает, что все команды выполняются под привилегированным пользователем root. Если приглашение заканчивается символом “$”, это означает что пользователь, выполняющий установку, не является привилегированным и при запуске команд необходимо повышение привилегий пользователя при помощи команды sudo.

При вводе команд пользователю не требуется вводить приглашение интерпретатора. Например, если в руководстве приводится команда

[root@spectrum-host ~]# mkdir -p spectrum-dist

это означает, что в терминале необходимо вводить только

mkdir -p spectrum-dist

3.1 Установка основного ПО “Спектр”#

Дистрибутив “Спектра” представляет собой tar.gz архив, который необходимо распаковать в произвольный каталог на хосте “Спектра”, например в /root/spectrum-dist.

В данном руководстве приводятся примеры команд для версии “Спектра” 1.1.70. Номер версии используется в имени файла с архивом дистрибутива “spectrum-dist-altlinux8.4-v1.1.70.tar.gz”, а также имени каталога, в который распаковывается архив. На момент выполнения установки или обновления “Спектра” пользователем версия может отличаться.

Распакованный архив содержит все RPM пакеты, необходимые для работы “Спектра”, а также скрипт установки install.sh.

Для установки необходимо перейти в директорию, в которую был распакован архив, и выполнить скрипт install.sh:

[root@spectrum-host ~]# mkdir -p spectrum-dist

[root@spectrum-host ~]# tar -xvf spectrum-dist-altlinux8.4-v1.1.70.tar.gz -C ./spectrum-dist

[root@spectrum-host ~]# cd spectrum-dist/spectrum-rpm-dist-v1.1.70

[root@spectrum-host spectrum-rpm-dist-v1.1.70]# ./install.sh

В ходе установки будут созданы все необходимые каталоги, установлено необходимое ПО (Ansible и необходимые для работы python-библиотеки), установлено ПО СУБД Postgres, создана необходимая для работы “Спектра” база данных.

В ходе установки пользователю необходимо ввести IP-адрес и порт, по которому доступно ПО модуля управления ПО «Скала^р Геном»:

[root@spectrum-host spectrum-0.1.0]# ./install.sh

Enter host IP for Genome: 1.2.3.4

Также в ходе установке необходимо ввести IP-адрес ПО “Скала^Р Визион”:

Enter host IP for Vision: 1.2.3.5

3.2 Установка дополнительного ПО “Спектр”#

Для корректной работы всех функций “Спектра” требуется установка на узлы кластеров, которыми управляет “Спектр”, следующего дополнительного программного обеспечения:

  • Агент “Спектра”,
  • Агент уведомлений “Спектра”,

а также установка на хосте “Спектра” ПО PgAdmin для администрирования СУБД.

Установка дополнительных компонентов “Спектра” выполняется в два этапа:

  • установка Агента “Спектра” на узлы кластера выполняется до импорта кластера в “Спектр”;
  • установка Агента уведомлений “Спектра”, выполняется после импорта кластера в “Спектр”.

Установка дополнительных компонентов “Спектра” выполняется с хоста “Спектра” из терминала, аналогично установке самого “Спектра”.

В каталоге дистрибутива “Спектра” при помощи любого текстового редактора необходимо отредактировать файл inventory_samples/cluster.yml, введя параметры кластера и узлов, узнать их можно в инсталляционной карте Машины МБД.П (должны быть указаны IP-адреса в сети управления).

Если каталог, в который распакован дистрибутив “Спектра” – это /root/spectrum-dist, то полный путь к нужному файлу будет /root/spectrum-dist/spectrum-rpm-dist-v1.1.70/inventory_samples/cluster.yml. Проверить наличие файла можно командой ls:

ls /root/spectrum-dist/spectrum-rpm-dist-v1.1.70/inventory_samples/cluster.yml

Просмотреть содержимое файла cluster.yml можно, например, командой cat:

cat /root/spectrum-dist/spectrum-rpm-dist-v1.1.70/inventory_samples/cluster.yml
В примере установка дополнительного ПО для “Спектра” выполняется для одного кластера. Если под управлением “Спектра” находятся несколько кластеров, то шаги по установке дополнительного ПО необходимо выполнить для каждого кластера.

3.2.1 Установка PgAdmin#

Дистрибутив PgAdmin представляет собой tar.gz архив pgadmin_dist_alt84_rpm.tar.gz, который необходимо распаковать в произвольный каталог на хосте “Спектра”, например в /root/spectrum-dist.

В данном руководстве приводятся примеры команд для архива с названием pgadmin_dist_alt84_rpm.tar.gz. Название архива может отличаться, например, может быть другая версия.

Распакованный архив содержит образы docker-контейнеров, необходимых для работы PgAdmin, а также скрипт установки deploy.sh.

Для установки необходимо перейти в директорию, в которую был распакован архив, и выполнить скрипт deploy.sh:

[root@spectrum-host ~]# mkdir -p spectrum-dist

[root@spectrum-host ~]# tar -xvf pgadmin-dist_altlinux84.tar.gz -C

[root@spectrum-host ~]# cd spectrum-dist/pgadmin-dist

[root@spectrum-host spectrum-rpm-dist-v1.1.70]# ./deploy.sh

3.2.2 Установка агента “Спектра”#

Для установки Агента “Спектра” в файле cluster.yml, описанном в п. 3.2, необходимо заполнить раздел hosts, в котором надо указать IP-адреса узлов кластера. Должны быть указаны IP-адреса в сети управления, узнать их можно в инсталляционной карте Машины МБД.П.

По умолчанию файл заполнен некорректными данными, которые необходимо исправить. При установке Агента “Спектра” раздел “recipients” можно оставить без изменений. Этот раздел будет заполнен при установке Агента уведомлений “Спектра” после выполнения импорта кластера, см. п. 3.2.3.

Полученный файл можно сохранить для использования в последующих обновлениях “Спектра”. Например, скопировать в домашний каталог пользователя, под которым выполняется установка “Спектра”. Для этого перейти в каталог, в который распакован архив с дистрибутивом “Спектра”. Например, если распаковали архив в /root/spectrum-dist, то выполнить команду

[root@spectrum-host ~]# cd /root/spectrum-dist/root/spectrum-dist/spectrum-rpm-dist-v1.1.70

и скопировать файл при помощи команды cp:

[root@spr-test-installer_v1_1 spectrum-rpm-dist-v1.1.70]# cp inventory_samples/cluster.yml ~

После заполнения IP-адресов узлов кластера можно перейти к установке Агента “Спектра” на узлы кластера.

Установка производится из каталога, в который распакован архив с дистрибутивом “Спектра”. Например, если распаковали архив в /root/spectrum-dist, то выполнить команду

cd /root/spectrum-dist/root/spectrum-dist/spectrum-rpm-dist-v1.1.70

И далее выполнить следующие команды:

source /opt/skala-r/spectrum/python-modules/bin/activate

ansible-playbook -i inventory_samples/cluster.yml deploy_spectrum_agent.yml -k

Если ранее была сделана копия файла cluster.yml, то последняя команда будет иметь вид:

ansible-playbook -i ~/cluster.yml deploy_spectrum_agent.yml -k

После запуска требуется ввести пароль пользователя root для доступа к узлам кластера.

При успешном выполнении команды должны отсутствовать сообщения об ошибках, а в итоговом отчете о запуске плейбука должны отсутствовать шаги со статусом failed.

Далее необходимо выполнить импорт кластера в “Спектр” с использованием графического веб-интерфейса. Подробнее об импорте кластеров см. в документе “Руководство пользователя», раздел 7.2 “Добавление найденного кластера”.

3.2.3 Установка агента уведомлений “Спектра”#

Перед установкой Агента уведомлений “Спектра” кластеры должны быть видны в графическом интерфейсе и иметь статус “Доступен”, например:

Для установки Агента уведомлений “Спектра” потребуются IP-адрес хоста “Спектра” и ID импортированного кластера.

IP-адрес отображается в адресной строке браузера, в котором открыт веб-интерфейс “Спектра”. ID кластера также отображаются в веб-интерфейсе в адресной строке браузера при переходе на страницу информации о кластере.

В приведенном примере IP-адрес “Спектра” - “192.168.190.138”, ID кластера — это значение “24ed3935-e6ce-4e72-8163-d2078f40d70c”.

Полученные ID кластера и IP-адрес необходимо вписать в соответствующие строки секции “recipients” того же файла cluster.yml, который использовался для установки Агента “Спектра” (см. п. 3.2.2):

Для кластера, приведенного в примере выше, итоговое содержимое файла inventory_samples/cluster.yml будет иметь вид:

all:
  vars:
    ansible_user: root
    ansible_ssh_extra_args: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
    rpm_mode: True

    # Параметры для установки алерт-агента    
    recipients:
      - name: spectrum

        # указать uuid кластера в Спектре, полученный UI Спектра    
        cluster_id: 24ed3935-e6ce-4e72-8163-d2078f40d70c

        # указать реальный IP адрес Спектра, доступ к котором есть с узла кластера
        spectrum_host: 192.168.190.138

[root@spectrum-public-121 ~]#

  hosts:

   # указать реальные IP адреса узлов кластера, к которым есть доступ с узла Спектра

   node01:
     ansible_host: 192.168.190.116 

   node02:
     ansible_host: 192.168.190.117 

   node03:
     ansible_host: 192.168.190.118

Далее для установки Агента уведомлений перейти в каталог, в который распакован архив с дистрибутивом “Спектра”. Например, если распаковали архив в /root/spectrum-dist, то выполнить команду

cd /root/spectrum-dist/root/spectrum-dist/spectrum-rpm-dist-v1.1.70

и далее следующие команды:

source /opt/skala-r/spectrum/python-modules/bin/activate 

ansible-playbook -i inventory_samples/cluster.yml deploy_spectrum_alert_agent.yml -k

Если ранее была сделана копия файла cluster.yml, то последняя команда будет иметь вид:

ansible-playbook -i ~/cluster.yml deploy_spectrum_alert_agent.yml -k

После запуска требуется ввести пароль пользователя root для доступа к узлам кластера.

При успешном выполнении команды в отчете о запуске плейбука должны отсутствовать шаги со статусом failed, при первой установке агента уведомлений будут присутствовать шаги со статусом ignored и сообщение об ошибке с пометкой “…ignoring”:

4 Установка обновлений программы#

Установка обновлений ПО “Спектр” и дополнительного ПО выполняется в случае, если на хосте “Спектра” уже существует ранее установленные версии ПО. Для установки и для обновления “Спектра” используется один и тот же пакет установочных файлов, поставляемый в виде архива с именем spectrum-dist-altlinux<номер версии>-v<номер версии Спектра>.tar.gz, например spectrum-dist-altlinux8.4-v1.1.70.tar.gz.

4.1 Обновление ПО “Спектр”#

Новый архив с дистрибутивом “Спектра” необходимо распаковать в произвольный каталог на хосте “Спектра”, например в /root/spectrum-dist.

Распакованный архив содержит все RPM-пакеты, необходимые для работы “Спектра”, а также скрипт установки install.sh и скрипт обновления update.sh.

Для обновления необходимо перейти в директорию, в которую был распакован архив, и выполнить скрипт update.sh:

[root@spectrum-host ~]# mkdir -p spectrum-dist 

[root@spectrum-host ~]# tar -xvf spectrum-dist-altlinux8.4-v1.2.0.tar.gz -C ./spectrum-dist 

[root@spectrum-host ~]# cd spectrum-dist/spectrum-rpm-dist-v1.2.0 

[root@spectrum-host ~]# rpm -Uvh rpm/spectrum-venv-*.rpm 

[root@spectrum-host spectrum-rpm-dist-v1.2.0]# ./update.sh

4.2 Обновление дополнительного ПО “Спектр”#

Шаги, необходимые для обновления дополнительного ПО “Спектр”, за исключением PgAdmin, полностью повторяют шаги первичной установки. Подробно установка дополнительного ПО описана в разделе 3.2 “Установка дополнительного ПО “Скала^р Спектр”.

При выполнении обновления “Спектра” для кластеров, импортированных в “Спектр” до выполнения обновления, необходимо выполнить процедуру перевода в режим использования Агента.

Для этого требуется выполнить HTTP запрос к API “Спектра”, например, при помощи команды curl. В адресе, на который выполняется запрос, используется ID кластера, который может быть получен из веб-интерфейса “Спектра”:

curl http://localhost:8092/api/spectrum/001/cluster/24ed3935-e6ce-4e72-8163-d2078f40d70c/agent -d '{"use_agent": true}' -X PUT -H "Content-Type: application/json"

Если команда введена корректно, то в выводе будут отсутствовать сообщения об ошибках:

{"result": {"update_cluster_agent_use_mode": 0}, "errors": []}

4.2.1 Обновление PgAdmin#

Дистрибутив PgAdmin представляет собой tar.gz архив pgadmin_dist_alt84_rpm.tar.gz, который необходимо распаковать в произвольный каталог на хосте “Спектра”, например в /root/pgadmin-dist.

В данном Руководстве приводятся примеры команд для архива с названием pgadmin_dist_alt84_rpm.tar.gz. Название архива может отличаться, например, может быть другая версия.

Распакованный архив содержит образы docker-контейнеров, необходимые для работы PgAdmin, а также скрипт обновления update.sh.

Для обновления необходимо перейти в директорию, в которую был распакован архив, и выполнить скрипт update.sh. Для этого нужно выполнить следующие команды:

[root@spectrum-host ~]# mkdir -p spectrum-dist 

[root@spectrum-host ~]# tar -xvf pgadmin_dist_alt84_rpm.tar.gz -C ./spectrum-dist 

[root@spectrum-host ~]# cd spectrum-dist/pgadmin-dist 

[root@spectrum-host pgadmin-dist]# ./update.sh

5 Проверка программы#

5.1 Отображение веб-интерфейса#

По завершении процесса установки, должен быть доступен веб-интерфейс “Спектра” через браузер по адресу https://<хост “Спектра”>:8092:

5.2 Проверка установки модулей#

Модули системы установлены в каталог /opt/skala-r/spectrum:

  • dashboards - конфигурация мониторинга “Спектра”;
  • spectrum-apiREST API “Спектра”;
  • spectrum-scheduler — модуль выполнения задач по расписанию;
  • spectrum-task-daemon — модуль выполнения задач по запросу;
  • spectrum-ui — файлы веб интерфейса;
  • modules/spectrum_pcs_pgsql — модуль управления кластером Postgres;
  • python-modules - дополнительные python-библиотеки, необходимые для работы “Спектра”.

Проверить наличие модулей командой ls -l:

ls -l /opt/skala-r/spectrum

Пример вывода команды:

5.3 Проверка состояния и управление сервисами “Спектра”#

По завершении процессов установки в системе будут запущены сервисы:

  • spectrum-api.service — сервис http API, реализующего взаимодействие пользовательского интерфейса с системой;
  • spectrum-tasks.service — демон, предназначенный для выполнения задач (выполняет запрос к spectrum-api и получает список невыполненных заданий);
  • spectrum-scheduler.service — демон, предназначенный для выполнения задач по расписанию.

Логи работы spectrum-api, spectrum-tasks, spectrum-scheduler сохраняются в /var/log/spectrum/spectrum_api.log, spectrum_task_daemon.log, spectrum_scheduler.log соответственно с ротацией.

5.3.1 Ручная остановка, запуск или перезапуск сервисов#

Для ручной остановки, запуска или перезапуска сервисов используются стандартные механизмы systemctl, например:

systemctl stop spectrum-tasks 

systemctl start spectrum-tasks 

systemctl restart spectrum-tasks

5.3.2 Проверка статусов сервисов#

Для проверки статуса сервисов используется стандартный механизм systemctl. Проверить состояние сервисов можно посредством выполнения следующих команд:

systemctl status spectrum-tasks

Пример активного сервиса spectrum-tasks:

systemctl status spectrum-api

Пример активного сервиса spectrum-api:

systemctl status spectrum-scheduler

Пример активного сервиса spectrum-scheduler:

5.4 Проверка состояния дополнительного ПО “Спектра”#

Проверка состояния агента “Спектра” и агента уведомлений “Спектра” выполняется на узлах кластера.

5.4.1 Проверка состояния агента “Спектра”#

Проверить корректность настройки можно, выполнив команду:

systemctl status spectrum-agent

Пример активного сервиса spectrum-agent:

5.4.2 Проверка состояния агента уведомлений “Спектра”#

Проверить корректность настройки можно, выполнив команду:

pcs alert

Пример вывода команды:

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

Файл, указанный в блоке Recipient команды pcs alert, должен содержать IP-адрес “Спектра” и ID кластера, который был настроен на этапе установки дополнительного ПО “Спектр”, см. раздел 3.2 данного документа. Посмотреть содержимое файла можно при помощи команды cat:

5.4.3 Проверка состояния PgAdmin#

На хосте “Спектра” выполнить команду:

docker ps

При корректной установке PgAdmin должен отобразиться список контейнеров со статусом Up. Пример вывода команды:

Также, в веб-интерфейсе при нажатии на пункт меню “PgAdmin” в новой вкладке браузера должна открываться форма авторизации PgAdmin:

5.5 Просмотр состояния системного ПО#

При работе “Спектр” использует следующее системное ПО, существенно влияющее на функционирование “Спектра”:

  • Веб-сервер Nginx;
  • СУБД PostgreSQL.

Состояние веб-сервера Nginx можно проверить при помощи команды:

systemctl status nginx

Пример вывода команды:

Состояние СУБД PostgreSQL можно проверить при помощи команды:

[root@spectrum-host ~]# systemctl status postgresql

Пример вывода команды:

5.6 Просмотр логов сервисов#

5.6.1 Просмотр логов основного ПО “Спектра”#

Просмотреть логи работы сервисов за интересующий период возможно, используя службу журналирования логов journalctl, например:

journalctl -u <имя сервиса> --since "начало интервала YYYY-MM-DD hh:mm:ss" --until "конец интервала YYYY-MM-DD hh:mm:ss"

Просмотреть текущие логи в режиме онлайн можно, используя службу журналирования логов journalctl, выполнив команду:

journalctl -fu <имя сервиса>

где <имя сервиса> - название одного из сервисов “Спектра”:

  • spectrum-api;
  • spectrum-tasks;
  • spectrum-scheduler;
  • spectrum-agent.
Просмотр логов работы сервиса specturm-agent выполняется на узлах кластера.

Пример запуска команды:

journalctl -u spectrum-api --since "2022-10-26 11:05:00" --until "2022-10-26 11:10:00"

Пример вывода команды:

Возможно также просмотреть лог-файлы сервисов “Спектра”:

  • /var/log/spectrum/spectrum-api.log;

  • /var/log/spectrum/spectrum-task-daemon.log;

  • /var/log/spectrum/spectrum-scheduler.log.

    Для Агентов “Спектра” файлы расположены на узлах кластера:

  • /var/log/spectrum/alert_manager/alert_manager.log;

  • /var/log/spectrum/spectrum-agent.log.

Для просмотра логов в режиме онлайн можно использовать команду tail:

tail -f /var/log/spectrum/spectrum-api.log

5.6.2 Просмотр логов дополнительного ПО “Спектра”#

Просмотр логов Nginx

Просмотреть логи работы веб-сервера Nginx за интересующий период можно, используя службу журналирования логов journalctl, например:

journalctl -u nginx --since "2023-06-01 16:00:00" --until "2023-06-01 16:05:00"

Просмотреть текущие логи в режиме онлайн можно, используя службу журналирования логов journalctl, выполнив команду:

journalctl -fu nginx

Веб-сервер Nginx также записывает логи запросов и ошибок в файлы /var/log/nginx/access.log и /var/log/nginx/error.log соответственно.

Для просмотра логов в режиме онлайн можно использовать команду tail:

tail /var/log/nginx/access.log tail /var/log/nginx/error.log
При просмотре журнала логов Nginx с использованием службы journalctl записи в логах могут отсутствовать, если никаких запросов к “Спектру” не выполняется. Также могут отсутствовать файлы логов Nginx /var/log/nginx/access.log и /var/log/nginx/error.log

5.6.3 Просмотр логов PostgreSQL#

Просмотреть логи СУБД PostgreSQL за интересующий период можно, используя службу журналирования логов journalctl, например:

journalctl -u postgresql --since "2023-06-01 16:00:00" --until "2023-06-01 16:05:00"

Просмотреть текущие логи в режиме онлайн можно, используя службу журналирования логов journalctl, выполнив команду:

journalctl -fu postgresql
Для PostgreSQL на хосте “Спектра” не используется логирование в файл.

5.7 Просмотр файлов конфигурации#

При установке “Спектра” для каждого сервиса создаются файлы конфигурации. Файлы конфигураций могут быть изменены администратором в процессе эксплуатации.

Пути расположения файлов конфигурации:

Сервис Спектра Расположение Название systemd-юнита Путь к файлу конфигурации
API “Спектра” Хост “Спектра” spectrum-api /opt/skala-r/spectrum/spectrum-api/config.conf
Служба выполнения фоновых задач Хост “Спектра” spectrum-tasks /opt/skala-r/spectrum/spectrum-tasks-daemon/config.conf
Служба выполнения задач по расписанию Хост “Спектра” spectrum-scheduler /opt/skala-r/spectrum/spectrum-scheduler/config.conf
Агент “Спектра” Узлы кластера spectrum-agent /opt/skala-r/spectrum/spectrum-agent/config.conf
Агент уведомлений “Спектра” Узлы кластера - /opt/skala-r/spectrum/alert-agent/spectrum.json

Для просмотра файла конфигурации можно использовать команду cat, например:

cat /opt/skala-r/spectrum/spectrum-api/config.conf

Примеры файлов конфигураций приведены в Приложении 1 данного руководства.

6 Устранение неисправностей “Спектра”#

6.1 Не открывается веб-интерфейс “Спектра”#

6.1.1 Описание неисправности#

В браузере отображается сообщение об ошибке браузера, например “Unable to connect

6.1.2 Способ устранения#

1 Проверить корректность указания порта и протокола в адресной строке браузера. При использовании протокола HTTP-порт “Спектра” по умолчанию 8092, при использовании протокола HTTPS используется порт 443, который можно не указывать в явном виде.

Ниже приведены корректные способы указания адреса “Спектра” в браузере:

2 Если адрес введен корректно, проверить статус веб-сервера Nginx на хосте “Спектра”, выполнив команду:

systemctl status nginx

Если статус веб-сервера отличается от “active (running)”, запустить веб-сервер командой:

systemctl start nginx

6.2 В веб-интерфейсе отсутствуют данные об объектах управления#

6.2.1 Описание неисправности#

Веб-интерфейс “Спектра” открывается, но в списке кластеров, узлов, сервисов отображается сообщение “Нет данных”, хотя ранее данные были.

6.2.2 Способ устранения#

На хосте “Спектра” проверить статус СУБД PostgreSQL командой:

systemctl status postgresql

1 Если статус отличается от “active (running)”, запустить веб-сервер командой:

systemctl start postgresql

2 Если в выводе статуса присутствуют сообщения о том, что закончилось свободное место на диске, необходимо освободить место на диске. Например, могут быть удалены или перемещены на другой диск старые файлы логов “Спектра”, расположенные в папке /var/log/spectrum. После очистки места на диске повторить запуск PostgreSQL, см. п. 1.

6.3 В веб-интерфейсе отображаются сообщения об ошибках при получении данных#

6.3.1 Описание неисправности#

При открытии страницы спектра появляются сообщения об ошибках.

6.3.2 Способ устранения#

1 На хосте “Спектра” проверить статус сервиса spectrum-api:

systemctl status spectrum-api

2 Если статус отличается от “active (running)”, запустить сервис командой:

systemctl start spectrum-api

3 Проверить работоспособность веб-сервера Nginx. См. описание неисправности “Не открывается веб-интерфейс “Спектра””.

6.4 В веб-интерфейсе отображаются устаревшие данные об объектах управления#

6.4.1 Описание неисправности#

В веб-интерфейсе “Спектра” отображаются статусы объектов управления, не соответствующие реальным статусам объектов. Например, в “Спектре” отображается статус узла “Резерв”, а в выводе команды управления кластерным ПО Pacemaker/Corosyncpcs status” статус узла Online.

6.4.2 Способ устранения#

1 На хосте “Спектра” проверить статус сервиса spectrum-scheduler, отвечающего за обновление данных об объектах управления в “Спектре”:

systemctl status spectrum-scheduler

Если статус отличается от “active (running)”, запустить сервис командой:

systemctl start spectrum-scheduler

2 Если сервис spectrum-scheduler работает корректно, то необходимо проверить доступность узлов кластера с хоста “Спектра”.

Для этого через веб-интерфейс получить IP-адреса узлов кластера, через которые “Спектр” осуществляет управление кластером, они отображаются на странице, доступной через пункт левого меню “Узлы”:

С хоста “Спектра” при помощи команды ping проверить доступность узла:

ping 192.168.190.71

Если в выводе команды ping присутствуют сообщения о недоступности узла – устранить проблему сетевой связности между хостом “Спектра” и узлом кластера.

3 Если узел доступен с хоста “Спектра”, на узле необходимо проверить статус Агента “Спектра”:

systemctl status spectrum-agent

Если статус отличается от “active (running)”, запустить сервис командой:

systemctl start spectrum-agent

6.5 Операция завершается с сообщением об ошибке Агента “Спектра”#

6.5.1 Описание неисправности#

При запуске операций над объектами управления одна из задач завершается с сообщениями об ошибках выполнения запросов к Агенту “Спектра”.

6.5.2 Способ устранения#

На всех узлах кластера, над которым выполнялась операция, проверить статус Агента “Спектра” и при необходимости запустить сервис spectrum-agent, см. шаг 3 в разделе “В веб-интерфейсе отображаются устаревшие данные об объектах управления”.

ПРИЛОЖЕНИЯ#

Приложение 1. Примеры файлов конфигураций#

Файл конфигурации spectrum-api#

[database_config]
host_db=127.0.0.1
port_db=5432
dbname=spectrum
username_db=admin
password_db=gvYviwgskDug

[bottle]
modules_dir=/opt/skala-r/spectrum/modules
dashboards_dir=/opt/skala-r/spectrum/dashboards

[genome_config]
host=192.168.190.100
port=50888
base_url=/api/genome/v001/ spectrum
username_db=genome
password_db=Ohs7ingohs2W

[vision_config]
host=192.168.190.133
port=8428
base_url=/vision/victoriametrics/api/v1

; Пример конфигурации для аутентификации
; В случае использования аутентификации - раскомментировать секцию auth
; и заполнить реальными параметрами

[auth]
auth_server=http://192.168.191.19:8080
realm=spectrum
client id=spectrum-users
client_secret=7Mqg3pEgRK@SPCdnujv3mNrSINmOFUjF
enabled=1

Файл конфигурации spectrum-tasks#

[app]
modules_dir=/opt/skala-r/spectrum/modules
log_level=DEBUG

[database_config]
database_config.dbname=postgres
database_config.username_db=genome
database_config.password_db=Ohs7ingohs2W


[spectrum__api]
host=localhost
port=8000

Файл конфигурации spectrum-scheduler#

[app]
modules_dir=/opt/skala-r/spectrum/modules
1og_level=DEBUG

[database_config]
database_config.dbname=postgres
database_config.username_db=genome
database_config.password_db=0hs7ingohs2W


[spectrum]
host=localhost
port=8000

[spectrum_agent]
port=9000

Файл конфигурации spectrum-agent#

{
    "log": {
        "level": "debug",
        "type": "file"
        "path": "/var/log/spectrum/"
    },
    "host": {
        "port": "9000"
    },
    "status": {
    "frequency": 5
    }
}

Описание полей файла конфигурации:

Поле файла конфигурации Описание поля
log Параметры логирования
log.level Уровень логирования
log.type Тип логирования. В примере используетя логирование в файл
log.path Путь к каталогу, в котором располагаются файлы логов Агента “Спектра”
host.port Порт, на котором запущен Агент “Спектра”
status.frequency Частота расчета конфигурации кластера в секундах

Файл конфигурации Агента уведомлений “Спектра”#

{
    "spectrum_host": "192.168.186.201",
    "spectrum_port": "8092",
    "cluster_id":  "e219blae-94bf-4e0e-a9db-a/f206f1666e",
    "proto": "https",
}

Описание полей файла конфигурации:

Поле файла конфигурации Описание поля
spectrum_host IP-адрес Спектра, на который будут отправляться уведомления о событиях кластера
spectrum_port Порт, на котором запущен API Спектра
cluster_id id кластера в Спектре, для которого настраиваются уведомления
proto Протокол, с помощью которого будут отправляться уведомления. Может принимать значения “https” или “http

Приложение 2. Настройка пользователей в KeyCloak#

Пользовательский интерфейс консоли администратора KeyCloak может отличаться от приведенного в данном руководстве.

Для работы со “Спектром” при включенной авторизации необходимо настроить пользователей в KeyCloak.

Сначала необходимо выбрать нужный Realm (рабочее пространство) в выпадающем списке над меню или создать новый (на скриншоте ниже выбрано значение “test-docs-realm”). После задания нужного Realm надо перейти в раздел “Клиенты” (”Clients”) и нажать на кнопку “Создать клиента” ("Create client"):

В поле “Client ID” нужно ввести идентификатор клиента и нажать кнопку “Далее” ("Next"). Заданный ID клиента будет в дальнейшем использоваться в параметрах конфигурации “Спектра”:

На следующей странице:

  • включить переключатель “Аутентификация клиента” ("Client authentication"),
  • выставить флаг “Standart Flow”,
  • выставить флаг “Direct access grants”,

после чего нажать кнопку “Сохранить” ("Save").

Эти параметры позднее можно изменить в настройках клиента.

Перейти во вкладку “Настройки” ("Settings"), в поле “Валидация URI перенаправления” ("Valid redirect URIs") добавить IP-адрес “Спектра” в формате

PROTO://IP:XXXX/*

где

  • PROTO - http или https, в зависимости от настроек SSL “Спектра” (см. п. 3.3);
  • IP - IP адрес “Спектра”;
  • XXXX - порт “Спектра” для доступа к веб-интерфейсу.

Нажать кнопку “Сохранить” ("Save").

Во вкладке “Учетные данные” ("Credentials") есть поле “Секрет” ("Client secret"), значение которого будет в дальнейшем использоваться в параметрах конфигурации “Спектра”. Значение можно скопировать в буфер обмена, нажав на соответствующую кнопку возле поля:

Перейти во вкладку “Роли” ("Roles"), нажать кнопку “Создать роль” ("Create role"):

На экране создания роли ввести имя роли и нажать “Сохранить” ("Save"):

В примере, приведенном в данном руководстве, должны быть созданы две роли: “spectrum-ro” и “spectrum-rw”.

Перейти в пункт меню “Пользователи” ("Users") и на странице “Пользователи” ("User list") нажать кнопку “Создать пользователя” ("Create new user"):

На экране создания пользователя:

  • ввести желаемое имя пользователя,
  • включить “E-mail подтвержден” ("Email verified"),
  • нажать кнопку “Создать” ("Create").

В примере, приведенном в данном руководстве, будет создано два пользователя: “sprtest” и “sprtest-rw”.

Перейти в пункт меню “Пользователи” и выбрать созданного пользователя, кликнув по его имени:

Перейти во вкладку “Учетные данные” ("Credentials"), нажать на кнопку “Установить пароль” ("Set password"):

В появившемся окне задать пароль, повторить пароль и выключить признак “Временный” ("Temporary"), если не требуется смена пароля пользователем при первом входе. Нажать кнопку “Сохранить” ("Save"):

Перейти во вкладку “Сопоставление ролей” ("Role mapping"), нажать кнопку “Назначить роль” ("Assign role"):

На экране назначения ролей:

  1. в выпадающем списке фильтра выбрать “Отсортировать по клиентам” ("Filter by client"),
  2. ввести полностью или частично имя необходимой роли/общей части имени ролей, созданной ранее,
  3. выбрать роли для назначения данному пользователю, выставив соответствующие флаги,
  4. нажать кнопку “Назначить” ("Assign").

В примере, приведенном в данном руководстве, пользователю sprtest назначается роль spectrum-ro, а пользователю sprtest-rwspectrum-ro и spectrum-rw.

После настройки необходимо включить настроенный Realm, если этого не было сделано ранее. Для этого нужно перейти в пункт меню “Настройки реалма” ("Realm settings") и включить переключатель “Включен” ("Enabled"):