Требования к серверу
Минимальные требования к серверу для установки Mistats:
- Процессор: 4 ядра с частотой более 3.5 ГГц
- ОЗУ: 8 Гб
- ПЗУ: 60 Гб
Установка
Для работы MiStats необходимо иметь следующие версии ПО:
- Smarty >= 2.0
- ClickHouse
Примечание 1: Для работы ClickHouse требуется поддержка инструкций SSE 4.2 для процессора
Примечание 2: рекомендуемая ОС для установки ClickHouse — Debian 11
Установка ClickHouse
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee \ /etc/apt/sources.list.d/clickhouse.list sudo apt-get update sudo apt-get install -y clickhouse-server clickhouse-client sudo service clickhouse-server start
Установка MiStats
Скачивание пакета доступно в Личном кабинете оператора. После успешного скачивания требуется распаковать пакет и установить нужные зависимости:
sudo dpkg -i mistats-*.deb pip install -r /usr/share/microimpuls/mistats/backend/requirements.txt
Далее следует настроить связь между Mistats и Сlickhouse, команды открытия CLI для Сlickhouse:
# еслиСlickhouse
и MiStats находятся на одном сервереclickhouse-client
# eсли ClickHouse стоит на выделенном сервере clickhouse-client --host <HOSTNAME> --secure --port 9940 --user <USERNAME> --password <PASSWORD>
Создание БД и пользователя:
create database smarty_stats;
export CHPASSWORD=`pwgen -s 16`
echo $CHPASSWORD
echo “create user smarty@'<IP>' identified by 'CHPASSWORD';” | clickhouse-client -d smarty_stats -u default --password <passowrd_default_user>
echo “create role smarty;” | clickhouse-client -d smarty_stats -u default --password <passowrd_default_user>
echo “grant all on smarty_stats.* to smarty;” | clickhouse-client -d smarty_stats -u default --password <passowrd_default_user>
echo “grant smarty to smarty@<IP>;” | clickhouse-client -d smarty_stats -u default --password <passowrd_default_user>
sed -i -e ‘s/CH_PASSWORD = None/'"CH_PASSWORD = $DBPASSWORD"'/g’ /usr/share/microimpuls/mistats/backend/settings/configuration.py
После всех действий необходимо отредактировать файл /usr/share/microimpuls/mistats/backend/settings/configuration.py
следующим образом:
CH_HOST = "localhost" # IP ClickHouse CH_PORT = None # Порт ClickHouse CH_DATABASE = "smarty_stats" # Название базы данных CH_USER = “smarty@<IP>” # Название аккаунта CH_PASSWORD = “CHPASSWORD” # Пароль аккаунта PORT = 8095 # Порт хоста сервера, на который будет отправляться статистика HOST = "0.0.0.0" # IP хоста сервера, на который будет отправляться статистика UVICORN_WORKERS = 2 # Количество воркеров LOG_LEVEL = "info" # Уровень логирования
Далее следует первичная инициализация ClickHouse:
python /usr/share/microimpuls/mistats/backend/commands/init_db.py
Примечание 3: если при запуске выдаётся ошибка “No module named Clickhouse” необходимо выполнить в терминале команду
export PYTHONPATH=»/usr/share/microimpuls/mistats/backend»
И непосредственно запуск MiStats:
python /usr/share/microimpuls/mistats/backend/run.py
Для фоновой работы процесса создайте файл mistats.service
в папке /etc/systemd/system
со следующим содержимым:
[Unit] Description=MiStats service After=network.target [Service] Type=simple ExecStart=/usr/bin/python /usr/share/microimpuls/mistats/backend/run.py [Install] WantedBy=multi-user.target
После создания service-файла запустите команды:
sudo systemctl enable mistats.service sudo systemctl start mistats.service
Настройка подключения к MiStats на стороне Smarty
В конфигурационном файле Smarty в секцию INSTALLED_APPS
требуется добавить параметр viewstats
(если модуль viewstats
ранее не настраивался) и удостовериться, что лицензионный ключ допускает использование данного модуля.
Далее требуется добавить в конфиг опции подключения к MiStats:
# адрес MiStats VIEWSTATS_MISTATS_BASE_URL = 'http://127.0.0.1:8000' # Количество записей в Redis, по достижении которого данные выгружаются в MiStats VIEWSTATS_BUFFER_MAX_COUNT = 2500000
Для применения настроек необходимо перезагрузить uWSGI:
sudo service uwsgi restart
Последний шаг — добавление в крон менеджмент-команды для отправки данных из Smarty в MiStats (рекомендуемый интервал — 5 минут):
smarty_manage push_stats --settings=settings.<settings name>