跳转到主要内容

文档 v2.7.0 版本已不再积极维护,你当前浏览的是一份归档快照。 最新文档请参阅 最新版本

使用 PostgreSQL 作为 Grafana 后端数据库

使用 Pigsty v2.7 管理的 PostgreSQL 数据库替代 Grafana 默认的 SQLite 元数据存储。

Grafana 默认使用 SQLite 存储元数据。Pigsty v2.7 可以为 Grafana 置备 PostgreSQL 用户与数据库,随后再手工将 Grafana 指向该数据库。

v2.7 范围

grafana_databasegrafana_pgurl 参数在 v2.7.0 中已经废弃。该版本的 grafana.ini.j2 不会管理 PostgreSQL 后端连接串,因此重新执行 grafana_config 任务可能 覆盖手工修改;请将此变更纳入您自己的配置管理。

置备数据库

在 PGSQL 集群定义中加入用户与数据库:

pg_users:
  - { name: dbuser_grafana, password: DBUser.Grafana, pgbouncer: true, roles: [dbrole_admin] }
pg_databases:
  - { name: grafana, owner: dbuser_grafana, revokeconn: true }

对于现有 pg-meta 集群,使用 v2.7 自带脚本创建:

bin/pgsql-user pg-meta dbuser_grafana
bin/pgsql-db   pg-meta grafana
psql postgres://dbuser_grafana:DBUser.Grafana@meta:5436/grafana -c \
  'CREATE TABLE t(); DROP TABLE t;'

如果要新建专用集群,请在清单中定义同样的对象,然后执行:

bin/pgsql-add pg-grafana

这些命令分别对应 pgsql-user.ymlpgsql-db.ymlpgsql.yml

配置 Grafana

切换后端前应先备份原有 Grafana 元数据。随后修改 /etc/grafana/grafana.ini[database] 段:

[database]
type = postgres
url = postgres://dbuser_grafana:DBUser.Grafana@meta:5436/grafana
ssl_mode = disable

确认连接可用后重启 Grafana:

systemctl restart grafana-server

Grafana 启动时会自行执行元数据迁移。指向一个新的空数据库并不会自动 复制原 SQLite 数据库中的面板与数据源。

恢复面板与数据源

Pigsty v2.7 将面板定义与加载脚本放在 files/grafana

cd ~/pigsty/files/grafana
./grafana.py init

如果没有使用默认 Grafana 凭据,可通过 GRAFANA_ENDPOINTGRAFANA_USERNAMEGRAFANA_PASSWORD 环境变量传入。

使用 v2.7 任务,将 pg_databases 中声明的数据库注册为 Grafana PostgreSQL 数据源:

./pgsql.yml -t register_grafana

该命令调用 roles/pgsql/tasks/register_grafana.yml, 默认使用监控用户;只有数据库将 register_datasource 显式设为 false 时才会跳过注册。