Несколько советов по использованию Grafana

задняя часть Kibana Grafana StatsD

Каталог статей

  • Общие индикаторные значения числовых типов
    • полное непонимание
    • ошибка
  • переменная шаблона
    • Как написать переменные шаблона
    • Новая переменная шаблона
    • Скрытый геймплей переменных шаблона
  • Редактор панели Grafana
    • Metrcis
    • Legend
    • Display
  • Расширенные функции
    • Агрегировать общее количество нескольких совпадающих кривых для одного запроса. Объединить -> sumSeries.
    • Преобразование миграции временной шкалы -> timeShift
    • Удалить выбросы Filter -> removeAboveValue
    • функция переименования
    • Агрегация нескольких значений кривой Special -> groupByNode
    • Рассчитайте вероятность успеха, состоящую из нескольких запросов Calculate -> asPercent
  • разное
    • Вызовите полицию
    • Ограничения для statsd RBI
    • Базовый запрос данных Grafana
    • режим инкогнито
  • Наконец

Grafana — это платформа статистики и мониторинга временных рядов с открытым исходным кодом, которая поддерживает множество источников данных, таких как elasticsearch, graphite, influxdb и т. д., и известна своим мощным редактором интерфейса. Мы получили хорошие отзывы после внедрения grafana во фронтенд-мониторинг, но многие пользователи часто задают вопросы, связанные с grafana, потому что они раньше не контактировали с grafana, поэтому я надеюсь, что эта статья будет полезна всем, кто использует grafana. графана.

Разрешения grafana разделены на три уровня: Viewer, Editor и Admin. Viewer может только просматривать существующие панели grafana, но не может их редактировать. Editor может редактировать панели, а Admin имеет все разрешения, такие как добавление источников данных, добавление плагинов и добавление ключей API.

Для обычных пользователей достаточно разрешений Viewer, а остальная часть этой статьи в основном связана с разрешениями Editor. Из-за ограниченного объема в этой статье в качестве примера источника данных используется графит, и в ней представлены только наиболее часто используемые методы настройки графа.

Общие индикаторные значения числовых типов

  • count_ps
    • количество в секунду
  • count
    • количество десяти секунд
  • mean_90
    • В среднем после удаления первых 10 % данных
  • upper_90
    • Максимальное значение после удаления до 10% данных

полное непонимание

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

Это связано с тем, что количество точек, которые кривая может отображать в интерфейсе, ограничено, и графана будет определять количество возвращаемых точек в соответствии с шириной вашего окна, потому что что-то вроде一天Отобразить каждую вторую точку на интерфейсе за такой промежуток времени точно не получится, ведь общее количество точек составляет 86 400 точек, и даже с рыбным экраном выжать ее невозможно. Для точек, которые не могут быть отображены, grafana по умолчанию использует среднее поведение для корректировки значения возвращаемой точки, например, как показано ниже:

image

Диапазон времени на приведенном выше рисунке — один день, верхняя часть — это значение панели кривой, нижняя часть — значение круговой диаграммы, а кривая верхней части значка имеет тип счетчика (один раз за десять секунд). Вы можете видеть, что среднее значение avg равно 683, тогда общее значение должно быть 682, умноженное на 6 (60, если здесь count_ps), умноженное на 60 (60 минут в часе) и умноженное на 24 (24 часа в часе). в день), чтобы получить 5,89 млн, что аналогично 5,82 млн в нижней части рисунка, поэтому 1,17 млн ​​в верхней части итога — это совершенно вводящая в заблуждение величина, которую можно считать бессмысленной и игнорировать.

ошибка

На самом деле между 5,89 миллионами, которые мы рассчитали выше, и 5,82 миллионами на интерфейсе есть небольшая погрешность, но это допустимо, потому что statsd обычно имеет форму UDP (на самом деле она имеет форму TCP), поэтому, если вы хотите быть полностью правильными данными, то лучше всего поместить данные, связанные с управлением, в базу данных, а пост-запросы из базы данных полностью надежны.

переменная шаблона

Переменные шаблона могут динамически управлять оператором запроса в панели, что является очень важной функцией. Их часто можно найти в верхнем левом углу панели, как показано ниже:

