RES. Руководство администратора: различия между версиями
Материал из Флора AI
| Строка 93: | Строка 93: | ||
Для работы res нужно установить и соответствующим образом настроить elasticsearch и kibana. Без настроенного подключения к рабочим elasticsearch и kibana RES не стартует и пишет в логи ошибку. | Для работы res нужно установить и соответствующим образом настроить elasticsearch и kibana. Без настроенного подключения к рабочим elasticsearch и kibana RES не стартует и пишет в логи ошибку. | ||
Пример установки на один хост, без кластера. | Пример установки на один хост c ip 1.2.3.4, без кластера. | ||
Устанавливаем elasticsearch | Устанавливаем elasticsearch | ||
| Строка 111: | Строка 111: | ||
<small><code>-------------------------------------------------------------------------------------------------</code></small> | <small><code>-------------------------------------------------------------------------------------------------</code></small> | ||
Копируем пароль - он будет использован в разделе servers.elastic.password файла конфигурации RES. | Копируем пароль - он будет использован в разделе servers.elastic.password файла конфигурации RES и для входа в вэб-интерфейс kibana. | ||
Генерируем CA | Генерируем CA | ||
| Строка 123: | Строка 123: | ||
С использованием CA генерируем сертификаты для elastik | С использованием CA генерируем сертификаты для elastik | ||
<small>/usr/share/elasticsearch/bin/elasticsearch-certutil cert \</small> | <small><code>/usr/share/elasticsearch/bin/elasticsearch-certutil cert \</code></small> | ||
<small>--out /etc/elasticsearch/certs/elastic.zip \</small> | <small><code>--out /etc/elasticsearch/certs/elastic.zip \</code></small> | ||
<small>--name elastic \</small> | <small><code>--name elastic \</code></small> | ||
<small>--ip | <small><code>--ip 1.2.3.4, 127.0.0.1 \</code></small> | ||
<small>--ca-cert /etc/elasticsearch/certs/ca/ca.crt \</small> | <small><code>--ca-cert /etc/elasticsearch/certs/ca/ca.crt \</code></small> | ||
<small>--ca-key /etc/elasticsearch/certs/ca/ca.key \</small> | <small><code>--ca-key /etc/elasticsearch/certs/ca/ca.key \</code></small> | ||
<small>--pem;</small> | <small><code>--pem;</code></small> | ||
<small>cd /etc/elasticsearch/certs/;</small> | <small><code>cd /etc/elasticsearch/certs/;</code></small> | ||
<small>unzip elastic.zip</small> | <small><code>unzip elastic.zip</code></small> | ||
Правим конфиг elasticsearch <small><code>/etc/elasticsearch/elasticsearch.yml</code></small> | Правим конфиг elasticsearch <small><code>/etc/elasticsearch/elasticsearch.yml</code></small> | ||
| Строка 145: | Строка 145: | ||
Результат: | Результат: | ||
<small>cluster.name: res # '''''имя кластера - призвольно'''''</small> | <small><code>cluster.name: res # '''''имя кластера - призвольно'''''</code></small> | ||
<small>path.data: /var/lib/elasticsearch</small> | <small><code>path.data: /var/lib/elasticsearch</code></small> | ||
<small>path.logs: /var/log/elasticsearch</small> | <small><code>path.logs: /var/log/elasticsearch</code></small> | ||
<small>network.host: | <small><code>network.host: 1.2.3.4 # '''''здесь ip хоста'''''</code></small> | ||
<small>http.port: 9200</small> | <small><code>http.port: 9200</code></small> | ||
<small>xpack.security.enabled: true</small> | <small><code>xpack.security.enabled: true</code></small> | ||
<small>xpack.security.enrollment.enabled: true</small> | <small><code>xpack.security.enrollment.enabled: true</code></small> | ||
<small>xpack.security.http.ssl:</small> | <small><code>xpack.security.http.ssl:</code></small> | ||
<small> enabled: true</small> | <small><code> enabled: true</code></small> | ||
<small> key: /etc/elasticsearch/certs/elastic/elastic.key</small> | <small><code> key: /etc/elasticsearch/certs/elastic/elastic.key</code></small> | ||
<small> certificate: /etc/elasticsearch/certs/elastic/elastic.crt</small> | <small><code> certificate: /etc/elasticsearch/certs/elastic/elastic.crt</code></small> | ||
<small> certificate_authorities: /etc/elasticsearch/certs/ca/ca.crt</small> | <small><code> certificate_authorities: /etc/elasticsearch/certs/ca/ca.crt</code></small> | ||
<small>xpack.security.transport.ssl:</small> | <small><code>xpack.security.transport.ssl:</code></small> | ||
<small> enabled: true</small> | <small><code> enabled: true</code></small> | ||
<small> verification_mode: certificate</small> | <small><code> verification_mode: certificate</code></small> | ||
<small> keystore.path: certs/transport.p12</small> | <small><code> keystore.path: certs/transport.p12</code></small> | ||
<small> truststore.path: certs/transport.p12</small> | <small><code> truststore.path: certs/transport.p12</code></small> | ||
<small>cluster.initial_master_nodes: ["hostname"] # '''''здесь подставить имя хоста'''''</small> | <small><code>cluster.initial_master_nodes: ["hostname"] # '''''здесь подставить имя хоста'''''</code></small> | ||
<small>http.host: 0.0.0.0</small> | <small><code>http.host: 0.0.0.0</code></small> | ||
Внимание - копировать конфиг отсюда напрямую не получится, wiki добавляет в начало строки вместо пробела "неразрывный пробел" - yaml его не воспринимает | Внимание - копировать конфиг отсюда напрямую не получится, wiki добавляет в начало строки вместо пробела "неразрывный пробел" - yaml его не воспринимает | ||
| Строка 195: | Строка 195: | ||
Проверяем с использованием пароля, сгенерированного в начале | Проверяем с использованием пароля, сгенерированного в начале | ||
<small><code>curl -X GET -u elastic:j9Of2HyCHcK55ElgziyW <nowiki>https:// | <small><code>curl -X GET -u elastic:j9Of2HyCHcK55ElgziyW <nowiki>https://1.2.3.4:9200</nowiki> --cacert /etc/elasticsearch/certs/ca/ca.crt</code></small> | ||
Устанавливаем kibana | Устанавливаем kibana | ||
dpkg -i kibana-8.15.3-amd64.deb | <code><small>dpkg -i kibana-8.15.3-amd64.deb</small></code> | ||
Папка для сертификатов : mkdir -p /etc/kibana/certs/ | Папка для сертификатов: <small><code>mkdir -p /etc/kibana/certs/</code></small> | ||
Копируем корневой сертификат: cp -r /etc/elasticsearch/certs/ca /etc/kibana/certs/ | Копируем корневой сертификат: <code><small>cp -r /etc/elasticsearch/certs/ca /etc/kibana/certs/</small></code> | ||
Генерируем сертификаты для kibana | Генерируем сертификаты для kibana | ||
/usr/share/elasticsearch/bin/elasticsearch-certutil cert \ | <small><code>/usr/share/elasticsearch/bin/elasticsearch-certutil cert \</code></small> | ||
--out /etc/kibana/certs/kibana.zip \ | <small><code>--out /etc/kibana/certs/kibana.zip \</code></small> | ||
--name kibana \ | <small><code>--name kibana \</code></small> | ||
--ip | <small><code>--ip 1.2.3.4, 127.0.0.1 \</code></small> | ||
--ca-cert /etc/elasticsearch/kibana/ca/ca.crt \ | <small><code>--ca-cert /etc/elasticsearch/kibana/ca/ca.crt \</code></small> | ||
--ca-key /etc/elasticsearch/kibana/ca/ca.key \ | <small><code>--ca-key /etc/elasticsearch/kibana/ca/ca.key \</code></small> | ||
--pem; | <small><code>--pem;</code></small> | ||
cd /etc/kibana/certs/; | <small><code>cd /etc/kibana/certs/;</code></small> | ||
unzip kibana.zip; | <small><code>unzip kibana.zip;</code></small> | ||
Получим пароль для доступа из kibana в elasticsearch <small><code>/usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system --auto</code></small> | |||
Пароль нужен будет дальше в строке <small><code>elasticsearch.password:</code></small> конфига kibana | |||
Правим конфиг kibana <small><code>/etc/kibana/kibana.yml</code></small> | |||
Результат | |||
<small><code>server.port: 5601</code></small> | |||
<small><code>server.host: 0.0.0.0</code></small> | |||
<small><code>server.publicBaseUrl: "<nowiki>https://1.2.3.4:5601</nowiki>"</code></small> | |||
<small><code>server.ssl.enabled: true</code></small> | |||
<small><code>server.ssl.certificate: /etc/kibana/certs/kibana/kibana.crt</code></small> | |||
<small><code>server.ssl.key: /etc/kibana/certs/kibana/kibana.key</code></small> | |||
<small><code>server.ssl.certificateAuthorities: /etc/kibana/certs/ca/ca.crt</code></small> | |||
<small><code>elasticsearch.hosts: ["<nowiki>https://1.2.3.4:9200</nowiki>"]</code></small> | |||
<small><code>elasticsearch.username: "kibana_system"</code></small> | |||
<small><code>elasticsearch.password: "gfntin_083SKBYC9V5yk"</code></small> | |||
<small><code>elasticsearch.ssl.certificateAuthorities: /etc/kibana/certs/ca/ca.crt</code></small> | |||
<small><code>elasticsearch.ssl.verificationMode: full</code></small> | |||
<small><code>logging:</code></small> | |||
<small><code> appenders:</code></small> | |||
<small><code> file:</code></small> | |||
<small><code> type: file</code></small> | |||
<small><code> fileName: /var/log/kibana/kibana.log</code></small> | |||
<small><code> layout:</code></small> | |||
<small><code> type: json</code></small> | |||
<small><code> root:</code></small> | |||
<small><code> appenders:</code></small> | |||
<small><code> - default</code></small> | |||
<small><code> - file</code></small> | |||
<small><code>pid.file: /run/kibana/kibana.pid</code></small> | |||
<small><code>xpack.security.authc.providers:</code></small> | |||
<small><code> basic.basic1:</code></small> | |||
<small><code> order: 0</code></small> | |||
<small><code> anonymous.anonymous1:</code></small> | |||
<small><code> order: 1</code></small> | |||
<small><code> credentials:</code></small> | |||
<small><code> username: "reports"</code></small> | |||
<small><code> password: "reports"</code></small> | |||
<small><code>xpack.security.sameSiteCookies: "None"</code></small> | |||
<small><code>csp.strict: false</code></small> | |||
<small><code>csp.warnLegacyBrowsers: false</code></small> | |||
<small><code>csp.script_src:</code></small> | |||
<small><code> - unsafe-inline</code></small> | |||
<small><code> - self</code></small> | |||
<small><code> - unsafe-eval</code></small> | |||
<small><code>server.customResponseHeaders: {"x-frame-options":"ALLOWALL"}</code></small> | |||
Запускаем kibana <small><code>systemctl enable kibana && systemctl start kibana</code></small> | |||
Заходим по адресу <small><code><nowiki>https://1.2.3.4:5601/</nowiki></code></small> с пользователем elastic и паролем который создал инсталлятор eklasticsearch. Tckb gjkexbkjcm - elasticsearch и kibana готовы к работе с res. | |||
==='''Протоколы и порты'''=== | ==='''Протоколы и порты'''=== | ||
Сервис использует порты 6157/tcp, 6170/tcp для реверс-прокси и порт 6189/tcp для доступа к api интерфейсу. Порт доступа к api может быть изменен в конфигурационном | Сервис использует порты 6157/tcp, 6170/tcp для реверс-прокси и порт 6189/tcp для доступа к api интерфейсу. Порт доступа к api может быть изменен в конфигурационном файле | ||
==='''Журналы работы'''=== | ==='''Журналы работы'''=== | ||
Версия от 16:27, 1 ноября 2024
Общее описание
Сервис предназначен для обеспечения доступа к отчетам 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. Tckb gjkexbkjcm - 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.