Датчик просто отражает состояние вашей системы или какой-либо показатель, который вы вообще не хотите агрегировать.
Позвольте привести несколько примеров.
1) В вашей программе вы можете использовать какой-то специфичный для языка API, чтобы узнать, сколько памяти использует этот процесс. Например, на Голанге мы можем сделать:
var stat runtime.MemStats
runtime.ReadMemStats(&stat)
heapAlloc := memStat.HeapAlloc
heapInuse := memStat.HeapInuse
heapObjects := memStat.HeapObjects
statsd.Gauge("machine01.memory.heap.alloc", heapAlloc)
statsd.Gauge("machine01.memory.heap.inuse", heapInuse)
statsd.Gauge("machine01.memory.heap.objects, heapObjects)
Для простоты вы можете рассматривать эти метрики как использование памяти, когда ваш код вызывает API времени выполнения. Таким образом, вы можете отправлять в StatsD датчики, потому что каждый из них может точно показать вам использование памяти за 10 секунд, что является периодом сброса по умолчанию в StatsD. Кроме того, вам не нужно использовать какой-либо метод агрегирования для этих метрик, потому что агрегация, как и сумма, не имеет никакого смысла.
Помимо вышеприведенного случая, у него так много вариантов использования для использования, как загрузка процессора, загрузка системы ОС, количество потоков в вашем процессе, количество онлайн-соединений на вашем сервере, количество активных транзакций прямо сейчас. в вашей торговой системе.
2) Иногда мы также можем использовать датчик, чтобы отслеживать время, когда что-то произошло. Как,
res, err := something()
if err != nil {
statsd.Gauge("machine01.something.error", time.Now().Unix())
}
Так что, как только произошла ошибка, вы можете увидеть это, взглянув на строку своей графической панели. А также, вы можете анализировать и получать частоту появления событий, глядя на форму линии.