grafana

УСТАРЕЛО

Эта роль устарела в пользу коллекции grafana-ansible-collection.

логотип grafana

Ansible Роль: grafana

Статус сборки Лицензия Ansible Роль ГитХаб Тег

Установите и управляйте платформой grafana для аналитики и мониторинга.

Требования

  • Ansible >= 2.7 (Может работать на более ранних версиях, но мы не можем это гарантировать)
  • libselinux-python на хосте развертывания (только если на машине развертывателя включен SELinux)
  • grafana >= 5.1 (для более старых версий grafana используйте эту роль в версии 0.10.1 или ранее)
  • jmespath на машине развертывателя. Если вы используете Ansible из виртуального окружения Python, установите jmespath в то же виртуальное окружение через pip.

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

Все переменные, которые можно переопределить, хранятся в файле defaults/main.yml, а также в таблице ниже.

Имя Значение по умолчанию Описание
grafana_use_provisioning true Использовать возможности провизионирования Grafana при возможности (grafana_version=latest предполагает >= 5.0).
grafana_provisioning_synced false Убедитесь, что ранее провизионированные дашборды не остались, если на них больше не ссылаются.
grafana_version latest Версия пакета Grafana
grafana_yum_repo_template etc/yum.repos.d/grafana.repo.j2 Шаблон Yum для использования
grafana_manage_repo true Управлять репозиторием пакетов (или нет)
grafana_instance {{ ansible_fqdn | default(ansible_host) | default(inventory_hostname) }} Имя экземпляра Grafana
grafana_logs_dir /var/log/grafana Путь к директории логов
grafana_data_dir /var/lib/grafana Путь к директории базы данных
grafana_address 0.0.0.0 Адрес, на котором слушает Grafana
grafana_port 3000 Порт, на котором слушает Grafana
grafana_cap_net_bind_service false Разрешает использование портов ниже 1024 без привилегий root путем использования 'возможностей' ядра linux. Подробнее: http://man7.org/linux/man-pages/man7/capabilities.7.html
grafana_url "http://{{ grafana_address }}:{{ grafana_port }}" Полный URL для доступа к Grafana из веб-браузера
grafana_api_url "{{ grafana_url }}" URL для вызовов API в процессе провизионирования, если отличается от публичного URL. См. этот вопрос.
grafana_domain "{{ ansible_fqdn | default(ansible_host) | default('localhost') }}" Настройка используется только в качестве части параметра root_url. Полезно при использовании GitHub или Google OAuth
grafana_server { protocol: http, enforce_domain: false, socket: "", cert_key: "", cert_file: "", enable_gzip: false, static_root_path: public, router_logging: false } Секция конфигурации сервер
grafana_security { admin_user: admin, admin_password: "" } Секция конфигурации безопасности
grafana_database { type: sqlite3 } Секция конфигурации базы данных
grafana_welcome_email_on_sign_up false Отправить приветственное письмо после регистрации
grafana_users { allow_sign_up: false, auto_assign_org_role: Viewer, default_theme: dark } Секция конфигурации пользователей
grafana_auth {} Секция конфигурации авторизации
grafana_ldap {} Секция конфигурации ldap. group_mappings развернуты, смотрите значения по умолчанию для примера
grafana_session {} Секция управления сессиями
grafana_analytics {} Конфигурация Google analytics
grafana_smtp {} Секция конфигурации smtp
grafana_alerting {} Секция конфигурации оповещений
grafana_log {} Секция конфигурации логов
grafana_metrics {} Секция конфигурации метрик
grafana_tracing {} Секция конфигурации трассировки
grafana_snapshots {} Секция конфигурации снимков
grafana_image_storage {} Секция конфигурации хранения изображений
grafana_dashboards [] Список дашбордов, которые должны быть импортированы
grafana_dashboards_dir "dashboards" Путь к локальной директории с файлами дашбордов в формате json
grafana_datasources [] Список источников данных, которые должны быть настроены
grafana_environment {} Дополнительные параметры окружения для установки Grafana, полезно, например, для установки http_proxy
grafana_plugins [] Список плагинов Grafana, которые должны быть установлены
grafana_alert_notifications [] Список каналов уведомлений об оповещениях, которые должны быть созданы, обновлены или удалены

Пример источника данных:

