0x0i.grafana

ansible logo

grafana logo

Ansible 角色 :rainbow: :bar_chart: Grafana

Galaxy Role GitHub release (latest by date) License: MIT

目录

Ansible 角色用于安装和配置 Grafana:一个分析和监控平台。

支持的平台:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu

要求

在目标主机上需要安装 unzip/gtar 工具。有关详细信息请参见 ansible unarchive 模块的说明。此外,因使用了在 5.0 版本中引入的 provisioning 特性,因此需要 版本 >= 5.0 的 Grafana 用于正确执行。

角色变量

变量按照以下软件和机器配置阶段进行组织:

  • 安装
  • 配置
  • 启动
  • 卸载

安装

grafana 可以通过压缩文件(.tar.zip)以及 DEB 和 RPM 发布包进行安装,这些包可以从不同来源下载并提取。

以下变量可以自定义控制安装过程中的各个方面,包括软件版本、二进制文件的源位置和安装目录:

grafana_user: <service-user-name> (默认:grafana)

grafana_group: <service-group-name> (默认:grafana)

  • 用于权限隔离的专用服务用户和组(详情请见这里

install_type: <package | archive> (默认: archive)

  • package:受 Debian 和 Redhat 发行版支持,通过包管理系统安装的 Grafana 会从各自的包管理库中提取指定包。

    • 请注意,安装目录由包管理系统决定,目前对于所有发行版的默认路径为 /usr/{sbin,lib,share}
  • archive:支持 tar 和 zip 格式,可以从地方和远程压缩归档中获取安装的二进制文件,来源包括官方的发行版本索引或来自开发/自定义来源的版本。

install_dir: </path/to/installation/dir> (默认: /opt/grafana)

  • 在目标主机上指定 grafana 二进制文件解压缩位置的路径。

archive_url: <path-or-url-to-archive> (默认: 见 defaults/main.yml)

  • 包含 grafana 二进制文件的压缩 tar 或 zip 归档的地址。该方法在技术上支持安装 Grafana 的任何可用版本。可查看官方版本链接这里

archive_checksum: <path-or-url-to-checksum> (默认: 见 defaults/main.yml)

  • 用于验证指定 grafana 归档的数据完整性的校验和文件地址。虽然推荐使用并通常视为最佳实践,但不强制要求并可以通过提供空字符串('')来禁用。

checksum_format: <string> (默认: 见 sha256)

  • 用于与指定归档校验和相关联的文件验证的哈希算法。有关 校验和/加密 哈希的更多信息,请参见这里

package_url: <path-or-url-to-package> (默认: 见 defaults/main.yml)

  • 包含 grafana 二进制文件的 debian(DEB)RPM 包地址。官方版本链接可在这里找到。

package_checksum: <path-or-url-to-checksum> (默认: 见 defaults/main.yml)

  • 用于验证指定 grafana 包的数据完整性的校验和文件地址。虽然推荐使用并通常视为最佳实践,但不强制要求并可以通过提供空字符串('')来禁用。

配置

使用此角色对 grafana 安装进行配置时,组织根据以下组件:

  • grafana 服务配置 (grafana.ini)
  • 数据源的配置 (provisioning/datasources - *.[json|yml])
  • 仪表盘的配置 (provisioning/dashboards - *.[json|yml])
  • 通知设置 (provisioning/notifiers - [json|yml])

每个配置可以在以下变量中被表达,以自定义要渲染的指定配置文件的内容和设置:

config_dir: </path/to/configuration/dir> (默认: {{ install_dir }})

  • 在目标主机上指定 grafana 配置文件应渲染的位置。

provision_configs: <['datasources', 'dashboards' 和/或 'notifiers']> (默认: [])

  • 要配置的 Grafana 配置组件列表。详情请见这里

Grafana 服务配置

Grafana 服务配置包含在一个 INI 文件中,默认名称为 grafana.ini,它定义了一组由代表 Grafana 服务的一般管理和各种内容提供方面的部分组成的服务行为。

这些部分和设置可以在哈希中表达,grafana_config,使用配置部分作为键,字典作为值代表配置段规范(例如,存储 sqlite3 数据库文件的路径 - 默认激活)。以下提供各部分的概述和示例配置以供参考。

:paths

[grafana_config:] path: <key: value,...> (默认: 见部分文档)

  • 指定与 Grafana 存储工件和变量数据位置相关的参数。
 grafana_config:
   # 部分 [paths]
   paths:
     # 部分选项 1 - sqlite 数据库路径
     data: /mnt/data/grafana
     # 部分选项 2 - 日志存储路径
     logs: /mnt/logs/grafana

[grafana_config:] server: <key: value,...> (默认: 见部分文档)

  • 指定与 Grafana 如何通过网络交互相关的参数。
 grafana_config:
   # 部分 [server]
   server:
     http_addr: 127.0.0.1
     http_port: 3030
:database

[grafana_config:] database: <key: value,...> (默认: 见部分文档)

  • 指定控制 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: <key: value,...> (默认: 见部分文档)

  • 指定管理 Grafana 如何与可用的远程缓存类型(如 redis,memcached 和 database)交互的参数。
 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: <key: value,...> (默认: 见部分文档)

  • 指定管理 Grafana 用户/组织认证和授权行为的参数。
  grafana_config:
    # 部分 [security]
    security:
      admin_user: sre-user
      admin_password: PASSWORD
      login_remember_days: 7
:users

[grafana_config:] users: <key: value,...> (默认: 见部分文档)

  • 指定控制 Grafana 用户能力的参数。
  grafana_config:
    # 部分 [users]
    users:
      allow_sign_up: true
      allow_org_create: false
      login_hint: THIS IS A HINT
:auth

[grafana_config:] auth: <key: value,...> (默认: 见部分文档)

  • 指定用户授权能力的参数。

Grafana 提供多种方法来验证用户,并且每种方法的设置在 [auth.] 部分中进行表达,允许从基本用户身份验证到 Google 和 Github OAuth 的认证。

  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: <key: value,...> (默认: 见部分文档)

  • 指定启用数据代理日志记录的参数。
  grafana_config:
    # 部分 [dataproxy]
    dataproxy:
      logging: true
      timeout: 60
      send_user_header: true
:analytics

[grafana_config:] analytics: <key: value,...> (默认: 见部分文档)

  • 指定激活使用统计数据收集和报告的参数。
  grafana_config:
    # 部分 [analytics]
    analytics:
      reporting_enabled: true
      google_analytics_ua_id: UA_ID
      check_for_updates: true
:dashboards

[grafana_config:] dashboards: <key: value,...> (默认: 见部分文档)

  • 指定管理 Grafana 仪表盘维护策略的参数。
  grafana_config:
    # 部分 [dashboards]
    dashboards:
      versions_to_keep: 5
:smtp

[grafana_config:] smtp: <key: value,...> (默认: 见部分文档)

  • 指定身份的电子邮件服务器设置,以及警报/通知。
  grafana_config:
    # 部分 [smtp]
    smtp:
      enabled: true
      host: 127.0.0.1:65
      user: smtp-user
      password: PASSWORD
:log

[grafana_config:] log: <key: value,...> (默认: 见部分文档)

  • 指定日志设置(例如日志级别和日志输出模式或渠道)。
  grafana_config:
    # 部分 [log]
    log:
      mode: console
      level: debug
:metrics

[grafana_config:] metrics: <key: value,...> (默认: 见部分文档)

  • 指定管理 Grafana 远程遥测的设置。
  grafana_config:
    # 部分 [metrics]
    metrics:
      enabled: true
      interval_seconds: 5s
    metrics.graphite:
      address: 127.0.0.1:7070
:snapshots

[grafana_config:] snapshots: <key: value,...> (默认: 见部分文档)

  • 指定管理 Grafana 交互式仪表板快照功能的发布行为的设置。
  grafana_config:
    # 部分 [snapshots]
    snapshots:
      external_enabled: true
      external_snapshot_name: ENDPOINT
:external_image_storage

[grafana_config:] external_image_storage: <key: value,...> (默认: 见部分文档)

  • 指定控制如何共享图像的设置,例如通过 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: <key: value,...> (默认: 见部分文档)

  • 指定用于管理 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: <key: value,...> (默认: 见部分文档)

  • 指定远程 HTTP 渲染服务操作的设置。
  grafana_config:
    # 部分 [rendering]
    rendering:
      server_url: http://localhost:8081/render
      callback_url: http://grafana.open.domain
:plugins

[grafana_config:] plugins: <key: value,...> (默认: 见部分文档)

  • 指定管理 grafana 插件的可用性和可访问性的设置。
  grafana_config:
    # 部分 [plugins]
    plugins:
      enable_alpha: true
:feature_toggles

[grafana_config:] feature_toggles: <key: value,...> (默认: 见部分文档)

  • 指定切换 Grafana 实例使用 alpha 特性的设置,多个特性用空格分隔。
  grafana_config:
    # 部分 [feature_toggles]
    features_toggles:
      enable: transformations
:tracing.jaeger

[grafana_config:] tracing.jaegar: <key: value,...> (默认: 见部分文档)

  • 指定配置 Grafana 的 Jaeger 客户端进行分布式追踪的设置。

注意: 标准的 Jaeger 环境变量以 JAEGAR_* 前缀开头,仍然可以指定并将覆盖此处提供的设置。

  grafana_config:
    # 部分 [tracing.jaegar]
    tracing.jaegar:
      address: http://localhost:6381
      always_included_tag: key1:value1,key2:value2

数据源

Grafana 支持多种存储后端作为你的时间序列数据,称为数据源。每个数据源可以在 Grafana 的 provisioning 目录下通过一组 json|yml 配置文件进行配置,这些文件可以在 [paths] grafana.ini 部分进行调整。

这些数据源配置可以在哈希中表达,grafana_datasources。此哈希包含用于激活的数据源结构列表以及用于删除的另一列表,分别以 datasourcesdeleteDatasources 为键,其值本身是表示单个数据源规范的字典列表。有关更多详细信息和支持的数据源列表,请参见这里

grafana_datasources: <list-of-dicts> (默认: [])

  • 指定要渲染的 grafana 数据源定义。有关社区中可用数据源及其相应选项的参考,请参见这里

grafana_datasources: name: <string> (默认:必需)

  • 要渲染的 grafana 数据源文件名称。

grafana_datasources: <entry> : datasources: <list-of-dicts> (默认: [])

  • 要在配置文件中渲染的数据源定义列表(基于上述支持的列表)。

grafana_datasources: <entry> : deleteDatasources: <list-of-dicts> (默认: [])

  • 要在配置文件中渲染的已导入的数据源定义列表(基于上述支持的列表)。
 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 允许在 provisioning/dashboards 目录中添加一个或多个 yaml|json 配置文件。使 Grafana 能从本地文件系统加载仪表板,此目录可以包含指示加载目录/文件特性和各种形式的元数据的仪表板提供者列表。

这些仪表板提供者配置可以在哈希中表达,grafana_dashboards,其由上述仪表板提供者结构列表组成。有关更多信息和社区创建的可下载和导入的仪表板列表,请参见这里

grafana_dashboards: <list-of-dicts> (默认: [])

  • 指定要渲染的 grafana 仪表板提供者定义。有关支持选项的参考,请访问这里

grafana_dashboards: <entry> : name: <string> (默认:必需)

  • 要渲染的 grafana 仪表板提供者文件名称。

grafana_dashboards: <entry> : apiVersion: <string> (默认:[])

  • grafana 仪表板提供者文件的版本名称(用于跨实例同步)。

grafana_dashboards: <entry> : providers: <list-of-dicts> (默认: [])

  • 要在配置文件中渲染的仪表板提供者定义列表。

[grafana_dashboards: <entry> : urls: <entry>:] name (默认:必需)

  • 存储仪表板配置/内容的 JSON 文件名称。

[grafana_dashboards: <entry> : urls: <entry>:] src (默认:[])

  • URL 或 web 地址,用于查找和下载 JSON 文件/内容。

[grafana_dashboards: <entry> : urls: <entry>:] id (默认:[])

  • 用于引用从 Grafana 官方社区中心下载的仪表板的唯一标识符。

[grafana_dashboards: <entry> : urls: <entry>:] 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

通知器

警报通知通道可以通过在 provisioning/notifiers 目录中添加一个或多个 yaml|json 配置文件进行配置。

每个配置文件可以在 grafana_notifiers 哈希中表达,包含以下顶级字段:

  • notifiers,将在启动时添加或更新的警报通知列表。如果通知通道已存在,Grafana 将更新其配置文件。
  • delete_notifiers,删除的警报通知列表,应在插入/更新通知列表之前进行删除。

配置根据 uid 查找警报通知,并将在提供的 uid 存在时更新任何现有通知。

grafana_notifiers: <list-of-dicts> (默认: [])

  • 指定要渲染的 grafana 通知器定义。有关支持选项的参考,请访问这里

grafana_notifiers: <entry> : name: <string> (默认: 必需)

  • 要渲染的 grafana 警报通知器文件名称。

grafana_notifiers: <entry> : notifiers: <string> (默认: [])

  • 要为 Grafana 实例激活的 grafana 警报通知器列表。

grafana_notifiers: <entry> : delete_notifiers: <list-of-dicts> (默认: [])

  • 要从 Grafana 实例中删除的警报通知器列表。
  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: <entry>:] name: (默认:必需)

  • 要下载的 Grafana 插件名称。

[grafana_plugins: <entry>:] 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-options> (默认:[])

  • 在运行时传递给二进制文件的 grafana 命令行参数列表,用于自定义启动。

支持完整表达 Grafana 的 cli,该变量使启动能够根据用户的规范进行自定义。

custom_unit_properties: <hash-of-systemd-service-settings> (默认:[])

  • 用于自定义 Grafana systemd 服务的 [Service] 单元配置和执行环境的设置哈希。

卸载

支持卸载并移除所需的工件,以便用户/操作员能够将目标主机恢复到应用此角色之前的配置状态。这对于循环使用节点和可能提供更优雅的工具升级过渡非常有用。

以下变量可自定义以管理此卸载过程:

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 方便故障排除并且输出到控制台/标准输出{err}:

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

许可证

MIT

作者信息

此角色由 O1.IO 在 2019 年创建。

关于项目

Grafana - an analytics and monitoring observability platform

安装
ansible-galaxy install 0x0i.grafana
许可证
Unknown
下载
337
拥有者