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
Раздел в разработке
Настройка
Файл 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.
Журнал ошибок пишется в системный журнал, для просмотра можно воспользоваться командой sudo journalctl -u res
Для увеличения информативности журналов можно выполнить от суперпользователя команду:
sed -i 's/log-level error/log-level debug/g' /etc/systemd/system/res.service && systemctl daemon-reload && systemctl restart res.service
Удаление и обновление URS
Для удаления выполните команду:
/opt/res/uninstall
Команда удалит сервис и рабочий каталог, включая все файлы конфигурации. Для обновления запустите скрипт установки как указано в п 4. При этом, обновление не изменяет файл /opt/res/config.json.