メインコンテンツまでスキップ
メインコンテンツまでスキップ

GraphiteMergeTree

このエンジンは、Graphiteデータのスリム化と集約/平均化(ロールアップ)を目的に設計されています。ClickHouseをGraphiteのデータストアとして使用したい開発者に役立つかもしれません。

ロールアップが不要な場合は、任意のClickHouseテーブルエンジンを使用してGraphiteデータを格納できますが、ロールアップが必要な場合はGraphiteMergeTreeを使用してください。このエンジンは、ストレージのボリュームを削減し、Graphiteからのクエリの効率を向上させます。

このエンジンは、MergeTreeからプロパティを継承しています。

テーブルの作成

CREATE TABLEクエリの詳細な説明を参照してください。

Graphiteデータのテーブルは、以下のデータを保存するために次のカラムを持つ必要があります。

  • メトリック名(Graphiteセンサー)。データ型:String

  • メトリックを測定する時刻。データ型:DateTime

  • メトリックの値。データ型:Float64

  • メトリックのバージョン。データ型:任意の数値(ClickHouseは、バージョンが同じ場合は最新の行または最後に書き込まれた行を保存します。他の行はデータパーツのマージ中に削除されます)。

これらのカラムの名前は、ロールアップ設定で設定する必要があります。

GraphiteMergeTreeパラメーター

  • config_section — ロールアップのルールが設定されている設定ファイルのセクション名。

クエリ句

GraphiteMergeTreeテーブルを作成する場合、MergeTreeテーブルを作成するときと同じが必要です。

テーブル作成のための非推奨方法
注記

新しいプロジェクトでこの方法を使用しないでください。可能であれば、古いプロジェクトを上記で説明された方法に切り替えてください。

config_sectionを除くすべてのパラメーターは、MergeTreeと同じ意味を持ちます。

  • config_section — ロールアップのルールが設定されている設定ファイルのセクション名。

ロールアップ設定

ロールアップの設定は、サーバー設定のgraphite_rollupパラメーターによって定義されます。パラメーターの名前は任意です。複数の設定を作成し、異なるテーブルで使用できます。

ロールアップ設定の構造:

required-columns patterns

必須カラム

path_column_name

path_column_name — メトリック名(Graphiteセンサー)を格納するカラムの名前。デフォルト値: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. functionまたはretentionのないパターン。
  2. functionretentionの両方を持つパターン。
  3. パターンdefault

行を処理する際、ClickHouseはpatternセクション内のルールを確認します。各patterndefaultを含む)セクションは、集約のためのfunctionパラメーター、retentionパラメーターの両方を含むことができます。メトリック名がregexpに一致する場合、そのpatternセクション(またはセクション)のルールが適用されます。そうでない場合は、defaultセクションのルールが使用されます。

patternおよびdefaultセクションのフィールド:

  • rule_type - ルールのタイプ。特定のメトリックのみに適用されます。エンジンは、通常メトリックとタグ付きメトリックを区別するために使用します。オプションのパラメーター。デフォルト値:all。 パフォーマンスが重要でない場合や、単一のメトリックタイプのみが使用される場合(例:通常メトリック)には不要です。デフォルトでは、1種類のルールセットのみが作成されます。そうでない場合、特別なタイプのいずれかが定義されている場合、通常メトリック(root.branch.leaf)用とタグ付きメトリック(root.branch.leaf;tag1=value1)の2つの異なるセットが作成されます。 デフォルトルールは、両方のセットに含まれます。 有効な値:
    • all(デフォルト) - rule_typeが省略された場合に使用される汎用的なルール。
    • plain - 通常メトリック用のルール。フィールドregexpは正規表現として処理されます。
    • tagged - タグ付きメトリック用のルール(メトリックはsomeName?tag1=value1&tag2=value2&tag3=value3形式でDBに格納されます)。正規表現はタグ名でソートされる必要があり、最初のタグは存在する場合は__name__である必要があります。フィールドregexpは正規表現として処理されます。
    • tag_list - タグ付きメトリック用のルール、Graphite形式でのメトリック記述を容易にする単純なDSL someName;tag1=value1;tag2=value2someName、またはtag1=value1;tag2=value2。フィールドregexptaggedルールに変換されます。タグ名によるソートは不要で、自動的に行われます。タグの値(名前ではない)は正規表現として設定できます(例:env=(dev|staging))。
  • regexp – メトリック名のパターン(正規表現またはDSL)。
  • age – データの最小年齢(秒単位)。
  • precision– データの年齢を秒単位でどれだけ正確に定義するか。86400(1日の秒数)の約数であるべきです。
  • function[age, age + precision]の範囲内にあるデータに適用する集約関数の名前。受け入れられる関数:min / max / any / avg。平均は、平均の平均と同様におおよそ計算されます。

ルールタイプなしの設定例

ルールタイプありの設定例

注記

データのロールアップはマージ中に行われます。通常、古いパーティションに対してはマージが開始されないため、ロールアップのためにはoptimizeを使用してスケジュール外のマージをトリガーする必要があります。また、graphite-ch-optimizerなどの追加ツールを使用することもできます。