RES. Руководство администратора
Материал из Флора AI
Общее описание
Сервис предназначен для обеспечения доступа к отчетам kibana в интерфейсе URS и отправки в elasticsearch статистики работы роботов ses.
Термины и определения
Report Engine Service (RES) – сервис проксирования запросов к отчетам kibana в интерфейсе UPS. Сервис отображает все отчеты kibana.
Требования к окружению
Для нормальной работы сервис должен быть установлен на сервере с UPS. В процессе работы сервис взаимодействует со следующими сервисами:
• UPS – настройка осуществляется через файл /opt/ups/config.json • Kibana – настраивается через файл /opt/res/config.json. kibana может быть расположена на другом хосте • elasticsearch - настраивается через файл /opt/res/config.json. elasticsearch может быть расположена на другом хосте • SES – настраивается через файл /opt/res/config.json. SES может быть расположена на другом хосте
Установка RES
Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.
Перед установкой непосредственно сервиса необходимо установить сервисный пакет окружения.
- Установка/обновление RES осуществляется скриптом
chmod +x ./res-<версия>-<релиз>.sh && ./res-<версия>-<релиз>.sh -iс правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор./res-<версия>-<релиз>.shбез ключей. - Загрузить последнюю версию продукта
curl -s "https://repo.connect2ai.net/api/res/new" --user '[user]:[pass]' 2>&1 | bashили в интерактивном режимеbash -c "$(curl -s https://repo.connect2ai.net/api/res --user '[user]:[pass]' 2>&1)". - Обновить RES
/opt/res/inupdateв интерактивном режиме. Или запустить с ключём:/opt/res/inupdate -b- обновить до последней beta версии;/opt/res/inupdate -r- обновить до последней release версии;/opt/res/inupdate -n- обновить до последней версии (не важно beta или release).
- Установить модели
/opt/res/inmodelв интерактивном режиме. - Проверить актуальную версию продукта
curl -s "https://repo.connect2ai.net/api/res/version. - Посмотреть лог изменений
curl -s "https://repo.connect2ai.net/api/res/changelog" --user '[user]:[pass]'. - Полное описание всех команд API репозитория можно найти по ссылке https://repo.connect2ai.net/api.
[user]:[pass]- это тот же логин и пароль, что и от Nextcloud. - В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/):
- echo -n
"[user]:[pass]"> /opt/res/.userapi (это файл авторизации в API, нужен для обновления и загрузки моделей) - echo -n
"http://example.com:3128 [user] [password]"> /opt/res/.proxy (это файл конфигурации proxy необходим для обновления и загрузки моделей, при отсутсвующем прямом подключение к интернету)
- echo -n
При обновление следующий список файлов и папок сохранияется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления.
Не забудьте запустить сервис и включить в автозапуск в системе:
sudo systemctl enable res.service && sudo systemctl start res.service
Удостоверьтесь, что сервис стартовал:
systemctl status res.service
Разрешите доступ к портам 6157/tcp, 6170/tcp а также порту, определенном в конфиге (по умолчанию 6189/tcp) на нужном интерфейсе.
Настройка
Файл config.json
Настройка параметров сервиса res производится в файле /opt/res/config.json
Описание параметров приведено в таблице
| Параметр | По умолчанию | Назначение |
|---|---|---|
| port | 6189 | порт api интерфейса, используется в UPS - настройка servers.res в конфиге UPS |
| servers.ses.urls | "http://127.0.0.1:6190/ses" | список серверов ses для получения статистики |
| servers.ses.timers.connect | 60 | таймаут на подключение к серверам ses. При превышении в журнал будет записана ошибка таймаута |
| servers.ses.timers.read | 120 | таймаут на чтение статистики с серверов ses. При превышении в журнал будет записана ошибка таймаута |
| servers.elastic.url | "https://10.2.0.30:9200" | сервер elasticsearch для выгрузки статистики |
| servers.elastic.username | "elastic" | пользователь elasticsearch |
| servers.elastic.password | " " | пароль пользователя elasticsearch |
| servers.elastic.timers.connect | 60 | таймаут на подключение к серверам elasticsearch. При превышении в журнал будет записана ошибка таймаута |
| servers.elastic.timers.read | 120 | таймаут на выгрузку статистики на сервер elasticsearch. При превышении в журнал будет записана ошибка таймаута |
| servers.kibana.url | "https://10.2.0.30:5601" | сервер kibana для получения отчетов |
| servers.kibana.timers.connect | 60 | таймаут на подключение к серверу kibana. При превышении в журнал будет записана ошибка таймаута |
| servers.kibana.timers.read | 120 | таймаут на чтение отчетов с сервера kibana. При превышении в журнал будет записана ошибка таймаута |
| loader.time | ["05:00", "17:00"] | ежедневное расписание загрузки статистики |
| logs.path | "logs/" | папка хранения журналов |
| logs.backups | 10 | максимальное количество журнальных файлов |
| logs.maxSize | 5242880 | максимальный размер журнального файла |
Установка и настройка kibana + elasticsearch
Для работы res нужно установить и соответствующим образом настроить elasticsearch и kibana. Без настроенного подключения к рабочим elasticsearch и kibana RES не стартует и пишет в логи ошибку.
Пример установки на один хост c ip 1.2.3.4, без кластера.
Устанавливаем elasticsearch
dpkg -i elasticsearch-8.15.3-amd64.deb
Инсталлятор должен выдать
--------------------------- Security autoconfiguration information ------------------------------
.........
The generated password for the elastic built-in superuser is : j9Of2HyCHcK55ElgziyW
.........
-------------------------------------------------------------------------------------------------
Копируем пароль - он будет использован в разделе servers.elastic.password файла конфигурации RES и для входа в вэб-интерфейс kibana.
Генерируем CA
/usr/share/elasticsearch/bin/elasticsearch-certutil ca --pem --out /etc/elasticsearch/certs/ca.zip;
cd /etc/elasticsearch/certs/;
unzip ca.zip;
С использованием CA генерируем сертификаты для elastik
/usr/share/elasticsearch/bin/elasticsearch-certutil cert \
--out /etc/elasticsearch/certs/elastic.zip \
--name elastic \
--ip 1.2.3.4, 127.0.0.1 \
--ca-cert /etc/elasticsearch/certs/ca/ca.crt \
--ca-key /etc/elasticsearch/certs/ca/ca.key \
--pem;
cd /etc/elasticsearch/certs/;
unzip elastic.zip
Правим конфиг elasticsearch /etc/elasticsearch/elasticsearch.yml
Результат:
cluster.name: res # имя кластера - призвольно
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 1.2.3.4 # здесь ip хоста
http.port: 9200
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
key: /etc/elasticsearch/certs/elastic/elastic.key
certificate: /etc/elasticsearch/certs/elastic/elastic.crt
certificate_authorities: /etc/elasticsearch/certs/ca/ca.crt
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
cluster.initial_master_nodes: ["hostname"] # здесь подставить имя хоста
http.host: 0.0.0.0
Внимание - копировать конфиг отсюда напрямую не получится, wiki добавляет в начало строки вместо пробела "неразрывный пробел" - yaml его не воспринимает
Стартуем сервис
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch
Проверяем с использованием пароля, сгенерированного в начале
curl -X GET -u elastic:j9Of2HyCHcK55ElgziyW https://1.2.3.4:9200 --cacert /etc/elasticsearch/certs/ca/ca.crt
Устанавливаем kibana
dpkg -i kibana-8.15.3-amd64.deb
Папка для сертификатов: mkdir -p /etc/kibana/certs/
Копируем корневой сертификат: cp -r /etc/elasticsearch/certs/ca /etc/kibana/certs/
Генерируем сертификаты для kibana
/usr/share/elasticsearch/bin/elasticsearch-certutil cert \
--out /etc/kibana/certs/kibana.zip \
--name kibana \
--ip 1.2.3.4, 127.0.0.1 \
--ca-cert /etc/elasticsearch/kibana/ca/ca.crt \
--ca-key /etc/elasticsearch/kibana/ca/ca.key \
--pem;
cd /etc/kibana/certs/;
unzip kibana.zip;
Получим пароль для доступа из kibana в elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system --auto
Пароль нужен будет дальше в строке elasticsearch.password: конфига kibana
Правим конфиг kibana /etc/kibana/kibana.yml
Результат
server.port: 5601
server.host: 0.0.0.0
server.publicBaseUrl: "https://1.2.3.4:5601"
server.ssl.enabled: true
server.ssl.certificate: /etc/kibana/certs/kibana/kibana.crt
server.ssl.key: /etc/kibana/certs/kibana/kibana.key
server.ssl.certificateAuthorities: /etc/kibana/certs/ca/ca.crt
elasticsearch.hosts: ["https://1.2.3.4:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "gfntin_083SKBYC9V5yk"
elasticsearch.ssl.certificateAuthorities: /etc/kibana/certs/ca/ca.crt
elasticsearch.ssl.verificationMode: full
logging:
appenders:
file:
type: file
fileName: /var/log/kibana/kibana.log
layout:
type: json
root:
appenders:
- default
- file
pid.file: /run/kibana/kibana.pid
xpack.security.authc.providers:
basic.basic1:
order: 0
anonymous.anonymous1:
order: 1
credentials:
username: "reports"
password: "reports"
xpack.security.sameSiteCookies: "None"
csp.strict: false
csp.warnLegacyBrowsers: false
csp.script_src:
- unsafe-inline
- self
- unsafe-eval
server.customResponseHeaders: {"x-frame-options":"ALLOWALL"}
Запускаем kibana systemctl enable kibana && systemctl start kibana
Заходим по адресу https://1.2.3.4:5601/ с пользователем elastic и паролем который создал инсталлятор eklasticsearch. Если видим стартовую страничку kibana, то elasticsearch и kibana готовы к работе с res.
Протоколы и порты
Сервис использует порты 6157/tcp, 6170/tcp для реверс-прокси и порт 6189/tcp для доступа к api интерфейсу. Порт доступа к api может быть изменен в конфигурационном файле
Журналы работы
Для проверки состояния сервиса выполните sudo systemctl status res.
Журналы сервиса находятся в каталоге, определенном в конфигурационном файле (по умолчанию - /opt/res/logs/). Ошибки также пишутся в системный журнал, для просмотра можно воспользоваться командой sudo journalctl -u res
Удаление и обновление URS
Для удаления выполните команду:
/opt/res/uninstall
Команда удалит сервис и рабочий каталог, включая все файлы конфигурации. Для обновления запустите скрипт установки как указано в п 4. При этом, обновление не изменяет файл /opt/res/config.json.