Метрики (метрики) мониторинга сервиса Go передаются в open-falcon

Java база данных Go
Метрики (метрики) мониторинга сервиса Go передаются в open-falcon

1 Обзор

Статистика показателей достигаетсяAPMВ основе (Управление производительностью приложений), как правило, с помощью статистики и отчетов по некоторым показателям, мы можем понять текущее состояние программы, вовремя обнаружить проблемы в программе и заранее предсказать узкие места в системе.
Текущая реализация метрики:metrics, это реализация java, которую можно напрямую внедрить в программу как библиотеку. Для реализации языка go см.go-metrics.
К тому же индикаторы обрабатываются и рассчитываются только в памяти.Если мы хотим вывести данные, то нам нужно кинуть данные.Его можно кинуть в лог или базу временных рядов.Проще всего кинуть прямо в система мониторинга Розыгрыш или сигнализация. Поэтому смысл каждого показателя и как кинуть рассчитанные данные в мониторинг будет объяснено далее в этой статье.open-falcon

2. Статистика индикатора

2.1 Meters

Он используется для расчета измерения в течение периода времени, обычно используемого для расчета частоты вызовов интерфейса, таких как QPS (количество раз в секунду), которые в основном делятся на rateMean, Rate1/Rate5/Rate15 и другие показатели.

  • RateMean
    Количество вхождений в единицу времени, например отправка 100 раз за одну минуту, значение равно 100/60.
  • Rate1/Rate5/Rate15
    Скользящее среднее за 1 минуту/5 минут/15 минут (moving average),

2.2 Gauges

Он используется для измерения мгновенного значения.Если мы можем подсчитать использование памяти через определенный период времени и сообщить об этом, то все наборы точек данных являются значениями памяти в соответствующий момент времени, а датчики имеют только индекс значения . То есть сообщается то, что есть.

2.3 Counter

Статистику подсчета можно добавлять или вычитать, а также можно обнулить, все операции выполняются на основе старого значения. Здесь вы можете подсчитывать ежедневных зарегистрированных пользователей, возвращаясь к нулю каждый день, а затем добавляя 1 при добавлении новых зарегистрированных пользователей.

2.4 Histograms

В основном используется для распределения значений в статистике набора данных, типичные сценарии приложений для интерфейсного потребления интерфейса, интерфейсы каждый звонок будет иметь трудоемкость, запись каждого вызова требует интерфейса для анализа трудоемкой ситуации явно нереально. Таким образом, интерфейс займет определенный промежуток времени в качестве набора данных, и сборный счетчик, мин, максимальный, средний, средний, 75%, 95%, 99% и другие показатели. Относительно небольшое потребление ресурсов, чтобы отразить реальную ситуацию набора данных.

  • Count
    Количество образцов, созданных с момента последней очистки.
  • Min
    наименьшее значение в выборке
  • Max
    максимальное значение в выборке
  • Mean
    среднее значение всех выборок
  • Median
    Значение средней позиции в выборке.
  • 75%
    Значение в позиции %75 в образце.
  • 95%
    Значение в позиции %95 в образце.
  • 99%
    Значение в позиции %99 в образце.

1.5 Timers

Одновременно подсчитывайте частоту вызовов и статистику времени вызова модуля кода. Индикатор представляет собой набор двух статистических методов: гистограмм и измерителей.

3. Как использовать

Для более подробного использования см. документацию по go-metric.

3.1 Counter

c := metrics.NewCounter()
metrics.Register("foo", c)
//进行加操作
c.Inc(47)

//进行减操作
c.Dec(1)

//获取出值
c.Count()

3.2 Gauge

g := metrics.NewGauge()
metrics.Register("bar", g)
//更新瞬时值
g.Update(47)

//获取出瞬时值
g.Value()

3.3 Meters


m := metrics.NewMeter()
metrics.Register("quux", m)
//写入数据集
m.Mark(47)
//获取数据集只读快照
m := metric.Snapshot()
//数据集大小
m.Count()
//1分钟滑动平均值
m.Rate1()
//5分钟滑动平均值
m.Rate5()
//15分钟滑动平均值
m.Rate15()
//平均值
m.RateMean()

3.4 Histograms

h := metrics.NewHistogram(s)
metrics.Register("baz", h)
//写入数据集
h.Update(47)
//获取数据集只读快照
h := metric.Snapshot()
//数据集大小
h.Count()
//最小值
h.Min()
//最大值
h.Max()
//平均值
h.Mean()
ps := h.Percentiles([]float64{0.5, 0.75, 0.95, 0.99})
//中位数
ps[0]
//75%的数
ps[1]
//95%的数
ps[2]
//99%的数
ps[3]

3.5 Timer

t := metrics.NewTimer()
metrics.Register("bang", t)

t.Time(func() {
    //do some thing
})
t.Update(47)

//获取方式同meter以及Histograms

4. Отчет об индикаторах в open-falcon

4.1 Метод отчетности

См. код и использованиеgo-metrics-falcon

Чтобы реализовать отчетность данных в open-falcon, вам нужно всего лишь вынуть все данные и сообщить о них в формате open-falcon.Вот определения, связанные с отчетностью json, следующим образом.

{
	"endpoint": "$endpoint",
	"metric": "$name",
	"value": 2.2,
	"step": 60,
	"counterType": "GAUGE",
	"tags": "project=$projectName,metricType=meter,valueType=ratemean",
	"timestamp": 1524724608
}

конечная точка: обычно это имя хоста, которое используется для обозначения того, какая это машина.
метрика: имя метрики, определяемое пользователем
значение: значение индикатора
шаг: отчетный период
counterType: тип отчета, здесь open-falcon поддерживает только GAUGE и COUNTER, поэтому GAUGE используется единообразно.
теги: теги, используемые для идентификации индикаторов, включая тип индикатора, тип значения и имя элемента.
timestamp: Отметка времени, сообщаемая индикатором, в секундах.

4.2 Эффекты

Как показано на рисунке, введите конечную точку, а затем введите имя проекта в части счетчика, чтобы отфильтровать все индикаторы, сообщаемые проектом.

Нажмите на индикатор, чтобы открыть большую картину запроса индикатора.

При этом мы можем следить за показателями, подробности смотрите в документации open-falcon.

5. Ссылка

metrics
go-metric
APM
open-falcon