grafana

логотип ansible

логотип grafana

Ansible Роль :rainbow: :bar_chart: Grafana

Galaxy Role GitHub release (последняя по дате) Лицензия: MIT

Содержание

Ansible роль, которая устанавливает и настраивает Grafana: платформу для аналитики и мониторинга.

Поддерживаемые платформы:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu

Требования

Требуется утилита unzip/gtar, установленная на целевом хосте. Для деталей смотрите заметки модуля ansible unarchive здесь. Кроме того, из-за использования функции provisioning, введенной в версии 5.0, требуются версии >= 5.0 Grafana для корректной работы.

Переменные роли

Переменные доступны и организованы согласно следующим этапам установки и настройки программного обеспечения и машины:

  • установка
  • конфигурация
  • запуск
  • удаление

Установка

grafana может быть установлена с использованием сжатых архивов (.tar, .zip), а также пакетов дистрибутивов DEB и RPM, скачанных и распакованных из различных источников.

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

grafana_user: <имя-пользователя-сервиса> (по умолчанию: grafana)

grafana_group: <имя-группы-сервиса> (по умолчанию: grafana)

  • выделенный пользователь и группа службы, используемые grafana для разделения привилегий (подробности см. здесь)

install_type: <package | archive> (по умолчанию: archive)

  • package: поддерживается дистрибуциями Debian и Redhat, установка пакета Grafana загружает указанный пакет из соответствующего репозитория управления пакетами.

    • Обратите внимание, что директория установки определяется системой управления пакетами и по умолчанию расположена под /usr/{sbin,lib, share} для всех дистрибутивов.
  • archive: совместима с форматами tar и zip, архивированные бинарные файлы могут быть получены из локальных и удаленных сжатых архивов либо из официального индекса релизов, либо из тех, которые были сгенерированы из разработок/настраиваемых источников.

install_dir: </путь/к/директории/установки> (по умолчанию: /opt/grafana)

  • путь на целевом хосте, куда должны быть распакованы бинарные файлы grafana.

archive_url: <путь-или-url-к-архиву> (по умолчанию: см. defaults/main.yml)

  • адрес сжатого tar или zip архива, содержащего бинарные файлы grafana. Этот метод технически поддерживает установку любой доступной версии grafana. Ссылки на официальные версии можно найти здесь.

archive_checksum: <путь-или-url-к-хешу> (по умолчанию: см. defaults/main.yml)

  • адрес файла с хешем для проверки целостности данных указанного архива grafana. Хотя это рекомендуется и обычно считается хорошей практикой, указание хеша не является обязательным и может быть отключено, если значение будет пустой строкой ('').

checksum_format: <строка> (по умолчанию: см. sha256)

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

package_url: <путь-или-url-к-пакету> (по умолчанию: см. defaults/main.yml)

  • адрес файла debian(DEB) или RPM пакета, содержащего бинарные файлы grafana. Ссылки на официальные версии можно найти здесь.

package_checksum: <путь-или-url-к-хешу> (по умолчанию: см. defaults/main.yml)

  • адрес файла с хешем для проверки целостности данных указанного пакета grafana. Хотя это рекомендуется и обычно считается хорошей практикой, указание хеша не является обязательным и может быть отключено, если значение будет пустой строкой ('').

Конфигурация

С помощью этой роли настройка установки grafana организована согласно следующим компонентам:

  • конфигурация сервиса grafana (grafana.ini)
  • подготовка источников данных (provisioning/datasources - *.[json|yml])
  • подготовка дашбордов (provisioning/dashboards - *.[json|yml])
  • настройка уведомителей (provisioning/notifiers - [json|yml])

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

config_dir: </путь/к/директории/конфигурации> (по умолчанию: {{ install_dir }})

  • путь на целевом хосте, где должен быть создан файл конфигурации grafana

provision_configs: <['datasources', 'dashboards' и/или 'notifiers']> (по умолчанию: [])

  • список компонентов подготовки Grafana для настройки. Подробности см. здесь для получения дополнительных сведений.

