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

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つだけが作成されます。別の特殊なタイプが定義されている場合は、異なる2つのセットが作成されます。1つは単純なメトリック(root.branch.leaf)用、もう1つはタグ付けされたメトリック(root.branch.leaf;tag1=value1)用です。 デフォルトルールは両方のセットに終了します。 有効な値:
    • all(デフォルト) - ルールのタイプが省略されたときに使用される普遍的なルール。
    • 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などの追加ツールを使用します。