+++
title = "Визуализация изображения"
description = ""
keywords = ["harvest", "image", "rendering", "plugin"]
weight = 300
+++
# Рендеринг изображения

Harvest поддерживает автоматический рендеринг панелей в виде изображений PNG. Это позволяет Harvest автоматически генерировать изображения ваших панелей для включения в [оповещения]({{< relref "../alerting/notifications.md" >}}).

**Примечание.** В настоящее время рендеринг изображений на панелях мониторинга не поддерживается.

Пока изображение рендерится, изображение PNG временно записывается в файловую систему. Когда изображение визуализируется, изображение PNG временно записывается в папку «png» в папке «data» Harvest.

Фоновое задание запускается каждые 10 минут и удаляет временные изображения. Вы можете указать, как долго образ должен храниться перед удалением, настроив параметр [temp-data-lifetime]({{< relref "../administration/configuration/#temp-data-lifetime" >}}).

Вы также можете визуализировать PNG, щелкнув стрелку раскрывающегося списка рядом с заголовком панели, а затем нажав **Поделиться > Прямая ссылка на визуализированное изображение**.

## Требования к памяти

Минимальная рекомендуемая свободная память составляет 16 ГБ в системе, выполняющей рендеринг.

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

## Пределы предупреждений и рендеринга

Оповещения могут включать изображения, но одновременный рендеринг большого количества изображений может привести к перегрузке сервера, на котором запущен модуль рендеринга. Инструкции по настройке см. в разделе [concurrent_render_limit]({{< relref "../administration/configuration/#concurrent_render_limit" >}}).

## Установите плагин Harvest Image Renderer

[Плагин рендерера изображений Harvest] (https://harvest.com/harvest/plugins/harvest-image-renderer) — это плагин, который работает на серверной части и обрабатывает панели рендеринга и информационные панели в виде изображений PNG с использованием безголового Chrome.

Чтобы установить плагин, обратитесь к [Инструкциям по установке Harvest Image Renderer] (https://harvest.com/harvest/plugins/harvest-image-renderer/?tab=installation).

## Запуск в пользовательском образе Harvest Docker

 Мы рекомендуем настроить другой контейнер Docker для рендеринга и использовать удаленный рендеринг. Инструкции см. в [Служба удаленного рендеринга]({{< relref "#remote-rendering-service" >}}).

Если вы все еще хотите установить плагин в образ Harvest Docker, обратитесь к [Сборка с предустановленным плагином Harvest Image Renderer]({{< relref "../installation/docker/#build-with-harvest-image-renderer -plugin-pre-installed" >}}).

## Служба удаленного рендеринга

> Требуется подключение к Интернету.

[Плагин Harvest Image Renderer] (https://harvest.com/harvest/plugins/harvest-image-renderer) также можно запускать как удаленную службу HTTP-рендеринга. В этой настройке Harvest рендерит изображение, отправляя HTTP-запрос к удаленной службе рендеринга, которая, в свою очередь, рендерит изображение и возвращает его обратно в HTTP-ответе на Harvest.

Вы можете запустить удаленную службу рендеринга HTTP с помощью Docker или как отдельное приложение Node.js.

### Запустить в Docker

В следующем примере показано, как запустить Harvest и удаленную службу рендеринга HTTP в двух отдельных контейнерах Docker с помощью Docker Compose.

Создайте `docker-compose.yml` со следующим содержимым:

``ямл
версия: '2'

Сервисы:
  графана:
    изображение: графана/графана:мастер
    порты:
     - "3000:3000"
    окружающая обстановка:
      GF_RENDERING_SERVER_URL: http://рендерер:8081/рендер
      GF_RENDERING_CALLBACK_URL: http://harvest:3000/
      GF_LOG_FILTERS: рендеринг: отладка
  визуализатор:
    изображение: графана/графана-изображение-рендерер: последний
    порты:
      - 8081
```

А затем запустите:

``` ударить
докер-компоновать
```

## Запускать как отдельное приложение Node.js

В следующем примере показано, как создать и запустить удаленную службу рендеринга HTTP как отдельное приложение Node.js и соответствующим образом настроить Harvest.

1. Клонируйте Git-репозиторий [плагин для рендеринга изображений Harvest] (https://harvest.com/harvest/plugins/harvest-image-renderer).
1. Установите зависимости и соберите:

    ``` ударить
    установка пряжи --pure-lockfile
    сборка пряжи
    ```

1. Запускаем сервер:

    ``` ударить
    сборка узла/сервер app.js --port=8081
    ```

1. Обновите конфигурацию Harvest:

    ```
    [рендеринг]
    server_url = http://localhost:8081/рендеринг
    callback_url = http://localhost:3000/
    ```
1. Перезапустите Графану.

## ФантомJS

> Начиная с Harvest v7.0.0 вся поддержка PhantomJS удалена. Пожалуйста, используйте плагин Harvest Image Renderer или службу удаленного рендеринга.

## Устранение неполадок с рендерингом изображений

Включите сообщения журнала отладки для рендеринга в файле конфигурации Harvest и проверьте журнал сервера Harvest.

``` ударить
[журнал]
фильтры = рендеринг: отладка
```

### Плагин рендеринга изображений Harvest и служба удаленного рендеринга

Плагин и служба рендеринга используют [браузер Chromium] (https://www.chromium.org/), который зависит от определенных библиотек.
Если в вашей системе не установлены все эти библиотеки, вы можете столкнуться с ошибками при попытке отобразить изображение, например.

``` ударить
Ошибка рендеринга: Ошибка: не удалось запустить хром!/var/lib/harvest/plugins/harvest-image-renderer/chrome-linux/chrome:
ошибка при загрузке общих библиотек: libX11.so.6: невозможно открыть общий объектный файл: нет такого файла или каталога\n\n\nУСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting. Мэриленд
```

Как правило, вы можете использовать утилиту [`ldd`](https://en.wikipedia.org/wiki/Ldd_(Unix)) для выяснения того, какие общие библиотеки
не установлены в вашей системе:

``` ударить
cd <каталог плагина harvest-image-render>
ldd хром-линукс/хром
      Linux-vdso.so.1 (0x00007fff1bf65000)
      libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2047945000)
      libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2047924000)
      librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f204791a000)
      libX11.so.6 => не найден
      libX11-xcb.so.1 => не найден
      libxcb.so.1 => не найден
      libXcomposite.so.1 => не найден
        ...
