Skip to main content

Мастер-класс

Добро пожаловать на online мастер-класс для новичков: «Установка и работа с плагином Grafana Image Renderer»

 

Наталья Крапкина, соорганизатор MONHOUSE, расскажет о процессе установки и работы с плагином Grafana Image Renderer, использующимся для вывода графиков на внешний сайт в виде изображений.

Шпаргалка

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

Страница плагина:

https://grafana.com/grafana/plugins/grafana-image-renderer/

Документация по установке:

https://github.com/grafana/grafana-image-renderer/blob/master/README.md

Устанавливаем Docker:

apt install docker.io

Команда для установки контейнера с плагином, автоматически установится графана, если не установлена ранее:

docker pull grafana/grafana-image-renderer

Содержимое docker-compose.yml:

root@v1062772:~# cat docker-compose.yml
version: '2'

services:
grafana:
image: grafana/grafana:latest
ports: # порт, на котором будет доступна графана
- 3000:3000

container_name: grafana
restart: unless-stopped # для автоматического запуска после перезагрузки системы
user: "1000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=PASSWD # пароль для входа в графану
- GF_USERS_ALLOW_SIGN_UP=false
- GF_SERVER_DOMAIN=62.113.113.200 # IP или доменное имя севера с графаной
- GF_SMTP_ENABLED=false
- GF_RENDERING_SERVER_URL=http://62.113.113.200:8081/render # путь по которому доступен плагин
- GF_RENDERING_CALLBACK_URL=http://62.113.113.200:3000 # путь по которому доступна графана
- GF_LOG_FILTERS=rendering:debug

renderer:
container_name: grafana-image-renderer
image: grafana/grafana-image-renderer:latest
restart: unless-stopped # для автоматического запуска после перезагрузки системы
links:
- grafana
environment:
- ENABLE_METRICS=true
- RENDERING_MODE=clustered # для возможности одновременной обработки большого количества изображений
- RENDERING_CLUSTERING_MODE=context
- RENDERING_CLUSTERING_MAX_CONCURRENCY=6
ports:
- 8081:8081 # порт, на котором будет доступен плагин

Запуск контейнеров:

docker-compose up -d

Проверка состояния:

docker container container ls

Установка библиотек для подписи графиков

apt install graphicsmagick-imagemagick-compat # version 1.4+really1.3.35-1, or
apt install imagemagick-6.q16 # version 8:6.9.10.23+dfsg-2.1ubuntu11.4
apt install imagemagick-6.q16hdri # version 8:6.9.10.23+dfsg-2.1ubuntu11.4

Получить ссылки на графики в интерфейсе графаны — нижняя ссылка (direct link rendered image) в меню share нужного для вывода графика:

Пример: 
http://x.x.x.x:3000/render/d-solo/WGUXM2pGz/aurora?orgId=1&from=now-3h&to=now&panelId=2&width=1000&height=500&tz=Europe%2FMoscow

# Идентификатор организации:

orgId=1

# Время начала графика — «сейчас минус три часа»:

from=now-3h

например, если делать запрос за неделю — то now-7d

Время кончания графика — «сейчас»:

to=now

Идентификатор графика:

panelId=2

Ширина графика:

width=1000

Высота графика:

height=500

Временная зона:

tz=Europe%2FMoscow

Создать ключ для авторизации (API keys):

 

Сформировать задачи для crontab:

# рендеринг графиков в изображение
# APIKEY - ключ полученный из панели графаны
# DIRECTIMAGEURL - прямая ссылка на график, полученная из панели графаны или сгенерированная автоматически
*/5 * * * * wget --quiet --header="Authorization: Bearer APIKEY" "DIRECTIMAGEURL" --output-document="/var/www/html/renders/1.png"

# скрипт для добавления текста
*/5 * * * * sleep 45;datetime=$(date) && convert -font helvetica -fill white -pointsize 10 -gravity north -draw "text 0,40 '© MONHOUSE | monhouse.tech | $datetime'" /var/www/html/renders/1.png /var/www/html/renders/copyright/1.png

 

Скрипт для добавления текста:

# делаем небольшую паузу, чтоб изображения графиков успели сгенерироваться и скачаться для дальнейшей работы с ними

sleep 45;

# узнаем дату и время

datetime=$(date)

#сама команда

convert

Параметры, используемые в примере:

# шрифт:
-font helvetica

#цвет
-fill white

# размер шрифта
-pointsize 10

#положение текста на изображении (north = север = верх)
-gravity north

# рисуем текст по центру, с отступом сверху 40 пикселей:
-draw «text 0,40 ‘© MONHOUSE | monhouse.tech | $datetime'»

# указываем путь до исходного и финального изображения:
/путь/до/оригинального/изображения /путь/для/подписанного/изображения/1.png

Вывод картинок в html:

root@v1062772:~# cat /var/www/html/index.html
<html>

<img src="/renders/copyright/1.png">
<img src="/renders/copyright/2.png">

<br>

<img src="/renders/1.png">
<img src="/renders/2.png">

</html>

Результат:

 

Крапкина Наталья, соорганизатор сообщества по мониторингу Monhouse.

Благодарю за помощь по настройке продакшен сервера и в подготовке материала Михаила Неверова.

 

Вконтакте MONHOUSE: https://vk.com/monhouse.tech

Telegram MONHOUSE: https://t.me/monhousetech
Telegram чат MONHOUSE: https://t.me/monhouse_tech

[ СООБЩЕСТВА - ПАРТНЕРЫ ]

[ ПРИ ПОДДЕРЖКЕ ]