Требования к серверу
Минимальные требования к серверу для установки Mistats:
- Процессор: 4 ядра с частотой более 3.5 ГГц
- ОЗУ: 8 Гб
- ПЗУ: 60 Гб
Установка
Для работы MiStats необходимо иметь следующие версии ПО:
- Smarty >= 2.0
- 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>