StatsD — это « сетевой демон, который работает на платформе Node.js и прослушивает статистику, такую как счетчики и таймеры, отправляемую по UDP, и отправляет агрегаты одной или нескольким подключаемым внутренним службам».
Я уже упоминал, что StatsD в вашем стартапе нуждается в панели инструментов , над фруктовым блогом Земанты.
Идея StatsD заключается в следующем:
- Материал случается
- Отправить метрики «материала» в центральную службу (StatsD)
- StatsD действует как буфер, пересылая агрегированные метрики каждые X секунд
Ваша архитектура теперь имеет центральную службу, которая собирает все ваши метрики. Затем он подталкивает их к соответствующему программному обеспечению, которому не нужно обрабатывать слишком много трафика, и гарантируется, что данные будут поступать из одного источника в очищенном формате.
Прямо из браузера?
Сбор данных в StatsD работает замечательно. Это быстро, надежно, чрезвычайно надежно, и вы можете предоставить ему практически любые данные, о которых вы только можете подумать.
Если ваш клиент не браузер.
Видите, StatsD принимает только пакеты UDP и браузеры, которые не позволяют отправлять пакеты UDP. Для этого есть веское оправдание — не имеет значения, потеряны ли некоторые пакеты, если все, что вы измеряете, не замедляется измерением.
Чтобы решить эту проблему, я создал простой прокси в node.js. Он принимает обычные HTTP-запросы и отправляет данные в StatsD. Надеюсь, простота гарантирует скорость.
API представляет собой простой пиксель отслеживания:
<img src="http://<address>?t=<type>&v=<value>&b=<bucket>" />
Где тип — один из c (счетчик) , t (таймер) , g (датчик) . Как в соответствии с соглашением об именах StatsD. А ведро — это просто название вашей метрики.
Источник на github. Не стесняйтесь использовать его.
Прямо в браузер
Хорошо, теперь мы можем собирать данные из браузера, но я также хочу отправить их прямо в браузер. Ничего из этого графического материала — я хочу использовать некоторые другие модные графики и визуализации. Да просто так.
Чтобы решить эту проблему, я реализовал сокет socket.io для StatsD. Его также можно найти на github -> https://github.com/etsy/statsd/pull/102.
Я надеюсь, что запрос на удаление будет объединен в ближайшее время или вообще в этом отношении. Я действительно считаю, что это полезное дополнение к StatsD, потому что это означает, что вы можете использовать любой клиентский javascript, который вы хотите сделать для визуализации, почти в реальном времени и все такое.
Данные передаются в простом формате:
{perSecond: {bucket1: 0.2, bucket2: 0.1 }, counts: {bucket1: 2, bucket2: 1 }, timers: {timer1: {upper: 2.4, lower: 1.2, count: 10} }, gauges: {gauge1: 10 }, statsd: {numStats: 6}, timestamp: <unix timestamp>}
Цель?
Если все пойдет хорошо, я скоро смогу использовать cubism.js, чтобы привлечь симпатичные временные ряды трафика в этом блоге. И, эй, кто знает, что еще я могу придумать, чтобы добавить в личную панель своей жизни … Теперь у меня есть базовая структура. Время начать его использовать.