Введение
Узнайте, как можно переиспользовать дашборды и источники данных в нескольких командах, подготавливая Grafana из файлов конфигурации, находящихся под контролем версий.
В этом учебном руководстве вы:
- Подготовите дашборды.
- Подготовите источники данных.
Предварительные требования
- Grafana 7.0
- Права администратора в системе, в которой вы выполняете учебное руководство
Конфигурация как код
Конфигурация как код — это практика хранения конфигурации вашей системы в виде набора версионируемых, удобочитаемых файлов конфигурации, а не в базе данных. Эти файлы конфигурации можно переиспользовать в разных средах, чтобы избежать дублирования ресурсов.
По мере роста числа дашбордов и источников данных в вашей организации ручное управление изменениями может стать утомительным и подверженным ошибкам. Поощрение переиспользования становится важным, чтобы несколько команд не переделывали одни и те же дашборды.
Grafana поддерживает конфигурацию как код через подготовку (provisioning). Ресурсы, которые в настоящее время поддерживают подготовку:
Настройка каталога подготовки
Прежде чем вы сможете начать подготавливать ресурсы, Grafana должна знать, где найти каталог подготовки. Каталог подготовки содержит файлы конфигурации, которые применяются при каждом запуске Grafana и непрерывно обновляются во время работы.
По умолчанию Grafana ищет каталог подготовки в каталоге конфигурации (grafana > conf) в системе, где установлена Grafana. Однако если вы являетесь администратором Grafana, вы можете захотеть разместить файлы конфигурации в общем ресурсе, например в сетевой папке, поэтому вам нужно будет изменить путь к каталогу подготовки.
Вы можете задать другой путь, установив свойство paths.provisioning в основном файле конфигурации:
[paths]
provisioning = <путь к файлам конфигурации>
Для получения дополнительной информации о файлах конфигурации обратитесь к разделу Конфигурация в документации Grafana.
Каталог подготовки предполагает следующую структуру:
provisioning/
datasources/
<файлы yaml>
dashboards/
<файлы yaml>
Далее мы рассмотрим, как подготовить источник данных.
Подготовка источника данных
Каждый файл конфигурации подготовки источника данных содержит манифест, который определяет желаемое состояние набора подготавливаемых источников данных.
При запуске Grafana загружает файлы конфигурации и подготавливает источники данных, перечисленные в манифестах.
Давайте настроим источник данных TestData, который вы можете использовать для своих дашбордов.
Создание манифеста источника данных
-
В каталоге
provisioning/datasources/создайте файл с именемdefault.yamlсо следующим содержимым:apiVersion: 1 datasources: - name: TestData type: testdata -
Перезапустите Grafana, чтобы загрузить новые изменения.
-
В боковом меню наведите курсор на значок Configuration (шестерёнка) и нажмите Data Sources. TestData появится в списке источников данных.
Параметры конфигурации могут различаться для разных типов источников данных. Для получения дополнительной информации о том, как настроить конкретный источник данных, обратитесь к разделу Источники данных.
Подготовка дашборда
Каждый файл конфигурации дашборда содержит манифест, который определяет желаемое состояние набора провайдеров дашбордов.
Провайдер дашбордов сообщает Grafana, где найти определения дашбордов и куда их поместить.
Grafana регулярно проверяет изменения в определениях дашбордов (по умолчанию каждые 10 секунд).
Давайте определим провайдера дашбордов, чтобы Grafana знала, где найти дашборды, которые мы хотим подготовить.
Определение провайдера дашбордов
В каталоге provisioning/dashboards/ создайте файл с именем default.yaml со следующим содержимым:
apiVersion: 1
providers:
- name: Default # Уникальное идентифицируемое имя для провайдера
folder: Services # Папка, в которую помещать дашборды
type: file
options:
path:
<путь к определениям дашбордов>
# Путь по умолчанию для Windows: C:/Program Files/GrafanaLabs/grafana/public/dashboards
# Путь по умолчанию для Linux: /var/lib/grafana/dashboards
Для получения дополнительной информации о том, как настроить провайдеры дашбордов, обратитесь к разделу Дашборды.
Создание определения дашборда
-
В каталоге определений дашбордов, который вы указали в провайдере дашбордов, то есть
options.path, создайте файл с именемcluster.jsonсо следующим содержимым:{ "__inputs": [], "__requires": [], "annotations": { "list": [] }, "editable": false, "gnetId": null, "graphTooltip": 0, "hideControls": false, "id": null, "links": [], "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "TestData", "fill": 1, "gridPos": { "h": 8, "w": 24, "x": 0, "y": 0 }, "id": 2, "legend": { "alignAsTable": false, "avg": false, "current": false, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "repeat": null, "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [], "thresholds": [], "timeFrom": null, "timeShift": null, "title": "CPU Usage", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ] } ], "refresh": "", "rows": [], "schemaVersion": 16, "tags": ["kubernetes"], "templating": { "list": [] }, "time": { "from": "now-6h", "to": "now" }, "timepicker": {}, "timezone": "browser", "title": "Cluster", "version": 0 } -
Перезапустите Grafana, чтобы подготовить новый дашборд, или подождите 10 секунд, пока Grafana автоматически создаст дашборд.
-
В боковом меню наведите курсор на значок Dashboards (квадраты), а затем нажмите Manage. Дашборд появится в папке Services.
Если вы не укажете
idв определении дашборда, Grafana назначит его во время подготовки. Вы можете задатьidсамостоятельно, если хотите ссылаться на дашборд из других дашбордов. Будьте осторожны, чтобы не использовать один и тот жеidдля нескольких дашбордов, так как это вызовет конфликт.
Резюме
В этом учебном руководстве вы узнали, как переиспользовать дашборды и источники данных в нескольких командах, подготавливая Grafana из файлов конфигурации, находящихся под контролем версий.
Определения дашбордов могут стать громоздкими по мере добавления в них всё большего числа панелей и конфигураций. Существует ряд инструментов с открытым исходным кодом, которые упрощают управление определениями дашбордов:
- grafana-dash-gen (Javascript)
- grafanalib (Python)
- grafonnet-lib (Jsonnet)
- grafyaml (YAML)