grafana

Ansible роль grafana

Grafana - платформа для аналитики и мониторинга

GitHub Версия Проблемы Запросы на изменения Загрузки
github Версия Проблемы Запросы на изменения Ansible Роль

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

Этот пример взят из molecule/default/converge.yml и тестируется при каждом пуше, запросе на изменение и релизе.

---
- name: Объединение
  hosts: all
  become: yes
  gather_facts: yes

  roles:
    - role: buluma.grafana
      vars:
        grafana_security:
          admin_user: admin
          admin_password: password

Машину нужно подготовить. В CI это делается с помощью molecule/default/prepare.yml:

---
- name: Подготовка
  hosts: all
  gather_facts: no
  become: yes

  roles:
    - role: buluma.bootstrap

Смотрите также полное объяснение и пример о том, как использовать эти роли.

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

Значения переменных по умолчанию установлены в defaults/main.yml:

---
grafana_version: latest
grafana_yum_repo_template: etc/yum.repos.d/grafana.repo.j2
grafana_manage_repo: true

# Использовать ли возможности провизии, когда это возможно (требуется grafana >= 5.0)
grafana_use_provisioning: true

# Должна ли провизия оставаться синхронизированной. Если true, предыдущие провизированные объекты будут удалены, если на них больше нет ссылок.
grafana_provisioning_synced: false

grafana_instance: "{{ ansible_fqdn | default(ansible_host) | default(inventory_hostname) }}"

grafana_logs_dir: "/var/log/grafana"
grafana_data_dir: "/var/lib/grafana"

grafana_address: "0.0.0.0"
grafana_port: 3000
# Чтобы разрешить использование портов ниже 1024 для непривилегированных процессов, Linux должен установить CAP_NET_BIND_SERVICE.
# Это имеет некоторые обязательства по безопасности и должно быть осознанным выбором.
# Узнать больше можно, прочитав: http://man7.org/linux/man-pages/man7/capabilities.7.html
grafana_cap_net_bind_service: false

# Внешний адрес Grafana. Переменная соответствует "root_url" в разделе сервера grafana
grafana_url: "http://{{ grafana_address }}:{{ grafana_port }}"
grafana_api_url: "{{ grafana_url }}"
grafana_domain: "{{ ansible_fqdn | default(ansible_host) | default('localhost') }}"

# Дополнительные опции для секции "server" графана
# Этот раздел НЕ будет включать опции для: http_addr, http_port, domain и root_url, так как эти настройки установлены переменными, перечисленными ранее
grafana_server:
  protocol: http
  enforce_domain: false
  socket: ""
  cert_key: ""
  cert_file: ""
  enable_gzip: false
  static_root_path: public
  router_logging: false
  serve_from_sub_path: false

# Переменные соответствуют параметрам в файле конфигурации grafana.ini
# Безопасность
grafana_security:
  admin_user: admin
  admin_password: "password"
#  secret_key: ""
#  login_remember_days: 7
#  cookie_username: grafana_user
#  cookie_remember_name: grafana_remember
#  disable_gravatar: true
#  data_source_proxy_whitelist:

# Настройка базы данных
grafana_database:
  type: sqlite3
#  host: 127.0.0.1:3306
#  name: grafana
#  user: root
#  password: ""
#  url: ""
#  ssl_mode: disable
#  path: grafana.db
#  max_idle_conn: 2
#  max_open_conn: ""
#  log_queries: ""

# Удаленный кеш
grafana_remote_cache: {}

# Управление пользователями и регистрация
grafana_welcome_email_on_sign_up: false
grafana_users:
  allow_sign_up: false
  # allow_org_create: true
  # auto_assign_org: true
  auto_assign_org_role: Viewer
  # login_hint: "email or username"
  default_theme: dark
  # external_manage_link_url: ""
  # external_manage_link_name: ""
  # external_manage_info: ""

# Механизмы аутентификации grafana
grafana_auth: {}
#  disable_login_form: false
#  oauth_auto_login: false
#  disable_signout_menu: false
#  signout_redirect_url: ""
#  anonymous:
#    org_name: "Главная организация"
#    org_role: Viewer
#  ldap:
#    config_file: "/etc/grafana/ldap.toml"
#    allow_sign_up: false
#  basic:
#    enabled: true

