Skip to main content
このエンジンは、Graphite データの間引きと集約/平均化 (ロールアップ) 向けに設計されています。ClickHouse を Graphite のデータストアとして使用したい開発者にとって有用です。 ロールアップが不要であれば、Graphite データの保存には任意の ClickHouse テーブルエンジンを使用できますが、ロールアップが必要な場合は GraphiteMergeTree を使用してください。このエンジンにより、ストレージ使用量を削減し、Graphite からのクエリ効率を向上させることができます。 このエンジンは MergeTree の特性を継承します。

テーブルの作成

詳細については、CREATE TABLEクエリの説明を参照してください。 Graphite データ用のテーブルには、次のデータに対応する以下のカラムが必要です。
  • メトリック名 (Graphite sensor) 。データ型: String
  • メトリックの計測時刻。データ型: DateTime
  • メトリックの値。データ型: Float64
  • メトリックのバージョン。データ型: 任意の数値型 (ClickHouse は、バージョンが最も高い行を保持し、バージョンが同じ場合は最後に書き込まれた行を保持します。その他の行はデータパーツのマージ時に削除されます) 。
これらのカラム名はロールアップ設定で指定する必要があります。 GraphiteMergeTree のパラメータ
  • config_section — ロールアップルールが設定されている設定ファイル内のセクション名。
クエリ句 GraphiteMergeTree テーブルを作成する際は、MergeTree テーブルを作成する場合と同じが必要です。

ロールアップ設定

ロールアップの設定は、サーバー設定の graphite_rollup パラメータで定義します。パラメータ名は任意に指定できます。複数の設定を作成して、異なるテーブルで使い分けることもできます。 ロールアップ設定の構造:
  • 必須カラム
  • パターン

必須カラム

path_column_name

path_column_name — メトリック名 (Graphite sensor) を格納するカラム名です。デフォルト値: Path

time_column_name

time_column_name — メトリックの計測時刻を格納するカラム名です。デフォルト値: Time

value_column_name

value_column_nametime_column_name で指定した時点におけるメトリックの値を格納するカラム名です。デフォルト値: Value

version_column_name

version_column_name — メトリックのバージョンを格納するカラム名です。デフォルト値: Timestamp

パターン

patterns セクションの構成:
パターンは厳密に次の順序で並べる必要があります。
  1. functionretention もないパターン。
  2. functionretention の両方を持つパターン。
  3. default パターン。
行を処理する際、ClickHouse は pattern セクション内のルールを確認します。各 pattern セクション (default を含む) には、aggregation 用の function parameter、retention parameters、またはその両方を含めることができます。メトリック名が regexp に一致した場合は pattern セクションのルール (複数可) が適用され、一致しない場合は default セクションのルールが使用されます。 pattern セクションと default セクションのフィールド:
  • rule_type - ルールの種類。特定のメトリックにのみ適用されます。engine はこれを使用して、プレーンメトリックとタグ付きメトリックを区別します。省略可能な parameter。デフォルト値: all。 パフォーマンスが重要でない場合や、プレーンメトリックのように 1 種類のメトリックしか使用しない場合は不要です。デフォルトでは、作成されるルールセットは 1 種類だけです。一方、特殊な type がいずれか定義されている場合は、2 つの異なるセットが作成されます。1 つはプレーンメトリック用 (root.branch.leaf)、もう 1 つはタグ付きメトリック用 (root.branch.leaf;tag1=value1) です。 デフォルトルールは最終的に両方のセットに含まれます。 有効な値:
    • all (デフォルト) - rule_type を省略した場合に使用される汎用ルール。
    • plain - プレーンメトリック用のルール。regexp フィールドは regular expression として処理されます。
    • tagged - タグ付きメトリック用のルール (メトリックは DB 内で someName?tag1=value1&tag2=value2&tag3=value3 のフォーマットで保存されます) 。regular expression はタグ名でソートされている必要があり、存在する場合は最初のタグが __name__ でなければなりません。regexp フィールドは regular expression として処理されます。
    • tag_list - タグ付きメトリック用のルールで、graphite フォーマットの someName;tag1=value1;tag2=value2someName、または tag1=value1;tag2=value2 のように、メトリックを簡単に記述するためのシンプルな DSL です。regexp フィールドは tagged ルールに変換されます。タグ名によるソートは不要で、自動的に行われます。タグの値 (名前ではなく) は regular expression として指定できます。たとえば env=(dev|staging) です。
  • regexp – メトリック名の pattern (regular expression または DSL) 。
  • age – データの最小経過時間 (秒) 。
  • precision– データの経過時間を秒単位でどの程度の精度で定義するか。86400 (1 日の秒数) の約数である必要があります。
  • function – age が範囲 [age, age + precision] に入るデータに適用する集約関数の名前。使用できる関数: min / max / any / avg。平均値は、平均の平均のように不正確に計算されます。

ルールタイプを使用しない設定例

ルールタイプを含む設定例

データのロールアップは、マージ時に実行されます。通常、古いパーティションではマージは開始されないため、ロールアップを行うには optimize を使用して、予定外のマージをトリガーする必要があります。あるいは、graphite-ch-optimizer などの追加ツールを使用してください。
最終更新日 2026年7月23日