```

**Убунту:**

В Ubuntu 18.10 были подтверждены следующие зависимости, необходимые для работы рендеринга изображений.

``` ударить
libx11-6 libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrender1 libxtst6 libglib2.0-0 libnss3 libcups2 libdbus-1-3 libxss1 libxrandr2 libgtk-3-0 libgtk-3-0 libasound2
```

**Дебиан:**

В Debian 9 (Stretch) были подтверждены следующие зависимости, необходимые для работы рендеринга изображений.

``` ударить
libx11 libcairo bcairo2 libcairo2 libxtst6 libxcomposite1 libx11-xcb1 libxcursor1 libxdamage1 libnss3 libcups libcups2 libXss libXss1 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-3-0tg libpangocairo-1.0.0
```

В Debian 10 (Buster) были подтверждены следующие зависимости, необходимые для работы рендеринга изображений.

``` ударить
libxdamage1 libxext6 libxi6 libxtst6 libnss3 libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libpangocairo-1.0-0 libpango-1.0-0 libcairo2 libatspi2.0-0 libgtk3.0-x. xcb-dev
```

**Сентос:**

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

``` ударить
libXcomposite libXdamage libXtst cups libXScrnSaver pango atk adwaita-cursor-theme adwaita-icon-theme at at-spi2-atk at-spi2-core cairo-gobject colord-libs dconf desktop-file-utils ed emacs-filesystem gdk-pixbuf2 glib-networking gnutls gsettings-desktop-schemas gtk-update-icon-cache gtk3 hicolor-icon-theme jasper-libs json-glib libappindicator-gtk3 libdbusmenu libdbusmenu-gtk3 libepoxy liberation-fonts liberation-narrow-fonts liberation-sans-fonts liberation-serif- шрифты libgusb libindicator-gtk3 libmodman libproxy libsoup libwayland-cursor libwayland-egl libxkbcommon m4 mailx патч для крапивы psmisc redhat-lsb-core redhat-lsb-submod-security отдых spax time брюки xdg-utils xkeyboard-config
```

### Сертификат, подписанный внутренними центрами сертификации

Во многих случаях Harvest работает на внутренних серверах и использует сертификаты, которые не были подписаны центром сертификации ([Certificate Authority](https://en.wikipedia.org/wiki/Certificate_authority)), известным Chrome, и поэтому не могут быть проверены. . Chrome внутри использует NSS ([Службы сетевой безопасности](https://en.wikipedia.org/wiki/Network_Security_Services)) для криптографических операций, таких как проверка сертификатов.

Если вы используете средство рендеринга изображений Harvest с сервером Harvest, который использует сертификат, подписанный таким настраиваемым ЦС (например, внутренним ЦС компании), рендеринг изображений завершится ошибкой, и в журнале Harvest вы увидите подобные сообщения:

```
t=2019-12-04T12:39:22+0000 lvl=error msg="Ошибка запроса на рендеринг" logger=ошибка рендеринга=карта[] url="https://192.168.106.101:3443/d-solo/zxDJxNaZk/ graphite-metrics?orgId=1&refresh=1m&from=1575438321300&to=1575459921300&var-Host=master1&panelId=4&width=1000&height=500&tz=Europe%2FBerlin&render=1" timestamp=0001-01-01T00:00:00.000Z
t=2019-12-04T12:39:22+0000 lvl=error msg="Ошибка рендеринга." logger=context userId=1 orgId=1 uname=admin error="Ошибка рендеринга: Ошибка: net::ERR_CERT_AUTHORITY_INVALID по адресу https://192.168.106.101:3443/d-solo/zxDJxNaZk/graphite-metrics?orgId=1&refresh=1m&from =1575438321300&to=1575459921300&var-Host=master1&panelId=4&width=1000&height=500&tz=Европа%2F