Конфигурация сервиса Grafana

Конфигурация сервиса Grafana содержится в INI файле, grafana.ini по умолчанию, который определяет набор поведения службы, организованных по секциям, представляющим общую администрацию и различные аспекты поставщика контента для сервиса Grafana.

Эти секции и настройки могут быть выражены в хеше grafana_config, ключом которого будет секция конфигурации, а значениями будут словари, представляющие спецификации секций конфигурации (например, путь к файлу базы данных sqlite3 — активирован по умолчанию). Ниже представлено обобщение и примеры конфигураций каждой секции для справки.

:paths

[grafana_config:] path: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает параметры, связанные с тем, где Grafana хранит артефакты и переменные данные
 grafana_config:
   # секция [paths]
   paths:
     # параметр 1 - путь к базе данных sqlite
     data: /mnt/data/grafana
     # параметр 2 - путь для хранения логов
     logs: /mnt/logs/grafana

[grafana_config:] server: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает параметры, связанные с тем, как Grafana взаимодействует через сеть
 grafana_config:
   # секция [server]
   server:
     http_addr: 127.0.0.1
     http_port: 3030
:database

[grafana_config:] database: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает параметры, контролирующие, как grafana взаимодействует с одним из имеющихся типов бэкэнд-хранения данных (т.е. mysql, postgres и sqlite)
 grafana_config:
   # секция [database]
   database:
     type: mysql
     host: 127.0.0.1:3306
     name: grafana-test
     user: mysql-admin
     password: PASSWORD
:remote_cache

[grafana_config:] remote_cache: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает параметры, контролирующие, как grafana взаимодействует с одним из имеющихся типов удаленного кэша (т.е. redis, memcached и база данных)
 grafana_config:
   # секция [remote_cache]
   remote_cache:
     type: redis
     connstr: addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false
:security

[grafana_config:] security: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает параметры, управляющие аутентификацией и авторизацией пользователей Grafana/организации
  grafana_config:
    # секция [security]
    security:
      admin_user: sre-user
      admin_password: PASSWORD
      login_remember_days: 7
:users

[grafana_config:] users: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает параметры, контролирующие возможности пользователей Grafana
  grafana_config:
    # секция [users]
    users:
      allow_sign_up: true
      allow_org_create: false
      login_hint: THIS IS A HINT
:auth

[grafana_config:] auth: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает параметры, регулирующие возможности авторизации пользователей

Grafana предоставляет несколько методов для аутентификации пользователей, и настройки для каждого метода выражены в секциях [auth.], как это уместно, позволяя аутентификацию от простой базовой аутентификации пользователей до OAuth с Google и Github.

  grafana_config:
    # секция [auth.github] - ЗАМЕТКА: **github** представляет метод аутентификации
    auth.github:
      enabled: true
      allow_sign_up: true
      client_id: YOUR_GITHUB_APP_CLIENT_ID
      client_secret: YOUR_GITHUB_APP_CLIENT_SECRET
      scopes: user:email,read:org
      auth_url: https://github.com/login/oauth/authorize
      token_url: https://github.com/login/oauth/access_token
      api_url: https://api.github.com/user
:dataproxy

[grafana_config:] dataproxy: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает параметры, включающие регистрацию прокси-данных
  grafana_config:
    # секция [dataproxy]
    dataproxy:
      logging: true
      timeout: 60
      send_user_header: true
:analytics

[grafana_config:] analytics: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает параметры, активирующие сбор и отчет статистики использования
  grafana_config:
    # секция [analytics]
    analytics:
      reporting_enabled: true
      google_analytics_ua_id: UA_ID
      check_for_updates: true
:dashboards

[grafana_config:] dashboards: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает параметры, регулирующие политику обслуживания дашбордов Grafana
  grafana_config:
    # секция [dashboards]
    dashboards:
      versions_to_keep: 5
:smtp

