0x0i.grafana
Ansible 角色 :rainbow: :bar_chart: Grafana
目录
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.
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
。此哈希包含用于激活的数据源结构列表以及用于删除的另一列表,分别以 datasources
和 deleteDatasources
为键,其值本身是表示单个数据源规范的字典列表。有关更多详细信息和支持的数据源列表,请参见这里。
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