grafana_datasources:
  - name: prometheus
    type: prometheus
    access: proxy
    url: 'http://{{ prometheus_web_listen_address }}'
    basicAuth: false

Пример дашборда:

grafana_dashboards:
  - dashboard_id: 111
    revision_id: 1
    datasource: prometheus

Пример канала уведомлений об оповещениях:

ПРИМЕЧАНИЕ: установка переменной grafana_alert_notifications будет иметь эффект только тогда, когда grafana_use_provisioning равен true. Это означает, что новая система провизионирования с использованием конфигурационных файлов, доступная с версии Grafana v5.0, должна быть использована.

grafana_alert_notifications:
  notifiers:
    - name: Канал 1
      type: email
      uid: channel1
      is_default: false
      send_reminder: false
      settings:
        addresses: "[email protected]"
        autoResolve: true
  delete_notifiers:
    - name: Канал 2
      uid: channel2

Используйте пользовательский шаблон Yum репозитория Grafana:

  • Поместите ваш шаблон рядом с вашим плейбуком в папке templates.

  • Используйте другой путь, чем путь по умолчанию, так как Ansible, при использовании относительного пути, сначала ищет шаблон в директории роли, а затем в директории плейбука.

  • Расширение шаблона будет помещено в /etc/yum.repos.d/ и будет иметь имя, равное basename пути шаблона без .j2.

    Пример:

    grafana_yum_repo_template: my_yum_repos/grafana.repo.j2
    
    # [playbook_dir]/templates/my_yum_repos/grafana.repo.j2
    # будет помещен под
    # /etc/yum.repos.d/grafana.repo
    # на удаленном хосте
    

Поддерживаемые архитектуры ЦП

Исторически пакеты получались из разных каналов в зависимости от архитектуры ЦП. В частности, пакеты armv6/armv7 и aarch64/arm64 предоставлялись через неофициальные пакеты, распределяемые fg2it. Теперь, когда Grafana публикует официальные ARM сборки, все пакеты берутся из официальных Debian/Ubuntu или RPM пакетов.

Пример

Плейбук

Заполните поле пароля администратора на ваш выбор, веб-страница Grafana не будет запрашивать его изменение при первом входе.

- hosts: all
  roles:
    - role: cloudalchemy.grafana
      vars:
        grafana_security:
          admin_user: admin
          admin_password: введите_ваш_безопасный_пароль

Демонстрационный сайт

Мы предоставляем демонстрационный сайт для полного решения мониторинга на основе prometheus и grafana. Репозиторий с кодом и ссылками на работающие экземпляры доступен на github, а сайт размещён на DigitalOcean.

Локальное Тестирование

Предпочтительный способ локального тестирования роли - использовать Docker и molecule (v2.x). Вам нужно будет установить Docker на вашу систему. См. "Начало работы" для получения подходящего пакета Docker для вашей системы. Мы используем tox, чтобы упростить процесс тестирования на нескольких версиях ansible. Для установки tox выполните:

pip3 install tox

Чтобы запустить тесты на всех версиях ansible (ПРЕДУПРЕЖДЕНИЕ: это может занять некоторое время)

tox

Чтобы выполнить пользовательскую команду молекулы в пользовательской среде с только стандартным сценарием тестирования:

tox -e py35-ansible28 -- molecule test -s default

Для получения дополнительной информации о молекуле перейдите в их документацию.

Если вы хотите запускать тесты на удаленном хосте Docker, просто укажите переменную DOCKER_HOST перед запуском тестов tox.

Travis CI

Сочетание молекулы и travis CI позволяет нам тестировать, как новые PR будут работать с несколькими версиями ansible и несколькими операционными системами. Это также позволяет создавать тестовые сценарии для различных конфигураций ролей. В результате у нас есть довольно большая тестовая матрица, что может занять больше времени, чем локальное тестирование, так что, пожалуйста, проявите терпение.

Сотрудничество

Смотрите руководство для участников.

Устранение неполадок

Смотрите устранение неполадок.

Лицензия

Этот проект лицензирован под лицензией MIT. См. LICENSE для получения подробностей.

О проекте

Grafana - platform for analytics and monitoring

Установить
ansible-galaxy install cloudalchemy/ansible-grafana
Лицензия
mit
Загрузки
1785222
Владелец
Setup your monitoring stack with ansible