[grafana_config:] smtp: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает настройки почтового сервера для идентичности, кроме оповещений/уведомлений
  grafana_config:
    # секция [smtp]
    smtp:
      enabled: true
      host: 127.0.0.1:65
      user: smtp-user
      password: PASSWORD
:log

[grafana_config:] log: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает настройки журналирования (например, уровень журналирования и режимы или каналы вывода журнала)
  grafana_config:
    # секция [log]
    log:
      mode: console
      level: debug
:metrics

[grafana_config:] metrics: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает настройки для управления эмиссией телеметрии Grafana
  grafana_config:
    # секция [metrics]
    metrics:
      enabled: true
      interval_seconds: 5s
    metrics.graphite:
      address: 127.0.0.1:7070
:snapshots

[grafana_config:] snapshots: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает настройки для управления поведением публикации функции интерактивного создания снимков дашборда Grafana
  grafana_config:
    # секция [snapshots]
    snapshots:
      external_enabled: true
      external_snapshot_name: ENDPOINT
:external_image_storage

[grafana_config:] external_image_storage: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает настройки для контроля того, как изображения должны быть публично доступны для обмена на таких сервисах, как slack

Grafana поддерживает несколько поставщиков бэкэнд-хранения, для которого индивидуальные конфигурации могут быть выражены в секциях [external_image_storage.] по мере необходимости, что позволяет удаленное хранение в таких сервисах, как s3, gcs, azure blob и локальное хранение.

  grafana_config:
    # секция [external_image_storage]
    external_image_storage:
      external_enabled: true
      external_snapshot_name: Publish to ENDPOINT
    external_image_storage.s3:
      endpoint: http://example.org.s3/
      bucket: grafana-snapshots
      region: us-east-1
      path: ${HOSTNAME}
      access_key: ACCESS_KEY
      secret_key: SECRET_KEY
:alerting

[grafana_config:] alerting: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает настройки для управления механизмом и поведением/правилами оповещений Grafana
  grafana_config:
    # секция [alerting]
    alerting:
      enabled: true
      execute_alerts: true
      nodata_or_nullvalues: no_data
      evaluation_timeout_seconds: 10
      notification_timeout_seconds: 60
      max_attempts: 5
:rendering

[grafana_config:] rendering: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает настройки для работы с удаленной службой визуализации HTTP
  grafana_config:
    # секция [rendering]
    rendering:
      server_url: http://localhost:8081/render
      callback_url: http://grafana.open.domain
:plugins

[grafana_config:] plugins: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает настройки для управления доступностью и доступом к плагинам grafana
  grafana_config:
    # секция [plugins]
    plugins:
      enable_alpha: true
:feature_toggles

[grafana_config:] feature_toggles: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает настройки для переключения использования alpha-фичей экземпляра grafana, делимитированного пробелами
  grafana_config:
    # секция [feature_toggles]
    features_toggles:
      enable: transformations
:tracing.jaeger

[grafana_config:] tracing.jaegar: <ключ: значение,...> (по умолчанию: см. документацию)

  • указывает настройки для конфигурации клиента Jaeger Grafana для распределенного отслеживания.

Заметка: стандартные переменные окружения Jaeger, начинающиеся с JAEGAR_*, также могут быть указаны и переопределят любые настройки, представленные здесь.

  grafana_config:
    # секция [tracing.jaegar]
    tracing.jaegar:
      address: http://localhost:6381
      always_included_tag: key1:value1,key2:value2

Источники данных

Grafana поддерживает множество различных бэкэндов хранения для ваших временных рядов данных, известных как источники данных. Каждый источник данных можно настроить в наборе конфигурационных файлов json|yml в директории provisioning Grafana, которую можно изменить в секции [paths] файла grafana.ini.

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

grafana_datasources: <список-словарей> (по умолчанию: [])

  • задает определения источников данных grafana для рендеринга. См. здесь для ссылки на доступные источники данных от сообщества и их соответствующих параметров.

grafana_datasources: name: <строка> (по умолчанию: обязательно)

  • имя файла источника данных grafana для рендеринга