image

Как написать переменные шаблона

Поддержка переменных шаблона$nameи[[name]]Метод записи, первый в основном используется для графитовых источников данных, например:stats.timers.fe.test.$key.count_ps

Новая переменная шаблона

В интерфейсе grafana нажмите кнопку с изображением шестеренки -> Шаблоны -> нажмите «Создать», и появится интерфейс, подобный следующему:

image

Этот абзац в основном знакомит с методом написания типа Query.

  • Name
    • Имя переменной, специальные символы типа $ не поддерживаются
  • Refresh
    • по желаниюNever,On Dashboard LoadиOn Time Range Change
    • Выберите, если значение переменной часто динамически увеличиваетсяOn Time Range Change,в противном случаеOn Dashboard LoadЭтого достаточно, не выбирайте Никогда для типа запроса, иначе переменная будет обновляться только тогда, когда вы нажмете, чтобы изменить переменную.
  • Query
    • Оператор запроса, например stats.timers.fe.test.*
    • При записи графана не будет вызывать запрос, вам нужно щелкнуть за пределами поля ввода, и запрошенное значение будет отображаться ниже

Запрос в переменных шаблона фактически поддерживает переменные шаблона, напримерstats.timers.fe.test.$key.*Такой оператор будет автоматически обновлять значение при изменении переменной $key, похоже на MVVM? Эта функция используется для связывания нескольких переменных шаблона, что позволяет значительно сократить время выполнения запроса в grafana.

Скрытый геймплей переменных шаблона

Переменные шаблона можно использовать даже в grafana jumps, что является скрытой игрой, о которой даже не упоминается в документации.LinkилиDashboardЗаполните $name в любом месте URL-адреса, затем, когда пользователь щелкнет ссылку для перехода, grafana также заменит переменную, чтобы вы могли перейти к правильной ссылке. Это может быть интегрировано с другими системами для достижения очень хорошего пользовательского опыта, например, для перехода к kibana для запросов к журналам.

Формат временного диапазона кибаны и графаны не одинаков, вы можете использоватьэта статьяплагин для хрома в .

Кроме того, пользовательская переменная шаблона позволяет пользователям вводить значение в раскрывающемся списке переменной. Это также часто используемое значение. С переменной шаблона оно будет соответствовать части строки запроса текущей ссылки.var-${name}Синхронизация, которая работает вместе, чтобы легко перейти к нужной панели grafana из сторонних систем.

редактор панели grafana

Войдите в любую панель с учетной записью с правами редактора, щелкните диаграмму, а затем нажмите кнопку «Редактировать» в небольшом всплывающем окне, чтобы войти в интерфейс редактора диаграммы. Для редактора в этой статье представлены только важные настройки диаграммы, показателей, легенды и отображения.

Metrcis

image

  • режим редактирования
    • Стрелка выше указывает наtoggle editor modeВы можете управлять режимом редактирования. Если вы отключите его, вам нужно будет вручную ввести оператор запроса. Если вы включите его, вы сможете динамически добавлять, удалять и изменять режим в интерфейсе, как показано выше.
  • источник данных
    • Panel data sourceОбязательно выберите правильный, иначе соответствующий путь не будет найден, и очень вероятно, что данные Mock будут всплывать и путать людей.

image

Когда режим динамического редактирования включен, вы можете нажать на каждое поле на рисунке выше, тогда grafana автоматически загрузит значение позиции в источнике данных, и вы также можете выбрать здесь переменные шаблона для динамического управления.

image

Щелкните знак плюса на хвосте, и появится функция, соответствующая источнику данных, которая может выполнять некоторые дополнительные функции.Это также является предметом второй половины этой статьи, которая будет представлена ​​позже. В графите функций больше, а в других источниках данных меньше.

Legend

Имя и продемонстрируйте стоимость легенды основной кривой контроля относительно просты, вот то, что они имеют в виду

  • As Table
    • Отображать ли в табличной форме
  • To the right
    • Отображается ли он в правой части графика или ниже?
  • Width
    • Если он не заполнен по умолчанию, он будет автоматически растянут, в противном случае ширина будет принудительно
  • Min
    • Минимальное значение в период времени панели
  • Avg
    • Среднее за период панельного времени
  • Total
    • Общее количество значений в периоде времени панели.Как упоминалось выше, при получении общего количества числовых типов этот Total является очень вводящим в заблуждение параметром.
  • Max
    • Максимальное значение за период панели
  • Current
    • Текущее значение в период времени панели

