ืฉืืื ืืืืื! ืื
ืืคื ื ืฉืืกืคืจ ืืื ืืื ืืจืื ื ืืช ืืืขืืจ ืืืืกืื ืืืืื ื-Graphite+Whisper ื-Graphite+ClickHouse, ืืจืฆืื ื ืืชืช ืืืืข ืขื ืืกืืืืช ืืงืืืช ืืืืื ืืื ืืขื ืืืกืจืื ืืช ืฉื Whisper ืฉืืืชื ืืืื ื ืชืงืืคื ืืจืืื.
ืืขืืืช ืืจืคืื+ืืืืฉื
1. ืขืืืก ืืืื ืขื ืชืช-ืืขืจืืช ืืืืกืง
ืืืื ืืืขืืจ, ื-1.5 ืืืืืื ืืืืื ืืืืขื ืืืื ื ืืืงื. ืขื ืืจืืื ืืื, ื ืืฆืื ืืืืกืง ืืฉืจืชืื ืืื ~30%. ืืืืคื ืืืื, ืื ืืื ืื ืืงืืื - ืืื ืขืื ืืืฆืืืืช, ื ืืชื ืืืจ, ืงืจื ืืืืืจืืช... ืขื ืฉืืื ืืฆืืืชื ืืคืืชืื ืืืฆืื ืคืืฆ'ืจ ืืืฉ ืืืชืืื ืืฉืืื ืื ื 10 ืืืืืื ืืืืื ืืืงื. ืื ืืืื ืฉืื ืชืช-ืืขืจืืช ืืืืกืง ืืชืืืงื, ืืจืืื ื ื ืืฆืื ืฉื 100%. ืืืขืื ื ืคืชืจื ืืืืืจืืช, ืื ื ืฉืืจื ืฉืืจืืช.
2. ืืืกืจ ืฉืืคืื ืืขืงืืืืช
ืกืืืจ ืืื ืื ืฉืืื ืื ืื ืฉืืฉืชืืฉ/ืืฉืชืืฉ ื-Graphite+Whisper, ืฉืคืื ื ืืช ืืืชื ืืจื ืฉื ืืืืื ืขื ืืกืคืจ ืฉืจืชื ืืจืคืื ืื ืืื ืืช ืขื ืื ืช ืืืฆืืจ ืกืืืื ืืช ืืชืงืืืช. ืืื ืืื ืขื ืื ืืขืืืช ืืืืืืืช - ืขื ืืจืืข ืฉืื ืืื ืืฉืจืชืื ืงืจืก ืืกืืื ืืืฉืื. ืืคืขืืื ืืฆืืื ื ืืงืืื ืฉืจืช ืฉื ืคื ืืกืคืืง ืืืจ, ื-carbon-c-relay ืืฆืืื ืืืขืื ืืชืืื ืืืืื ืืืืืืื ืฉืื, ืืื ืืคืขืืื ืื. ืืื ืืื ืืืจ ืืืืืื, ืฉืืืืื ื ื-rsync. ืืืืื ืืื ืืจืื ืืืื. ืืืกื ืืืฆืื ืืืืื ืืื ืฉืื ืงืจื ืืขืชืื ืจืืืงืืช ืืืื. ืืื ืื ืืงืื ื ืืื ืคืขื ืงืืืฆื ืืงืจืืืช ืฉื ืืืืื ืืืฉืืืื ื ืืืชื ืขื ืืืจืื ืืืืชื ืกืื ืืฆืืชืื ืฉืื ืื ืฉื ืืืฉืืื. ืื-5% ืืืืงืจืื, ืืื ืขืจืืื ืืื ืฉืื ืื, ืื ืฉืื ืืืื ื ืืืื ืืจืืฆืื ืืื.
3. ืืืืขืช ืจืื ืืืืื
ืืืืืื ืฉืื ื ืืืชืืื ื-Graphite ืื ืจืง ืชืฉืชืืช, ืืื ืื ืืืืื ืขืกืงืืื (ืืขืืฉืื ืื ืืืืื ื-Kubernetes), ืื ืคืขื ืื ื ืืงืืืื ืืฆื ืื ืืืื ืืืื ืจืง ืืื ืขืจืืื, ืืงืืืฅ ื-wsp ื ืืฆืจ ืชืื ืืชืืฉืืืช ืืื ืืฉืืืจื ืชืงืืคื, ืืชืืคืก ืืืืช ืืงืื ืฉืืืงืฆื ืืจืืฉ, ืฉืขืืืจื ื ืืื ~2MB. ืืืขืื ืืืืืจื ืขืื ืืืชืจ ืืื ืฉืืจืื ืงืืฆืื ืืืืื ืืืคืืขืื ืขื ืืืื, ืืืืฉืจ ืืื ืื ืขืืืื ืืืืืช, ืงืจืืืช ื ืงืืืืช ืจืืงืืช ืืืืืช ืืื ืืืฉืืืื ืจืืื.
ืืจืฆืื ื ืืฆืืื ืืื ืื ื ืืชื ืืืชืืืื ืขื ืืืขืืืช ืืืชืืืจืืช ืืขืื ืืฉืืืืช ืฉืื ืืช ืืืืจืืืช ืืขืืืืช ืฉืื ืืช, ืื ืืื ืฉืืชืืืืื ืืงืื ืืืชืจ ื ืชืื ืื, ืื ืื ืืืืืจืืช.
ืขื ืื ืืืืืจ ืืขืื (ืืืชืืฉื ืืงืืื
ืืจืคืื+ืงืืืงืืืืก. ืฆืืคืืืช
ืืืืจ ืฉืืืงืจืชื ืืืื ืืคืืฉืื ืฉื ืืืืจ'ื ืืืื ืืงืก, ืืืืจ ืฉืงืจืืชื
ืืจืฆืื ื ืืงืื ืืช ืืืืจืื ืืืืื:
- ืืืคืืืช ืืช ื ืืฆืื ืชืช-ืืขืจืืช ืืืืกืง ื-30% ื-5%;
- ืืืคืืืช ืืช ืืืืช ืืฉืื ืืชืคืืกื ื-1TB ื-100GB;
- ืืืืืช ืืกืืื ืืงืื 100 ืืืืืื ืืืืื ืืืงื ืืชืื ืืฉืจืช;
- ืฉืืคืื ื ืชืื ืื ืืกืืืื ืืช ืชืงืืืช ืืืืฅ ืืงืืคืกื;
- ืื ืชืฉื ืขื ืืคืจืืืงื ืืื ืืืฉื ืฉื ื ืืชืขืฉื ืืช ืืืขืืจ ืืชืื ืืกืืจืช ืืื ืกืืืจื;
- ืืชื ืืื ืืื ืืฉืืชื.
ืื ืฉืืคืชื ื, ื ืืื?
ืืจืคืื+ืงืืืงืืืืก. ืจืืืืื
ืืื ืืงืื ื ืชืื ืื ืืืืฆืขืืช ืคืจืืืืงืื Graphite ืืืืืจ ืืื ืืืงืืื ืืืชื ื- ClickHouse, ืืืจืชื
ืืืืืืจื ืืืืจืื ื ืฉื ClickHouse, ืืจืกื ืืฆืืื 1.1.54253, ื ืืืจื ืืืกื ืื ืชืื ืื ืืืืกืื ืกืืจืืช ืืื. ืืื ืืขืืืช ืืขืืืื ืขื ืื: ืืจ ืฉื ืฉืืืืืช ื ืฉืคื ืืชืื ืืืืื ืื, ืืื ืืื ืืจืืจ ืืืืจื ืื ืืขืฉืืช ืืืชื. ืืืืื ืขื
ื ืืืจ ืืงืจืื ื ืชืื ืื ื-ClickHouse
ืืจืคืื+ืงืืืงืืืืก. ืืื ื ืืฉืืืื
"ืืจืคืื" ืืื ืืกื ื ืชืื ืื ืฉืืฆืจื ื ืื ืืืืจ ืืืืืืช.
"graphite.metrics" - ืืืื ืขื ืื ืืข ReplicatedReplacingMergeTree (ืืฉืืืคื
CREATE TABLE graphite.metrics ( Date Date, Level UInt32, Path String, Deleted UInt8, Version UInt32 ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/replicator/graphite.metrics', โr1โ, Date, (Level, Path), 8192, Version);
"graphite.data" - ืืืื ืขื ืื ืืข ReplicatedGraphiteMergeTree (ืืฉืืืคื
CREATE TABLE graphite.data ( Path String, Value Float64, Time UInt32, Date Date, Timestamp UInt32 ) ENGINE = ReplicatedGraphiteMergeTree('/clickhouse/tables/replicator/graphite.data', 'r1', Date, (Path, Time), 8192, 'graphite_rollup')
"graphite.date_metrics" ืืื ืืืื ืขื ืืืืื ืืืชื ื ืขื ืื ืืข ReplicatedReplacingMergeTree. ืืืื ืื ืืชืขืืช ืืช ืืฉืืืช ืฉื ืื ืืืืืื ืฉื ืชืงืื ืืืืื ืืืื. ืืกืืืืช ืืืฆืืจืชื ืืชืืืจืืช ืืกืขืืฃ
CREATE MATERIALIZED VIEW graphite.date_metrics ( Path String, Level UInt32, Date Date) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/replicator/graphite.date_metrics', 'r1', Date, (Level, Path, Date), 8192) AS SELECT toUInt32(length(splitByChar('.', Path))) AS Level, Date, Path FROM graphite.data
"graphite.data_stat" - ืืืื ืฉืืืืื ืืืชืื ืืชื ืื, ืขื ืื ืืข ReplicatedAggregatingMergeTree (ืืฉืืืคื
CREATE MATERIALIZED VIEW graphite.data_stat ( Date Date, Prefix String, Timestamp UInt32, Count AggregateFunction(count)) ENGINE = ReplicatedAggregatingMergeTree('/clickhouse/tables/replicator/graphite.data_stat', 'r1', Date, (Timestamp, Prefix), 8192) AS SELECT toStartOfMonth(now()) AS Date, replaceRegexpOne(Path, '^([^.]+.[^.]+.[^.]+).*$', '1') AS Prefix, toUInt32(toStartOfMinute(toDateTime(Timestamp))) AS Timestamp, countState() AS Count FROM graphite.data GROUP BY Timestamp, Prefix
ืืจืคืื+ืงืืืงืืืืก. ืืืืืจืืช ืืื ืืจืืงืฆืื ืฉื ืจืืืืื
ืืจืคืื+ืงืืืงืืืืก. ืืขืืจืช ื ืชืื ืื
ืืคื ืฉืื ื ืืืืจืื ืืืฆืืคืืืช ืืืคืจืืืงื ืืื, ืืืขืืจ ื-ClickHouse ืฆืจืื ืืืืืช ืืื ืืื ื ืืฉืืชื; ืืืชืื, ืืืื ื ืฆืจืืืื ืืืืฉืื ืืืขืืืจ ืืช ืื ืืขืจืืช ืื ืืืืจ ืฉืื ื ืืืืกืื ืืืืฉ ืืฆืืจื ืฉืงืืฃ ืืื ืืืคืฉืจ ืขืืืจ ืืืฉืชืืฉืื ืฉืื ื.
ืื ืขืฉืื ื ืืช ืื.
-
ืืื ื ืืกืฃ ื-carbon-c-relay ืืื ืืฉืืื ืืจื ื ืืกืฃ ืฉื ืืืืื ื-carbon-clickhouse ืฉื ืืื ืืฉืจืชืื ืืืฉืชืชืคืื ืืฉืืคืื ืฉื ืืืืืืช ClickHouse.
-
ืืชืื ื ืกืงืจืืคื ืงืื ื-python, ืฉืืืืฆืขืืช ืกืคืจืืืช whisper-dump, ืงืจื ืืช ืื ืงืืฆื ื-wsp ืืืืืกืื ืฉืื ื ืืฉืืื ื ืืช ืื ืชืื ืื ืืืื ื-carbon-clickhouse ืืืชืืืจ ืืขืื ื-24 ืฉืจืฉืืจืื. ืืกืคืจ ืืขืจืืื ืืืืจืืื ืืืงืืืืื ื-carbon-clickhouse ืืืืข ื-125 ืืืืืื ืืืงื, ื-ClickHouse ืืคืืื ืื ืืืืขื.
-
ืืฆืจื ื DataSource ื ืคืจื ื-Grafana ืืื ืื ืคืืช ืืืืื ืืคืื ืงืฆืืืช ืืืฉืืฉืืช ืืืจืืื ืืืืื ืื ืงืืืืื. ืืืืื ื ืจืฉืืื ืฉื ืคืื ืงืฆืืืช ืฉืืฉืชืืฉื ื ืืื, ืื ืื ืื ืืืฉืื ื-carbonapi. ืืืกืคื ื ืืช ืืคืื ืงืฆืืืช ืืืื ืืฉืืื ื ืืืกื ืฆืืืืจ ืืืืืจื carbonapi (ืชืืื ืืืืืืช ืืื).
- ืืื ืืืืืืฃ ืืช ืขืืืก ืืงืจืืื ืืืืืจืืช ืืืืืื, ืฉืื ืื ื ืืช ื ืงืืืืช ืืงืฆื ื-graphite-api (ืืืฉืง API ืขืืืจ Graphite+Whisper) ื-carbonapi.
ืืจืคืื+ืงืืืงืืืืก. ืชืืฆืืืช
-
ืืคืืชืช ื ืืฆืื ืชืช-ืืขืจืืช ืืืืกืง ื-30% ื-1%;
- ืืคืืืช ืืช ืืืืช ืืฉืื ืืชืคืืกื ื-1 TB ื-300 GB;
- ืืฉ ืื ื ืืช ืืืืืืช ืืงืื 125 ืืืืืื ืืืืื ืืืงื ืืชืื ืืฉืจืช (ืฉืืืื ืืืื ืืืืืจื);
- ืืขืืืจ ืืช ืื ืืืืืื ืืืจืืื ืืืกืื ืฉื ืฉืืืฉืื ืฉื ืืืช;
- ืฉืืคืื ื ืชืื ืื ืฉืืชืงืืื ืืกืืืื ืืช ืชืงืืืช;
- ืืชืืืฃ ืืื ืืื ืืฉืืชื;
- ืื ืืงื ืืขืจื 7 ืฉืืืขืืช ืืื ืืืฉืืื ืืื.
ืืจืคืื+ืงืืืงืืืืก. ืืขืืืช
ืืืงืจื ืฉืื ื, ืืื ืืื ืืืืืืืช. ืื ืื ืฉื ืชืงืื ื ืื ืืืืจ ืืืขืืจ.
- ClickHouse ืื ืชืืื ืงืืจื ืืืืฉ ืืืืจืืช ืชืื ืืื ืชื ืืขื; ืืคืขืืื ืฆืจืื ืืืชืื ืืืชื ืืืืฉ. ืืืืืื, ืืืงืจื ืฉื ืืชืืืืจ ืฉื ืืฉืืื ืฉืืืจ ืื ืืืืืช ืืชืฆืืจืช ClickHouse, ืื ื ืขืฉื ืื ืฉืืืืฉ ืขื ืฉื-Clickhouse-ืฉืจืช ืืืชืื ืืืืฉ.
- ืืงืฉืืช ืืืืืืช ืฉื ClickHouse ืื ืขืืจื, ืื ื-graphite-clickhouse ืืืจืืืช ืืืืืืจ ืฉืื ื ื-ClickHouse ื ืจืืืช ืื:
url = "http://localhost:8123/?max_query_size=268435456&max_ast_elements=1000000"
- ClickHouse ืืฉืืจืจืช ืืขืชืื ืงืจืืืืช ืืจืกืืืช ืืืฉืืช ืฉื ืืืืืจืืช ืืฆืืืืช; ืื ืขืฉืืืืช ืืืืื ืืคืชืขืืช: ืืืืืจ.
- ืงืื ืืืื ืจืื ืฉื ืืฆืจื ืืืืคื ืืื ืื ื-kubernetes ืฉืืืืื ืืกืคืจ ืจื ืฉื ืืืืื ืขื ืืืจื ืืืื ืงืฆืจ ืืืงืจืื. ืืื ืืจืื ื ืงืืืืช ืืืืืื ืืืื, ืืืื ืืขืืืช ืขื ืฉืื. ืืื ืืขืช ืื ืืืช ืฉืืืืชืืช, ClickHouse ืงืืื ืืกืคืจ ืขืฆืื ืฉื ืืืชื ืืืืื ืืืืืช ื'ืืืืื'. ื-90% ืืืืงืจืื ืืื ื ืชืื ืื ืขืืืื ืืขืืจ ืืืืื (24 ืฉืขืืช). ืืื ืืืื ืืืฉืงืข ืืืืคืืฉ ืืืจ ืื ืชืื ืื ืืืื ืืืืืช 'ื ืชืื ืื', ืืืกืืคื ืฉื ืืืจ ื ืชืงื ืืคืกืง ืืื. ืขื ืื ืช ืืคืชืืจ ืืขืื ืื, ืืชืืื ื ืืฉืืืจ ืขื ืชืฆืืื ื ืคืจืืช ืขื ืืืืข ืขื ืืืืื ืฉื ืชืงืื ืืื ืืืืื ืืืื. ืืคืืื, ืืขืช ืื ืืืช ืืืืืช (ืืจืคืื) ืขืืืจ ืงืื ืืืื ืจืื ืฉื ืืฆืจื ืืืืคื ืืื ืื, ืื ื ืืืฆืขืื ืฉืืืืชืืช ืจืง ืืืืชื ืืืืื ืฉื ืชืงืื ืืืืื ื ืชืื, ืืื ืืืฉื ืื ืืืื, ืื ืฉืืืืฅ ืืฉืืขืืชืืช ืืช ืื ืืืช ืืืืืืช ืขืืืื. ืขืืืจ ืืคืชืจืื ืืืชืืืจ ืืขืื, ืืกืคืชื
ืืจืคืื-ืงืืืง ืืืืก (ืืืื) , ืืืืื ืืืืขืช ืขืืืื ืขื ืืืืช date_metrics.
ืืจืคืื+ืงืืืงืืืืก. ืชืืื
ืขื ืืจืกื 1.1.0 ืืจืคืื ืืคื ืืจืฉืื
ืืจืคืื+ืงืืืงืืืืก. ืืืื ืื ืืืืืืช
ืืืชืืกืก ืขื ืืชืฉืชืืช ืฉืชืืืจื ืืขืื, ืืืืขื ื ืื ืืืคืืก ืฉื ืืืื ืื ืืืืื, ืืื ืขืืื! ืืื ืขืื ืขืืื ืืืชืื ืืืื.
ืืืจืฉื, ืืืฅ ืขื ืืืฅ ืืืขืื ืืืื ืืืืฉืจ!
ืืงืืจ: www.habr.com