grafana_datasources: <ввод> : datasources: <список-словарей> (по умолчанию: [])

  • список определений источников данных (на основе списка поддерживаемых, упомянутого выше) для рендеринга внутри конфигурационного файла

grafana_datasources: <ввод> : deleteDatasources: <список-словарей> (по умолчанию: [])

  • список ранее импортированных определений источников данных для удаления (на основе списка поддерживаемых, упомянутого выше) для рендеринга внутри конфигурационного файла
 grafana_datasources:
 - name: example_datasource
   datasources:
     - name: elasticsearch-logs
       type: elasticsearch
       access: proxy
       database: "[logs-]YYYY.MM.DD"
       url: http://localhost:9200
       jsonData:
         interval: Daily
         timeField: "@timestamp"
         esVersion: 70
         logMessageField: message
         logLevelField: fields.level
     - name: prometheus_example
       type: prometheus
       access: proxy
       url: http://localhost:9090
   deleteDatasources:
     - name: graphite-legacy
       type: graphite
       access: proxy
       url: http://localhost:8080
       jsonData:
         graphiteVersion: "1.1"

С версии 5.0 Grafana разрешила добавление одного или нескольких конфигурационных файлов yaml|json в директории provisioning/dashboards. Это позволяет Grafana загружать дашборды из локальной файловой системы. Эта директория может содержать список провайдеров дашбордов, которые указывают на характеристики и различные формы метаданных, относящихся к директории/файлу, из которого загружать.

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

grafana_dashboards: <список-словарей> (по умолчанию: [])

  • задает определения провайдеров дашбордов grafana для рендеринга. См. здесь для ссылки на поддерживаемые параметры.

grafana_dashboards: <ввод> : name: <строка> (по умолчанию: обязательно)

  • имя файла провайдера дашбордов grafana для рендеринга

grafana_dashboards: <ввод> : apiVersion: <строка> (по умолчанию: [])

  • имя версии файла провайдера дашбордов grafana (полезно для синхронизации между экземлярами)

grafana_dashboards: <ввод> : providers: <список-словарей> (по умолчанию: [])

  • список определений провайдеров дашбордов для рендеринга внутри конфигурационного файла

[grafana_dashboards: <ввод> : urls: <ввод>:] name <строка> (по умолчанию: обязательно)

  • имя JSON файла для хранения конфигурации/содержимого дашборда

[grafana_dashboards: <ввод> : urls: <ввод>:] src <строка> (по умолчанию: [])

  • URL или веб-адрес для нахождения и загрузки JSON файла/содержимого

[grafana_dashboards: <ввод> : urls: <ввод>:] id <целое число> (по умолчанию: [])

  • уникальный идентификатор для ссылки на дашборд, который нужно загрузить из официального сообщества Grafana

[grafana_dashboards: <ввод> : urls: <ввод>:] dest (по умолчанию: {{ provisioning_dir }}/dashboards)

  • местоположение в файловой системе хоста для хранения определения JSON дашборда

Примечание: хотя бы один из _.src или _.id для идентификации и расположения дашборда обязан быть указаны.

  grafana_dashboards:
    - name: test-example
      apiVersion: 2
      urls:
        - name: node_exporter_prometheus
          src: https://grafana.com/api/dashboards/11173/revisions/1/download
        - name: geth_server
          id: '6976'
      providers:
        - name: 'default-example'
          folder: 'default'
          folderUid: 1
          type: file
          disableDeletion: true
          updateIntervalSeconds: 30
          options:
            path: /var/lib/grafana/conf/provisioning/dashboards

Уведомители

Каналы уведомлений об оповещениях могут быть подготовлены добавлением одного или нескольких конфигурационных файлов yaml|json в директорию provisioning/notifiers.

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

  • notifiers, список оповещений об оповещениях, которые будут добавлены или обновлены во время запуска. Если канал уведомления уже существует, Grafana обновит его, чтобы он соответствовал конфигурационному файлу.
  • delete_notifiers, список оповещений об оповещениях для удаления перед вставкой/обновлением тех, что в списке уведомлений.

