Интеграция Hubot с Grafana

Grafana 2.0 поставлялась с замечательной функцией, которая позволяет ей отображать любой график или панель в виде PNG-изображения.

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

Это руководство покажет вам, как установить и настроить плагин Hubot-Grafana. Этот плагин позволяет вам сказать Hubot отобразить любой дашборд или график прямо из канала в Slack, Basecamp или любом другом поддерживаемом адаптере Hubot. Бот ответит изображением графика и ссылкой, которая приведёт вас к графику.

Что такое Hubot?

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

Установка Hubot

Hubot очень легко установить и разместить. Если у вас ещё нет работающего бота, прочитайте официальное руководство Getting Started With Hubot.

Установка скрипта Hubot-Grafana

В репозитории вашего проекта Hubot установите плагин Grafana с помощью npm:

Bash
npm install hubot-grafana --save

Отредактируйте файл external-scripts.json и добавьте hubot-grafana в список плагинов.

JSON
["hubot-pugme", "hubot-shipit", "hubot-grafana"]

Настройка

Для правильной работы плагину Hubot-Grafana требуется установить две переменные окружения.

Bash
export HUBOT_GRAFANA_HOST=https://play.grafana.org
export HUBOT_GRAFANA_API_KEY=abcd01234deadbeef01234

Есть дополнительные переменные окружения, которые вы можете установить для управления внешним видом графиков.

Рендеринг на стороне сервера Grafana

Плагин hubot будет использовать функцию рендеринга на стороне сервера Grafana, которая может отображать любую панель на сервере с помощью phantomjs. Grafana поставляется с бинарным файлом phantomjs (только для Linux).

Чтобы убедиться, что эта функция работает, попробуйте ссылку Direct link to rendered image в диалоговом окне общего доступа к панели. Если при открытии этой ссылки вы не получаете изображение, убедитесь, что установлены необходимые пакеты шрифтов для работы phantomjs.

Ключ API Grafana

Вам нужно установить переменную окружения HUBOT_GRAFANA_API_KEY в значение ключа API Grafana. Вы можете добавить их на странице API Keys, которую вы найдёте в раскрывающемся списке Organization.

Загрузка изображений

Существует несколько подходов к загрузке отрендеренных графиков. Если вы используете Slack, Rocket.Chat или Telegram, встроенный загрузчик адаптера позаботится об их отправке через соответствующий API. Если ваш Hubot размещён на платформе, которая не поддерживает загрузку (например, IRC), вы можете использовать встроенный загрузчик S3. Обратите внимание: если вы настроите S3, он не будет использовать функции загрузки адаптера.

Команды Hubot

  • hubot graf list
    • Перечисляет доступные дашборды
  • hubot graf db graphite-carbon-metrics
    • Отображает все панели на дашборде
  • hubot graf db graphite-carbon-metrics:3
    • Отображает только панель с id 3 конкретного дашборда
  • hubot graf db graphite-carbon-metrics:cpu
    • Отображает только панели, содержащие «cpu» (без учёта регистра) в заголовке
  • hubot graf db graphite-carbon-metrics now-12hr
    • Получает дашборд с окном от 12 часов назад до текущего момента
  • hubot graf db graphite-carbon-metrics now-24hr now-12hr
    • Получает дашборд с окном от 24 часов назад до 12 часов назад
  • hubot graf db graphite-carbon-metrics:3 now-8d now-1d
    • Получает только третью панель конкретного дашборда с окном от 8 дней назад до вчерашнего дня
  • hubot graf db graphite-carbon-metrics host=carbon-a
    • Получает дашборд с шаблоном, где параметр $host установлен в carbon-a

Псевдонимы

Некоторые из приведённых выше команд hubot могут быть длинными, и вам, возможно, придётся запоминать слаг дашборда (url id). Если у вас есть несколько любимых графиков, которые вы хотите часто проверять (скажем, с мобильного телефона), вы можете создать псевдонимы команд hubot с помощью скрипта hubot hubot-alias.

Установите его:

Bash
npm i --save hubot-alias

Теперь добавьте hubot-alias в список плагинов в external-scripts.json и перезапустите hubot.

Теперь вы можете добавить псевдоним следующим образом:

  • hubot alias graf-lb=graf db loadbalancers:2 now-20m

Резюме

Когда-нибудь Grafana будет поставляться с интегрированными функциями Slack и Hipchat, но вам не нужно этого ждать. Grafana 2 поставлялась с очень умной функцией рендеринга на стороне сервера, которая может отображать любую панель в png с помощью phantomjs. Плагин hubot для Grafana можно установить и использовать уже сегодня!