Grafanaマイグレーション完全ガイド

この記事は「ウィルゲート Advent Calendar 2024」の 10 日目の記事です。 adventar.org

インフラユニット所属の野中です。

CentOS7のサポート終了したことで、CentOS7で稼働していた古いバージョンのGrafanaをマイグレーションすることになりました。

本記事では、Grafanaを新しい環境へ安全かつ効率的にマイグレーションする方法を詳しく解説します。

既存のGrafana環境を誰も管理しておらず秘伝のタレになっていたり、Grafanaの他に様々なツールを動作させていることで移行が難しくなっている人に特に読んで頂きたいです。

移行前と移行後の簡易比較

移行前 移行後
サーバーOS CentOS 7 Amazon Linux 2023
DB SQLite MySQL
Grafanaのバージョン 7 11

構成図

Grafanaマイグレーションの手順

1. 既存DBからSQLを抽出

取得したdumpを作業用のサーバーに置いてください。

sqlite3 grafana.db .dump > dump.sql

※Grafanaを稼働させているサーバー上で移行の作業をしても良いですが、作業用のサーバーがあればそちらで作業した方が負荷的におすすめです。

2. 新環境構築

2-1. ディレクトリ作成

今回の構成であれば、最低限以下の階層でディレクトリを作成します。 ※Grafanaのデータを保存する先をsqliteにする場合、grafana.dbを保持するdataディレクトリが必要です。

.
├── docker-compose.yml
└── grafana
    ├── conf
    │   ├── grafana.env
    │   ├── grafana.ini

2-2. docker-compose.yml

docker-compose.ymlに設定を記載します。

version: "3"

networks:
  docker:

services:
  grafana:
    image: grafana/grafana:11.1.0-ubuntu
    ports:
      - "3000:3000"
    volumes:
      - /docker/grafana/data:/var/lib/grafana
      - /docker/grafana/conf:/etc/grafana
    env_file:
      - /docker/grafana/conf/grafana.env
    networks:
      - docker
    restart: always

2-3. grafana/conf/grafana.envを設定

grafana.envを設定します。

[server]
GF_SERVER_DOMAIN=localhost
GF_SERVER_HTTP_PORT=3000
GF_SERVER_PROTOCOL=http

2-4. grafana/conf/grafana.iniを設定

grafana.iniを設定します。

[server]
root_url = http://(任意のFQDN)

[database]
type = mysql
host = (接続先のurl):3306
name = (DB名)
user = (ユーザ名)
password = (任意のパスワード)

2-5. dockerを起動

dockerを起動したら、環境構築は完了です。

docker-compose up -d

3. DBをマイグレーション

3-1. pythonスクリプトを用意

以下からSQLiteをMySQLに移行するスクリプトを取得します。 http://www.redmine.org/attachments/download/6239/sqlite3-to-mysql.py

※python3を使用している場合はprint文だけ書き換えてください。

3-2. SQLiteからMySQLにコンバート

スクリプトを使用してSQLiteから抽出したSQLをMySQLに流せるようコンバートします。

cat dump.sql | python3 sqlite3-to-mysql.py > grafana-mysql.sql

3-3. MySQLにSQLを流し込む

SQLを流し込みます。

$ mysql -h (ホスト名) -u (ユーザー名) -p
> source /path/grafana-mysql.sql;

4. 動作確認

一般的には以下を確認しておくと良いと思います。

  • すべてのダッシュボードやパネルが正しく表示されるか
  • データソースが正常に接続されているか
  • ユーザー設定やアラート設定が維持されているか

まとめ

他にも色々な手法を試しましたが、DBのコンバートで負荷が増えたり、一度Grafanaのデーモンを再起動したりする必要がある手順がありました。 本記事で紹介している手順だと既存の環境に影響を出さないままマイグレーションが可能なので、例えば既存の環境の中身がブラックボックスになっている場合でも移行の検証が可能です。 執筆時点ではGrafanaのマイグレーションをしている記事はあまり多くないので、少しでも参考になると幸いです。

「ウィルゲート Advent Calendar 2024(https://adventar.org/calendars/10272)」、翌日は田島さんによる「新規プロダクトの開発プロセス変遷を紹介します」です。 お楽しみに!