Подготовка ищет уведомления об оповещениях по uid и обновит любое существующее уведомление с указанным uid.

grafana_notifiers: <список-словарей> (по умолчанию: [])

  • задает определения уведомителей grafana для рендеринга. См. здесь для ссылки на поддерживаемые параметры.

grafana_notifiers: <ввод> : name: <строка> (по умолчанию: обязательно)

  • имя файла уведомителя графана для рендеринга

grafana_notifiers: <ввод> : notifiers: <строка> (по умолчанию: [])

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

grafana_notifiers: <ввод> : delete_notifiers: <список-словарей> (по умолчанию: [])

  • список уведомителей об оповещениях графана для удаления из экземпляра графана
  grafana_notifiers:
    - name: slack-example
      notifiers:
        - name: example-org-slack
          url: http://slack.example.org
          recipient: team-channel
        - name: example-org-pagerduty
          integrationKey: PAGER_DUTY_KEY
      delete_notifiers:
        - name: example-org-email
          addresses: [email protected],[email protected]

Плагины

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

[grafana_plugins: <ввод>:] name: <строка> (по умолчанию: обязательно)

  • имя плагина Grafana для загрузки

[grafana_plugins: <ввод>:] version: <строка> (по умолчанию: `latest)

  • версия плагина Grafana для загрузки
  grafana_plugins:
    - name: petrslavotinek-carpetplot-panel
      version: 0.1.1
    - name: briangann-gauge-panel
      # version: latest

Запуск

Эта роль поддерживает запуск веб-сервера grafana, осуществляемого с использованием инструмента управления службами systemd, который управляет службой как фоновым процессом или демоном в зависимости от конфигурации и возможностей выполнения, предоставляемых его базовой управляющей платформой.

Следующие переменные могут быть настроены для управления systemd [Service] определением юнита и профилем/политикой выполнения:

extra_run_args: <опции-grafana-cli> (по умолчанию: [])

  • список аргументов командной строки grafana, которые должны быть переданы бинарному файлу во время выполнения для настройки запуска.

Поддерживая полное выражение cli grafana, эта переменная позволяет настроить запуск в соответствии со спецификациями пользователя.

custom_unit_properties: <хеш-настроек-сервиса-systemd> (по умолчанию: [])

  • хеш настроек, используемых для настройки конфигурации юнита [Service] и среды выполнения службы Grafana systemd.

Удаление

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

Следующие переменные могут быть настроены для управления процессом удаления:

perform_uninstall: <true | false> (по умолчанию: false)

  • нужно ли удалить и избавиться от всех артефактов и остатков этой установки grafana на целевом хосте (см.: handlers/main.yml для деталей)

Зависимости

  • 0x0i.systemd

Пример плейбука

простой пример:

- hosts: all
  roles:
  - role: 0x0I.grafana

установить конкретную версию файлов Grafana:

- hosts: all
  roles:
  - role: 0xOI.grafana
    vars:
      archive_url: https://dl.grafana.com/oss/release/grafana-6.6.1.linux-amd64.tar.gz
      archive_checksum: 0edc8207e356ef66eb7b1c78a1cdabc2cd5c0655de774000de2ad0397e543377

подстроить каталоги установки, конфигурации и данных Grafana:

- hosts: all
  roles:
  - role: 0x0I.grafana
    vars:
      install_dir: /usr/local
      config_dir: /etc/grafana
      data_dir: /mnt/grafana

запустить Grafana в режиме отладки для целей устранения неполадок и только выводить на консоль/stdout{err}:

- hosts: all
  roles:
  - role: 0x0I.grafana
    vars:
      grafana_config:
        log:
          level: debug
          mode: console

Лицензия

MIT

Информация об авторе

Эта роль была создана в 2019 году O1.IO.

О проекте

Grafana - an analytics and monitoring observability platform

Установить
ansible-galaxy install 0x0I/ansible-role-grafana
Лицензия
Unknown
Загрузки
326
Владелец