grafana_ldap: {}
#  verbose_logging: false
#  servers:
#    host: 127.0.0.1
#    port: 389 # 636 для SSL
#    use_ssl: false
#    start_tls: false
#    ssl_skip_verify: false
#    root_ca_cert: /path/to/certificate.crt
#    bind_dn: "cn=admin,dc=grafana,dc=org"
#    bind_password: grafana
#    search_filter: "(cn=%s)" # "(sAMAccountName=%s)" на AD
#    search_base_dns:
#      - "dc=grafana,dc=org"
#    group_search_filter: "(&(objectClass=posixGroup)(memberUid=%s))"
#    group_search_base_dns:
#      - "ou=groups,dc=grafana,dc=org"
#    attributes:
#      name: givenName
#      surname: sn
#      username: sAMAccountName
#      member_of: memberOf
#      email: mail
#  group_mappings:
#    - name: Главная организация
#      id: 1
#      groups:
#        - group_dn: "cn=admins,ou=groups,dc=grafana,dc=org"
#          org_role: Admin
#        - group_dn: "cn=editors,ou=groups,dc=grafana,dc=org"
#          org_role: Editor
#        - group_dn: "*"
#          org_role: Viewer
#    - name: Альтернативная организация
#      id: 2
#      groups:
#        - group_dn: "cn=alternative_admins,ou=groups,dc=grafana,dc=org"
#          org_role: Admin

grafana_session: {}
#  provider: file
#  provider_config: "sessions"

grafana_analytics: {}
#  reporting_enabled: true
#  google_analytics_ua_id: ""

# Установите это для уведомлений по электронной почте
grafana_smtp: {}
#  host:
#  user:
#  password:
#  from_address:

# Включить механизм оповещений графана
grafana_alerting:
  execute_alerts: true
#  error_or_timeout: 'alerting'
#  nodata_or_nullvalues: 'no_data'
#  concurrent_render_limit: 5

# Конфигурация ведения журнала графана
grafana_log:
# mode: 'console file'
# level: info

# Внутренняя система метрик графана
grafana_metrics: {}
#  interval_seconds: 10
#  graphite:
#    address: "localhost:2003"
#    prefix: "prod.grafana.%(instance_name)s"

# Опции распределенного трассирования
grafana_tracing: {}
#  address: "localhost:6831"
#  always_included_tag: "tag1:value1,tag2:value2"
#  sampler_type: const
#  sampler_param: 1

grafana_snapshots: {}
#  external_enabled: true
#  external_snapshot_url: "https://snapshots-origin.raintank.io"
#  external_snapshot_name: "Публикация на snapshot.raintank.io"
#  snapshot_remove_expired: true
#  snapshot_TTL_days: 90

# Внешнее хранилище изображений
grafana_image_storage: {}
#  provider: gcs
#  key_file:
#  bucket:
#  path:


#######
# Плагины из https://grafana.com/plugins
grafana_plugins: []
#  - raintank-worldping-app

# Панели управления из https://grafana.com/dashboards
grafana_dashboards: []
#  - dashboard_id: '4271'
#    revision_id: '3'
#    datasource: 'Prometheus'
#  - dashboard_id: '1860'
#    revision_id: '4'
#    datasource: 'Prometheus'
#  - dashboard_id: '358'
#    revision_id: '1'
#    datasource: 'Prometheus'

grafana_dashboards_dir: "dashboards"

# Каналы уведомлений об оповещениях для настройки
grafana_alert_notifications: []
#  - name: "Оповещение по электронной почте"
#    type: "email"
#    uid: channel1
#    is_default: true
#    settings:
#      addresses: "[email protected]"

# Источники данных для настройки
grafana_datasources: []
#  - name: "Prometheus"
#    type: "prometheus"
#    access: "proxy"
#    url: "http://prometheus.mydomain"
#    basicAuth: true
#    basicAuthUser: "admin"
#    basicAuthPassword: "password"
#    isDefault: true
#    jsonData:
#      tlsAuth: false
#      tlsAuthWithCACert: false
#      tlsSkipVerify: true

# Ключи API для настройки
grafana_api_keys: []
#  - name: "admin"
#    role: "Admin"
#  - name: "viewer"
#    role: "Viewer"
#  - name: "editor"
#    role: "Editor"

# Место, где ключи будут храниться.
grafana_api_keys_dir: "{{ lookup('env', 'HOME') }}/grafana/keys"

grafana_environment: {}

# Конфигурации панелей
grafana_panels: {}
#  disable_sanitize_html: false
#  enable_alpha: false

Требования

Состояние используемых ролей

Для подготовки системы используются следующие роли. Вы можете подготовить вашу систему другим способом.

Требование GitHub Версия
buluma.bootstrap Ansible Molecule Версия

Контекст

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

Вот обзор связанных ролей:

зависимости

Совместимость

Эта роль была протестирована на следующих образах контейнеров:

контейнер теги
Ubuntu все
Debian все
EL все
Fedora все

Минимальная версия Ansible, необходимая для работы, — 2.12, тесты проводились для:

  • Предыдущей версии.
  • Текущей версии.
  • Версии разработки.

Если вы обнаружите проблемы, пожалуйста, зарегистрируйте их в GitHub

История изменений

История роли

Лицензия

Apache-2.0

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

Shadow Walker

О проекте

Grafana - platform for analytics and monitoring

Установить
ansible-galaxy install buluma/ansible-role-grafana
Лицензия
apache-2.0
Загрузки
353
Владелец
DevOps Engineer