Итак, вы хотите поучаствовать в программе сбора метрик? Хорошо, мы постараемся вам в этом помочь:
Для начала, вам нужно добавить в settings.py несколько настроек:
Значения для некоторых настроек:
METRICS_HOST = '91.203.194.148' METRICS_CONTEXTS_URL = 'http://91.203.194.148:1942/register' METRICS_PORT = 8125
Значение METRICS_PREFIX нужно получить в отделе m3, и оно должно выглядеть следующим образом:
v1.tatar.bars.test.instance_test.
Попросите администратора вашего сервера открыть доступ по портам 1942 (tcp) и 8125 (udp) на указанные вам хосты.
Далее, обновитесь на версию m3 не ниже 2.0.9.5
$ pip install m3-core>=2.0.9.1
.и установите пакет pystatsd:
$ pip install pystatsd
Если у вас в settings.py настройка ENABLE_METRICS_COLLECTION стоит в True, то с этого момента на каждый пришедший к контроллеру m3-core запрос будет отправляться UDP-пакет к statsd, содержащий в себе время выполнения запроса.
Для отправки контекстных данных по метрикам (список URL контроллеров), необходимо один раз при старте программы вызвать функцию send_controllers_context():
from m3.metrics import send_controllers_contexts send_controllers_contexts()
Хорошим местом для помещения вызова этой функции будет являться urls.py, прямо после сбора паттернов контроллеров. При вызове этой функции будет произведен блокирующий (!) HTTP-запрос на сервер контекстов, содержащий в себе карту URL контроллеров и их хэшей.
Если вы хотите собирать статистику по количеству пользователей Django и их входам/выходам из системы, то по такому же принципу надо добавить вызов функции capture_users_metrics() с параметром None:
from m3.metrics import capture_users_metrics capture_users_metrics(None)
Перед этим очень рекомендуется сделать команду очистки сессий:
$ python ./manage.py cleanup
Причина этого состоит в том, что Django по-умолчанию не удаляет сессии с истекшим сроком жизни, а первоначальное значение счетчика активных пользователей равно количеству хранимых сессий. Рекомендуется периодически запускать эту команду в cron'е.
..."That's all, folks!"
Установите ngrep:
$ sudo apt-get install ngrep
Проверить, что метрики уходят на сервер statsd:
$ sudo ngrep -qd any . udp dst port 8125
Проверить, что при старте приложения контексты уходят на сервер:
$ sudo ngrep -qd any . tcp dst port 1942