GraphiteMergeTree テーブルエンジン
このエンジンは、Graphite データの間引きおよび集約・平均化 (ロールアップ) のために設計されています。Graphite のデータストアとして ClickHouse を使用したい開発者に役立ちます。
ロールアップが不要な場合は任意の 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_name — time_column_name で指定された時刻におけるメトリック値を保存するカラム名。デフォルト値: Value。
version_column_name
version_column_name — メトリックのバージョンを保存するカラム名。デフォルト値: Timestamp。
パターン
patterns セクションの構造:
パターンは次の厳密な順序で並べる必要があります:
functionとretentionのいずれも指定しないパターン。functionとretentionの両方を指定するパターン。- パターン
default。
行を処理する際、ClickHouse は pattern セクション内のルールをチェックします。各 pattern (default を含む) セクションには、集約用の function パラメータ、retention パラメータ、またはその両方を含めることができます。メトリック名が regexp にマッチする場合、その pattern セクション (または複数セクション) のルールが適用され、それ以外の場合は default セクションのルールが適用されます。
pattern および default セクションのフィールド:
rule_type- ルールの種別。特定の種類のメトリックにのみ適用されます。エンジンはこれを使用してプレーンメトリックとタグ付きメトリックを分離します。省略可能なパラメータです。デフォルト値:all。 パフォーマンスが重要でない場合、またはプレーンメトリックなど 1 種類のメトリックのみを使用する場合は不要です。デフォルトでは 1 種類のルールセットのみが作成されます。そうでなく、いずれかの特別なタイプが定義されている場合は、2 つの異なるセットが作成されます。1 つはプレーンメトリック (root.branch.leaf) 用、もう 1 つはタグ付きメトリック (root.branch.leaf;tag1=value1) 用です。 デフォルトルールは両方のセットに含まれます。 有効な値:all(デフォルト) -rule_typeが省略された場合に使用される汎用ルール。plain- プレーンメトリック用のルール。フィールドregexpは正規表現として処理されます。tagged- タグ付きメトリック用のルール (メトリックは DB にsomeName?tag1=value1&tag2=value2&tag3=value3形式で保存されます) 。正規表現はタグ名でソートされている必要があり、存在する場合は最初のタグが__name__でなければなりません。フィールドregexpは正規表現として処理されます。tag_list- タグ付きメトリック用のルールで、graphite 形式someName;tag1=value1;tag2=value2、someName、またはtag1=value1;tag2=value2によるメトリック記述を簡素化するための DSL です。フィールドregexpはtaggedルールに変換されます。タグ名でのソートは不要で、自動的に行われます。タグの値 (名前ではなく) は正規表現として指定できます (例:env=(dev|staging)) 。
regexp– メトリック名に対するパターン (正規表現または DSL) 。age– データの最小経過時間 (秒) 。precision– データの経過時間を秒単位でどの程度の精度で定義するか。86400 (1 日の秒数) を割り切れる値である必要があります。function– 経過時間が[age, age + precision]の範囲に入るデータに適用する集約関数の名前。使用可能な関数: min / max / any / avg。平均は、平均値同士の平均を取るのと同様に、厳密ではない平均として計算されます。
ルールタイプなしの設定例
ルールタイプ別の設定例
データのロールアップはマージ処理の際に実行されます。通常、古いパーティションではマージが開始されないため、ロールアップを行うには optimize を使用して予定外のマージをトリガーする必要があります。あるいは、graphite-ch-optimizer などの追加ツールを使用します。