はじめに
突然ですが、皆さんはGrafanaダッシュボードでプリセットされているタイムレンジ(クイックタイムレンジ)は、絶妙にかゆいところに手が届かないと思うことはないでしょうか。1か月間(30日間)の次は2か月間で表示したいけれど、実際にはその次の選択肢は3か月間(90日間)など……。
これまで、Grafanaのダッシュボードでグラフの表示期間を指定するには、前述したクイックタイムレンジの選択肢の中から選ぶか手入力で指定する必要がありました。手入力ならば任意の相対的な時間指定も可能ですが、やはりワンクリックで希望通りの時間範囲のダッシュボードを表示したいですよね。
そんな中、2025年7月にリリースされたGrafana v12.1では、ダッシュボードのクイックタイムレンジをサーバー側で設定可能にする機能が追加されました!
ちなみに、毎回GrafanaのWhat's Newをチェックしているわけではなく、今回たまたま情報が流れてきて知ったところです。
些細な機能追加ですが、地味に便利ですので設定方法などを記事にして整理します(実は、リリースから半年以上たっているので、そこまで新しい情報でもありません……)。
ぜひ本記事を読まれている皆さんも自分好みのタイムレンジを設定してみてください!
Grafana v12.1の新機能
個別の新機能が本記事の本題ではありませんのでさらっと流しますが、2025年7月にリリースされたGrafana v12.1では、以下のような新機能が追加されました。マイナーバージョンアップとはいえ、より便利になっていますね。
-
データソース
- LogicMonitor Enterpriseデータソースを追加
- BigQueryでサービスアカウントの代理実行に対応
- Grafana Advisor(Grafanaインスタンスの状態を自動診断する機能)を追加
-
アラート
- アラートルール一覧ページを更新
- Grafana AlertingにActive time intervalsを追加
- Prometheus YAMLからGMAへアラートルールをインポート可能に
-
ダッシュボード/可視化
- Trendline変換を追加(データの傾向分析が可能)
- Visualization Actionsでカスタム変数を利用可能に
- ダッシュボードのクイックタイムレンジをサーバー側で設定可能に
- カスタム通貨フォーマットを強化(正確な金融値表示に対応)
-
認証・認可
- Entra Workload Identityに対応
詳細は公式のリリースをご確認ください。
この中でも「ダッシュボードのクイックタイムレンジをサーバー側で設定可能に」というのが、今回取り扱う、地味に便利になった機能です!
Grafana server administrators can now define custom time range presets for the time picker on dashboards — perfect for teams that routinely analyze specific, context-driven time windows.
出典:https://grafana.com/docs/grafana/latest/whatsnew/whats-new-in-v12-1/#server-configurable-quick-time-ranges-for-dashboards
当該機能が統合されたプルリクエストはこちらです。
設定方法
それでは、早速設定してみましょう。実際に検証で使用する環境は、セルフホストのGrafana v12.3.1です。
設定ファイルの記載方法
Grafanaのクイックタイムレンジは、Grafanaの設定ファイルであるgrafana.iniに、以下のように[time_picker] quick_rangesの設定を記載することで、カスタムのレンジを追加できます。
[time_picker]
quick_ranges = """[
{"from":"now-12h","to":"now","display":"直近12時間"},
{"from":"now-24h","to":"now","display":"直近24時間"},
{"from":"now-30d","to":"now","display":"直近30日間"},
{"from":"now-60d","to":"now","display":"直近60日間"},
{"from":"now/w","to":"now/w","display":"今週"},
{"from":"now-1w/w","to":"now-1w/w","display":"先月"}
]"""
設定値は三重引用符(""")で囲まれた中にJSONのリスト形式で記述します。1つのレンジにつき、起点時刻を示すfrom、終点時刻を示すto、表示名を示すdisplayをそれぞれ指定することで、自分好みの時間範囲と表示名を持ったクイックタイムレンジを追加できます。
追加と書きましたが、厳密には書き換えです。ここで定義したものだけが、クイックタイムレンジとして表示されるようになります。
設定項目のドキュメントはこちら。
相対時間のフォーマット
起点時刻と終点時刻を指定する上で、相対時間の指定方法が少しわかりづらいので整理しておきます。相対時間の指定方法は、クイックタイムレンジを設定する上で非常に重要なポイントになりますので、理解しておきたいところです。
ポイントは以下の通りです。
- 現在時刻は、
nowで表現 - 対応している時間単位は、
s(秒)、m(分)、h(時)、d(日)、w(週)、M(月)、Q(四半期)、y(年) - 上記に加えて会計期間として、
fQ(会計四半期)、fy(会計年度)にも対応 -
-7dというように、-(過去)、+(未来)の記号、数字、時間単位を用いて時間の加減算が可能 -
/<時間単位>は、その時間単位で丸めた値を示す
/は少しわかりづらいですが、例えば2026年3月にnow/Mをfromで指定すれば3月1日、toで指定すれば3月31日を意味します。+については、メトリクスなどの過去の値の分析にGrafanaを使用する場合は使う機会がなさそうですが、将来予測のダッシュボードではこの先○日間などの分析に活躍しそうです。
会計年度はダッシュボードごとにユーザーが任意の月を指定できます。会計年度にも対応しているのは、Grafanaが財務会計でも利用されることを想定しているともいえそうですね。
これだけでは、実際にどう設定すべきかイメージがわかないと思いますので、以下の前提で設定した場合の例をいろいろ示しておきます。
注目すべきは、/のありなしによる、例えば「今日」と「今日ここまで」の区別です。
前提
- 現在時刻:2026年3月9日(月) 15時
- 週の始まり:日曜日(当週では2026年3月8日)
- 会計年度の始まり:4月
| 相対時間 | From | To | 実際の時間例 |
|---|---|---|---|
| 直近5分 (Last 5 minutes) |
now-5m |
now |
2026-03-09 14:55 ~ 2026-03-09 15:00 |
| 今日 (Today) |
now/d |
now/d |
2026-03-09 00:00 ~ 2026-03-10 00:00 |
| 今日ここまで (Today so far) |
now/d |
now |
2026-03-09 00:00 ~ 2026-03-09 15:00 |
| 昨日 (Yesterday) |
now-1d/d |
now-1d/d |
2026-03-08 00:00 ~ 2026-03-09 00:00 |
| 直近7日 (Last 7 days) |
now-7d |
now |
2026-03-02 15:00 ~ 2026-03-09 15:00 |
| 今週ここまで (This week so far) |
now/w |
now |
2026-03-08 00:00 ~ 2026-03-09 15:00 |
| 先週頭〜現在 (Last week to now) |
now-1w/w |
now |
2026-03-01 00:00 ~ 2026-03-09 15:00 |
| 今月 (This month) |
now/M |
now/M |
2026-03-01 00:00 ~ 2026-04-01 00:00 |
| 今年ここまで (This year so far) |
now/y |
now |
2026-01-01 00:00 ~ 2026-03-09 15:00 |
| 前会計年度 (Previous fiscal year) |
now-1y/fy |
now-1y/fy |
2024-04-01 00:00 ~ 2025-04-01 00:00 |
このほか、ドキュメントにもフォーマットの詳細が書かれていますので、ご確認ください。
設定前後の比較
設定による変化は想像がつきますが、比べてみましょう。
今回は以下のようにクイックタイムレンジを設定しました。デフォルトのものに、直近14日間、直近60日間の2つを足したものです。また表示名を日本語化してみました。
[time_picker]
quick_ranges = """[
{ "from": "now-5m", "to": "now", "display": "直近 5分間" },
{ "from": "now-15m", "to": "now", "display": "直近 15分間" },
{ "from": "now-30m", "to": "now", "display": "直近 30分間" },
{ "from": "now-1h", "to": "now", "display": "直近 1時間" },
{ "from": "now-3h", "to": "now", "display": "直近 3時間" },
{ "from": "now-6h", "to": "now", "display": "直近 6時間" },
{ "from": "now-12h", "to": "now", "display": "直近 12時間" },
{ "from": "now-24h", "to": "now", "display": "直近 24時間" },
{ "from": "now-2d", "to": "now", "display": "直近 2日間" },
{ "from": "now-7d", "to": "now", "display": "直近 7日間" },
{ "from": "now-14d", "to": "now", "display": "直近 14日間" },
{ "from": "now-30d", "to": "now", "display": "直近 30日間" },
{ "from": "now-60d", "to": "now", "display": "直近 60日間" },
{ "from": "now-90d", "to": "now", "display": "直近 90日間" },
{ "from": "now-6M", "to": "now", "display": "直近 6か月間" },
{ "from": "now-1y", "to": "now", "display": "直近 1年間" },
{ "from": "now-2y", "to": "now", "display": "直近 2年間" },
{ "from": "now-5y", "to": "now", "display": "直近 5年間" },
{ "from": "now-7d/d", "to": "now-7d/d", "display": "先週の今日" },
{ "from": "now-2d/d", "to": "now-2d/d", "display": "一昨日" },
{ "from": "now-1d/d", "to": "now-1d/d", "display": "昨日" },
{ "from": "now/d", "to": "now/d", "display": "今日" },
{ "from": "now/d", "to": "now", "display": "今日(現在まで)" },
{ "from": "now-1w/w", "to": "now-1w/w", "display": "先週" },
{ "from": "now/w", "to": "now/w", "display": "今週" },
{ "from": "now/w", "to": "now", "display": "今週(現在まで)" },
{ "from": "now-1M/M", "to": "now-1M/M", "display": "先月" },
{ "from": "now/M", "to": "now/M", "display": "今月" },
{ "from": "now/M", "to": "now", "display": "今月(現在まで)" },
{ "from": "now-1Q/fQ", "to": "now-1Q/fQ", "display": "前四半期" },
{ "from": "now/fQ", "to": "now", "display": "今四半期(現在まで)" },
{ "from": "now/fQ", "to": "now/fQ", "display": "今四半期" },
{ "from": "now-1y/y", "to": "now-1y/y", "display": "昨年" },
{ "from": "now/y", "to": "now/y", "display": "今年" },
{ "from": "now/y", "to": "now", "display": "今年(現在まで)" },
{ "from": "now-1y/fy", "to": "now-1y/fy", "display": "昨年度" },
{ "from": "now/fy", "to": "now", "display": "今年度(現在まで)" },
{ "from": "now/fy", "to": "now/fy", "display": "今年度" }
]"""
設定前(デフォルト)がこちら。
設定後がこちら。意図した通り、「直近 14日間」、「直近 60日間」の表示が増えています!
ちなみに、最近のGrafanaは言語を日本語にも切り替えられるようになりましたが、displayを設定することで自力でも編集できますね。
少し遊んでみる
表示名を指定できるということは、少し遊んでみたくなりませんか。
そうです。HTMLタグを仕込んでみてどんな表示になるかです。
以下のように、displayに書式関連のHTMLタグを仕込んでみました。実装が甘ければHTMLタグとして機能してしまいますし、エスケープが適切に機能していれば文字列として表示されるはずです。
[time_picker]
quick_ranges = """[
{ "from": "now-5m", "to": "now", "display": "<i>斜体です</i>" },
{ "from": "now-5m", "to": "now", "display": "<u>下線です</u>" },
{ "from": "now-5m", "to": "now", "display": "<s>取り消し線です</s>" }
]"""
気になる結果はこちら。
書式設定が効かなくて残念?ですが、見事にHTMLタグが文字列として表示されており、エスケープがしっかりと機能していることが分かりました。
サーバーから取得しているHTMLを確認すると、script要素内に含まれているクイックタイムレンジの設定値に、<や>がエスケープされた状態で保持されていることを確認できました。このデータから動的にクイックタイムレンジのリストを生成しているようですね。
"quickRanges": [{
"display": "\u003ci\u003e斜体です\u003c/i\u003e",
"from": "now-5m",
"to": "now"
},
…
運用上の注意点
設定していて少し気になった点をまとめておきます。
本当はデフォルトの置き換えではなく追加にしたい
今回はデフォルトのクイックタイムレンジに2つのカスタムのレンジを追加しました。あくまで、デフォルトのものはそのままで、新たに2つ追加したかっただけなのですが、設定には残したいデフォルトのものと追加分のすべてを記載する必要があるのが、少し気になりました。
今あるレンジに1つだけ足したい場合でもすべて設定に記述する必要があるのは結構面倒ですね。ユーザー定義のレンジとして別に追加できるようになると便利かもしれません。
ちなみに、デフォルトの設定はどこに書いてあるのかソースコードを探してみると、こちらのファイルに書いてあるのを見つけました。
過去のコミットの方がテンプレとするには見やすいかもしれません。
サーバー全体に設定が反映される
また、ダッシュボードごとにカスタムのレンジを管理したくなる気もするのですが、Grafanaサーバー全体としての設定項目であるため、あるダッシュボードでは使うけれども他のダッシュボードでは使わないレンジが表示されてしまう点も留意していた方がよさそうです。
執筆時点で確認した限り、ダッシュボード単位で設定する手段はありませんでした。
おわりに
今回はGrafanaのクイックタイムレンジをサーバー側で設定可能にする機能について、設定方法や相対時間のフォーマットなどを整理してみました。また、実際に設定してみて、確かにカスタマイズされたクイックタイムレンジが表示されることを確認しました。
些細な機能追加ではありますが、地味に便利になりましたね。ぜひ皆さんも自分好みのクイックタイムレンジを設定してみてください!