Display

Display управляет отображением точек и линий на графике, есть еще несколько важных параметров

  • Draw Modes -> Lines
    • рисовать ли отрезки между точками
  • Draw Modes -> Points
    • рисовать ли точки
  • Hover info -> Mode
    • Способ отображения на плавающей панели, значениеAll serires(показывает значения всех отрезков линии на тот момент времени) иsingle(Отображается только тот сегмент линии, на который указывает мышь)
  • Hover info -> Sort Order
    • Сортировка строк на плавающей панели, обычно выбираем по убыванию
  • Stacking & Null value -> Null value
    • Это более важно, и его нужно динамически определять по плотности точек.Если точек мало, легко неправильно понять, что между двумя точками есть точки.
    • Если точек много, выберите подключенные
    • Если количество точек мало, выберите null

Расширенные функции

Возьмем, к примеру, графит, KEY в пунктирном пути поддерживает только прописные и строчные буквы, цифры, знаки подчеркивания и символы подчеркивания, что приведет к тому, что внешний путь (часто включающий # и :path) не будет сохранен, поэтому мы можем только переведите заранее, например Переведите # в ANCHOR, :path в PATH, а / в -, поэтому шаблон переменной показывает странный путь к внешнему интерфейсу, но, к счастью, у нас есть функция, которую можно заменить в интерфейсе.

image

Нажмите плюсик в режиме редактирования на панели Metrics интерфейса редактирования, чтобы добавитьaliaSubфункцию и соответственно заполните три правила замены на приведенном выше рисунке, вы можете увидеть нормальный путь на следующем рисунке в интерфейсе:

image

aliasSub — это лишь одна из простых функций-псевдонимов, которые обрабатывают имя кривой. Дополнительные функции используются для обработки агрегации одного запроса, агрегации нескольких кривых, отображения разных временных шкал, расчета и фильтрации, которые будут представлены в этом разделе. , Некоторые часто используемые функции.

Агрегировать общее количество нескольких совпадающих кривых для одного запроса. Объединить -> sumSeries.

Например, предположимstats_count.fe.test.*Есть десятки совпадающих значений, тогда этот запрос отобразит на графике десятки кривых Как получить общее значение всех кривых? Вам не нужно вводить дополнительную копию данных об общей сумме при проверке, просто используйте ее напрямую.sumSeriesфункция,sumSeries(stats_count.fe.test.*)

Преобразование миграции временной шкалы -> timeShift

Хотите отображать кривые предыдущего дня в то же время в течение этого периода времени?timeShift(Query, '-1d')Просто

Удалить выбросы Filter -> removeAboveValue

Если в числовом типе есть ненормальное значение, например миллионы секунд, когда среднее значение равно 1 секунде, то его можно отфильтровать непосредственно в интерфейсе с помощью многочисленных функций фильтрации вместо изменения точечного кода.removeAboveValue(Query, 10000)Просто

функция переименования

  • alias
    • Переименуйте кривую напрямую, параметром является имя кривой
  • aliasByNode(4, 5, 6)
    • Назовите кривую 4-й, 5-й и 6-й сегменты исходного имени
  • aliasSub
    • Регулярная замена сегмента в имени

Агрегация нескольких значений кривой Special -> groupByNode

Функция sumSeries может только просто суммировать окончательные значения нескольких фрагментов данных.Если она не в конечной позиции, она не будет работать и не поддерживает другие функции, кроме суммы, такие как среднее значение.Использование groupByNode , вы можете динамически добавлять несколько данных в указанную позицию.Числовые типы агрегируются, как показано ниже:

image

Рассчитайте вероятность успеха, состоящую из нескольких запросов Calculate -> asPercent

Предположим, у нас есть следующие точки:

stats.timers.fe.test.error1.count
stats.timers.fe.test.error2.count
stats.timers.fe.test.error3.count
stats.timers.fe.test.success.count

В это время я хочу рассчитать коэффициент успеха успеха, как это сделать?

В этой относительно сложной ситуации это не может быть решено только одним запросом.Во-первых, мы создаем два запроса следующим образом:

stats.timers.fe.test.*.count (Query 序列号为 #A)
stats.timers.fe.test.success.count (Query 序列号为 #B)

Создайте третий запрос со значениемasPercent(#B, sumSeries(#A), как следует из названия, сначала агрегируйте запросы #A, чтобы получить общее значение, а затем используйте asPercent для деления.

В приведенных выше примерах вы можете увидеть мощные функции функций.Даже сложные части, которые ранее были реализованы с помощью внутреннего кода, могут отображаться в интерфейсе посредством вложения нескольких запросов и нескольких функций.Просто реализуйте.

Каждый источник данных имеет соответствующую документацию по разработке функций, такую ​​какgraphite. Именно благодаря поддержке множества источников данных и функций графана может выполнять так много мощных функций в веб-интерфейсе.

разное

Вызовите полицию

Grafana добавила функцию будильника после версии 4.0, но будильник Grafana относится к почтовому запросу источника данных, а производительности в реальном времени недостаточно для удовлетворения потребностей Наша компания имеет открытый исходный кодbanshee, чтобы решить эту проблему.

банши используетсяЗакон трех сигм, поддерживает оповещения на основе пороговых значений и трендов, предоставляет открытые API и веб-перехватчики и по умолчанию интегрирует Slack. Банши и источник данных расположены в одном и том же месте (серверная часть statsd), поэтому своевременность может быть гарантирована, а из-за независимого характера сигнала тревоги версия grafana не требуется.

Ограничения для statsd RBI

Если grafana использует базу данных временных рядов, то каждый KEY будет соответствовать файлу для хранения данных, напримерstats.timers.fe.test.*эквивалентноstats/timers/fe/testВсе файлы в папке, поэтому вы должны обратить внимание на то, чтобы не было слишком много комбинаций в пути управления.Например, когда провинция и город используются в качестве КЛЮЧА, комбинация может легко занять более 1G данных и вызвать диск взрываться.

Чтобы избежать загрязнения пути, вызванного слишком большим количеством комбинаций, постарайтесь убедиться, что точки отформатированы в каждом KEY, например, замените их символами подчеркивания.stats.timers.fe.test.*изменить наstats.timers.fe.test.v1.*, так что после загрязнения вы можете напрямую удалить всю папку v1 вместо удаления корневого пути теста при очистке данных, чтобы сохранить ваши обычные исторические данные управления.

Базовый запрос данных Grafana

Рекомендуется использовать данные запроса API-ключа Grafana, учетные записи Admin Privileges могут быть сгенерированы в вышеупомянутом трех вышеупомянутом интерфейсе разрешений API, но по умолчанию откроется Grafana Basic Auth, вы можете использовать аутентификацию пароля учетной записи Grafana, например,http://${account}:${password}@${grafana_host}/api/org.

Конечно, лучше всего иметь права на чтение источника данных для непосредственного чтения данных.

режим инкогнито

Иногда у пользователя нет учетной записи grafana, а он просто хочет видеть панель, что делать? На этом этапе в игру должен вступить анонимный режим графаны.

файл конфигурации grafana имеетauth.anonymousраздел конфигурации,enabledпереключатель управления,org_nameконтролировать, какие организации включают режим инкогнито,org_roleКонтролируйте разрешения анонимных людей. Включение анонимности для организации означает, что пользователи, не вошедшие в систему, могут напрямую пропускать grafana и запрашивать источник данных без разрешения, поэтому обеспечьте безопасность источника данных, например, ограничьте доступ к интрасети.

Наконец

Эта статья знакомит с некоторыми относительно продвинутыми навыками использования grafana.В дополнение к рассмотрению мощных функций grafana следует также отметить, что grafana — это только платформа статистического мониторинга с сильным временем и некоторыми непоследовательными функциями, такими как агрегация ошибок и ошибка. Логи отчетности и т.д. следует оставить более профессиональным, таким как sentry и ELK.