1. Домой
  2. Документы
  3. MiStats
  4. Установка и конфигурация

Установка и конфигурация

Требования к серверу

Минимальные требования к серверу для установки Mistats:

  • Процессор: 4 ядра с частотой более 3.5 ГГц
  • ОЗУ: 8 Гб
  • ПЗУ: 60 Гб

Установка

Для работы MiStats необходимо иметь следующие версии ПО:

  1. Smarty >= 2.0
  2. ClickHouse >= 24

Примечание 1: Для работы ClickHouse требуется поддержка инструкций SSE 4.2 для процессора

Примечание 2: рекомендуемая ОС для установки ClickHouse — Debian 11

Перед началом установки рекомендуем проверить настройки времени на сервере. Необходимо, чтобы установленный часовой пояс на сервере для MiStats совпадал с часовыми поясами на серверах, на которых развернуты Smarty и MongoDB.

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

timedatectl | grep 'Time zone'

Если на серверах установлены разные значения Time zone, то изменить его можно следующим образом (в качестве примера приведен часовой пояс Москвы GMT+3):

timedatectl set-timezone Europe/Moscow

Проверим, что часовой пояс был изменен:

$ timedatectl | grep 'Time zone'
                Time zone: Europe/Moscow (MSK, +0300)

Установка ClickHouse

sudo apt-get install -y apt-transport-https ca-certificates curl gnupg pwgen python3-pip python-is-python3
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 identified by '$CHPASSWORD';" | clickhouse-client -d smarty_stats -u default --password <password_default_user>
echo "create role smarty;" | clickhouse-client -d smarty_stats -u default --password <password_default_user>
echo "grant all on smarty_stats.* to smarty;" | clickhouse-client -d smarty_stats -u default --password <password_default_user>
echo "grant smarty to smarty;" | clickhouse-client -d smarty_stats -u default --password <password_default_user>
sed -i -e 's/CH_PASSWORD = None/'"CH_PASSWORD = \"$CHPASSWORD\""'/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" # Название аккаунта
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 в системе командой:

sudo systemctl status mistats.service

Если служба не запущена, то ее следует запустить:

sudo systemctl start mistats.service

Если же служба не была найдена совсем, то для фоновой работы процесса создайте файл 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 daemon-reload
sudo systemctl enable 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>