ããã«ã¡ã¯ãã¿ããªïŒ 圌ã®äžã§
Graphite+Whisper ã§ã®ã¡ããªã¯ã¹ã®ä¿åãã Graphite+ClickHouse ãžã®ç§»è¡ãã©ã®ããã«èšç»ãããã説æããåã«ããã®ãããªæ±ºå®ãäžããçç±ãšãç§ãã¡ãé·ãé䜿çšããŠãã Whisper ã®æ¬ ç¹ã«ã€ããŠèª¬æããããšæããŸãã
ã°ã©ãã¡ã€ã+ãŠã£ã¹ããŒã®åé¡
1. ãã£ã¹ã¯ãµãã·ã¹ãã ã®é«è² è·
移è¡æã«ã¯ã1.5 åãããçŽ 30 äžã®ã¡ããªã¯ã¹ãå°çããŠããŸããã ãã®ãããªãããŒã§ã¯ããµãŒããŒäžã®ãã£ã¹ã¯äœ¿çšçã¯æ倧 10% ã§ããã äžè¬ã«ãããã¯ãŸã£ãã蚱容ç¯å²å ã§ããããã¹ãŠãå®å®ããŠåäœããè¿ éã«æžã蟌ãŸããè¿ éã«èªã¿åãããŸãã...éçºããŒã ã® 100 ã€ãæ°æ©èœãå ¬éããæ¯å XNUMX äžã®ã¡ããªã¯ã¹ãéä¿¡ãå§ãããŸã§ã¯ã ãã®ãšãããã£ã¹ã¯ ãµãã·ã¹ãã ã匷åããã䜿çšçã XNUMX% ã«ãªããŸããã åé¡ã¯ããã«è§£æ±ºãããŸããããæ®çç©ãæ®ããŸããã
2. ã¬ããªã±ãŒã·ã§ã³ãšäžè²«æ§ã®æ¬ åŠ
ãããããGraphite+Whisper ã䜿çšããŠãããã¹ãŠã®ãŠãŒã¶ãŒãšåæ§ã«ããã©ãŒã«ã ãã¬ã©ã³ã¹ãæ§ç¯ããããã«ãåãã¡ããªã¯ã¹ ã¹ããªãŒã ãäžåºŠã«è€æ°ã® Graphite ãµãŒããŒã«æ³šã蟌ãã ã®ã§ãããã ãããŠããµãŒããŒã® 5 ã€ãäœããã®çç±ã§ã¯ã©ãã·ã¥ãããŸã§ãããã«ã¯ç¹å¥ãªåé¡ã¯ãããŸããã§ããã å Žåã«ãã£ãŠã¯ãé害ãçºçãããµãŒããŒãããã«å埩ã§ããããcarbon-c-relay ããã£ãã·ã¥ããã¡ããªã¯ã¹ãããŒãã§ãããããããšããããŸããããããã§ãªãå ŽåããããŸããã ãããŠã¡ããªã¯ã¹ã«ç©Žããã£ãã®ã§ãrsync ã§åããŸããã æç¶ãã¯ããªãé·ãã£ãã§ãã å¯äžã®æãã¯ããã®ãããªããšãã»ãšãã©èµ·ãããªãã£ãããšã§ãã ãŸããå®æçã«ã¡ããªãã¯ã®ã©ã³ãã ãªã»ãããååŸããããããã¯ã©ã¹ã¿ãŒã®é£æ¥ããŒãäžã®åãã¿ã€ãã®ä»ã®ã¡ããªãã¯ãšæ¯èŒããŸããã çŽ XNUMX% ã®ã±ãŒã¹ã§ã¯ãããã€ãã®å€ãç°ãªã£ãŠããŸããããããã¯ããŸãæºè¶³ã§ããŸããã§ããã
3. èšçœ®é¢ç©ã倧ãã
Graphite ã§ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã ãã§ãªãããžãã¹ ã¡ããªã¯ã¹ (ãããŠçŸåšã¯ Kubernetes ã®ã¡ããªã¯ã¹ã) ãèšè¿°ããŠãããããã¡ããªã¯ã¹ã«æ°åã®å€ããå«ãŸããŠãããããã¹ãŠã®ä¿æãèæ ®ã㊠.wsp ãã¡ã€ã«ãäœæãããŠãããšããç¶æ³ãããçºçããŸããäºåã«å²ãåœãŠãããéã®ã¹ããŒã¹ãå æããŸã (ç§ãã¡ã®å Žåãæ倧 2MB ã§ãã)ã æéã®çµéãšãšãã«é¡äŒŒãããã¡ã€ã«ãå€æ°åºçŸãããããã®ãã¡ã€ã«ã«åºã¥ããŠã¬ããŒããäœæãããšãã«ç©ºã®ãã€ã³ããèªã¿åãã®ã«å€ãã®æéãšãªãœãŒã¹ãããããšããäºå®ã«ãã£ãŠãåé¡ã¯ããã«æªåããŸãã
äžèšã®åé¡ã¯ãããŸããŸãªæ¹æ³ã䜿çšããå¹æã®çšåºŠã¯ããŸããŸã§ãããåä¿¡ããããŒã¿ãå¢ããã°å¢ããã»ã©ãåé¡ã¯ããã«æªåããããšã«ããã«æ³šæããŠãã ããã
äžèšããã¹ãŠæºãããŠããããšïŒåè¿°ã®å
容ãèæ
®ããŠïŒ
ã°ã©ãã¡ã€ã+ã¯ãªãã¯ããŠã¹ã æåŸ
Yandex ã®ã¡ã³ããŒã®äº€æµäŒãããã€ã蚪ãã以äžã®èšäºãèªãã ããšããããŸãã
以äžã®ãã®ãåãåããããšæããŸãã
- ãã£ã¹ã¯ ãµãã·ã¹ãã ã®äœ¿çšçã 30% ãã 5% ã«åæžããŸãã
- å æã¹ããŒã¹ã®éã 1TB ãã 100GB ã«åæžããŸãã
- æ¯å 100 åã®ã¡ããªã¯ã¹ããµãŒããŒã«åä¿¡ã§ããã
- ããã«äœ¿ããããŒã¿è€è£œãšãã©ãŒã«ããã¬ã©ã³ã¹ã
- ãã®ãããžã§ã¯ãã XNUMX 幎éæŸçœ®ããã劥åœãªæéå ã«ç§»è¡ããŠãã ããã
- ããŠã³ã¿ã€ã ãªãã§åãæ¿ããããŸãã
ããªãéå¿çã§ãããïŒ
ã°ã©ãã¡ã€ã+ã¯ãªãã¯ããŠã¹ã ã³ã³ããŒãã³ã
Graphite ãããã³ã«çµç±ã§ããŒã¿ãåä¿¡ããããã ClickHouse ã«èšé²ããã«ã¯ã次ã®ãªãã·ã§ã³ãéžæããŸããã
ClickHouse ã®ææ°ãªãªãŒã¹ã§ããå®å®ããŒãžã§ã³ 1.1.54253 ããæç³»åãä¿åããããŒã¿ããŒã¹ãšããŠéžæãããŸããã äœæ¥äžã«åé¡ãçºçããŸãããå±±ã»ã©ã®ãšã©ãŒããã°ã«èšé²ãããããããã©ãåŠçããã°ããã®ãå®å
šã«æ確ã§ã¯ãããŸããã§ããã ãšã®è°è«äž
ClickHouse ããããŒã¿ãèªã¿åãããã«éžæãããŸãã
ã°ã©ãã¡ã€ã+ã¯ãªãã¯ããŠã¹ã ããŒãã«æ§é
ãgraphiteãã¯ããŒãã«ãç£èŠããããã«äœæããããŒã¿ããŒã¹ã§ãã
ã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 ãžã®ç§»è¡ã¯ããŠã³ã¿ã€ã ãªãã§è¡ãããå¿
èŠãããããããŠãŒã¶ãŒã«å¯ŸããŠå¯èœãªéãééçã«ç£èŠã·ã¹ãã å
šäœãäœããã®æ¹æ³ã§æ°ããã¹ãã¬ãŒãžã«åãæ¿ããå¿
èŠããããŸããã
ãããç§ãã¡ã®ããæ¹ã§ãã
-
ClickHouse ããŒãã«ã®ã¬ããªã±ãŒã·ã§ã³ã«åå ããŠãããµãŒããŒã® XNUMX ã€ã®ã«ãŒãã³ ã¯ãªãã¯ããŠã¹ã«è¿œå ã®ã¡ããªã¯ã¹ ã¹ããªãŒã ãéä¿¡ããããã®ã«ãŒã«ãã«ãŒãã³ C ãªã¬ãŒã«è¿œå ãããŸããã
-
ç§ãã¡ã¯ Python ã§å°ããªã¹ã¯ãªãããæžãããŠã£ã¹ããŒãã³ã ã©ã€ãã©ãªã䜿çšããŠã¹ãã¬ãŒãžãããã¹ãŠã® .wsp ãã¡ã€ã«ãèªã¿åãããã®ããŒã¿ã 24 ã¹ã¬ããã§åè¿°ã®ã«ãŒãã³ ã¯ãªãã¯ããŠã¹ã«éä¿¡ããŸããã ã«ãŒãã³ã¯ãªãã¯ããŠã¹ã§åãå ¥ããããã¡ããªã¯ã¹å€ã®æ°ã¯ 125 å XNUMX äž/åã«éããClickHouse ã¯æ±ãããããšãããããŸããã§ããã
-
æ¢åã®ããã·ã¥ããŒãã§äœ¿çšãããé¢æ°ããããã°ããããã«ãGrafana ã«å¥ã® DataSource ãäœæããŸããã 䜿çšããé¢æ°ã®ãªã¹ããç¹å®ããŸããããããã㯠Carbonapi ã«å®è£ ãããŠããŸããã§ããã ãããã®æ©èœãè¿œå ããcarbonapi ã®äœè ã« PR ãéããŸãã (ç¹å¥ã«æè¬ããŸã)ã
- ãã©ã³ãµãŒèšå®ã§èªã¿åãè² è·ãåãæ¿ããããã«ããšã³ããã€ã³ããgraphite-api (Graphite+Whisperã®APIã€ã³ã¿ãŒãã§ãŒã¹)ããcarbonapiã«å€æŽããŸããã
ã°ã©ãã¡ã€ã+ã¯ãªãã¯ããŠã¹ã çµæ
-
ãã£ã¹ã¯ ãµãã·ã¹ãã ã®äœ¿çšçã 30% ãã 1% ã«æžå°ããŸããã
- å æã¹ããŒã¹ã®éã 1 TB ãã 300 GB ã«æžå°ããŸããã
- æ¯å 125 å XNUMX äžã®ã¡ããªã¯ã¹ããµãŒããŒã«åä¿¡ããèœåããããŸã (ããŒã¯ã¯ç§»è¡æã«çºçããŸã)ã
- ãã¹ãŠã®ã¡ããªã¯ã¹ã XNUMX ç§ã®ä¿åééã«è»¢éããŸããã
- åä¿¡ããããŒã¿ã®è€è£œãšãã©ãŒã«ã ãã¬ã©ã³ã¹ã
- ããŠã³ã¿ã€ã ãªãã§åãæ¿ãå¯èœã
- ãã¹ãŠå®äºãããŸã§ã«çŽ 7 é±éããããŸããã
ã°ã©ãã¡ã€ã+ã¯ãªãã¯ããŠã¹ã åé¡ç¹
ç§ãã¡ã®å Žåãããã€ãã®èœãšãç©ŽããããŸããã ããã¯ç§»è¡åŸã«ç§ãã¡ãééãããã®ã§ãã
- ClickHouse ã¯åžžã«ãã®å Žã§èšå®ãåèªã¿èŸŒã¿ããããã§ã¯ãªããå Žåã«ãã£ãŠã¯åèµ·åãå¿ èŠã«ãªãããšããããŸãã ããšãã°ãClickHouse æ§æå ã® Zookeeper ã¯ã©ã¹ã¿ãŒã®èª¬æã®å Žåãã¯ãªãã¯ããŠã¹ ãµãŒããŒãåèµ·åããããŸã§äœ¿çšãããŸããã§ããã
- 倧èŠæš¡ãª ClickHouse ãªã¯ãšã¹ãã¯ééããªãã£ããããgraphite-clickhouse ã§ã¯ ClickHouse æ¥ç¶æååã¯æ¬¡ã®ããã«ãªããŸãã
url = "http://localhost:8123/?max_query_size=268435456&max_ast_elements=1000000"
- ClickHouse ã¯å®å®çãªãªãŒã¹ã®æ°ããããŒãžã§ã³ãé »ç¹ã«ãªãªãŒã¹ããŸããããããã«ã¯äºæãã¬ãã®ãå«ãŸããå ŽåããããŸãã®ã§æ³šæããŠãã ããã
- Kubernetes ã§åçã«äœæãããã³ã³ãããŒã¯ãçããŠã©ã³ãã ãªæå¹æéã§å€§éã®ã¡ããªã¯ã¹ãéä¿¡ããŸãã ãã®ãããªã¡ããªã¯ã¹ã®ãã€ã³ãã¯ããã»ã©å€ããªããã¹ããŒã¹ã«åé¡ã¯ãããŸããã ãã ããã¯ãšãªãäœæãããšããClickHouse ã¯ããã¡ããªã¯ã¹ãããŒãã«ãããããã®åãã¡ããªã¯ã¹ã倧éã«ååŸããŸãã 90% ã®ã±ãŒã¹ã§ã¯ãæéæ (24 æé) ãè¶
ãããšããŒã¿ããããŸããã ãã ãããããŒã¿ãããŒãã«ã§ãã®ããŒã¿ãæ€çŽ¢ããã®ã«æéãããããæçµçã«ã¯ã¿ã€ã ã¢ãŠãã«ãªã£ãŠããŸããŸãã ãã®åé¡ã解決ããããã«ãç§ãã¡ã¯ XNUMX æ¥äžã«çºçããã¡ããªã¯ã¹ã«é¢ããæ
å ±ãå¥åã®ãã¥ãŒã§ç¶æããããã«ãªããŸããã ãããã£ãŠãåçã«äœæãããã³ã³ãããŒã®ã¬ããŒã (ã°ã©ã) ãäœæããå Žåãåžžã«ã¯ãšãªãå®è¡ããã®ã§ã¯ãªããç¹å®ã®ãŠã£ã³ããŠå
ã§çºçããã¡ããªãã¯ã®ã¿ãã¯ãšãªãããããã³ã³ãããŒã«é¢ããã¬ããŒãã®æ§ç¯ã倧å¹
ã«é«éåãããŸããã äžèšã®è§£æ±ºçã®ããã«ãç§ã¯ä»¥äžãåéããŸãã
ã°ã©ãã¡ã€ãã¯ãªãã¯ããŠã¹ïŒãã©ãŒã¯ïŒ ããã«ã¯ãdate_metrics ããŒãã«ã®æäœã®å®è£ ãå«ãŸããŸãã
ã°ã©ãã¡ã€ã+ã¯ãªãã¯ããŠã¹ã ã¿ã°
ããŒãžã§ã³ 1.1.0 㧠Graphite ãæ£åŒã«ãªããŸãã
ã°ã©ãã¡ã€ã+ã¯ãªãã¯ããŠã¹ã ç°åžžæ€åºåš
äžèšã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«åºã¥ããŠãç°åžžæ€åºåšã®ãããã¿ã€ããå®è£ ããŸãããããã¯æ©èœããŸãã ãããã圌ã«ã€ããŠã¯æ¬¡ã®èšäºã§è©³ãã説æããŸãã
賌èªããŠäžç¢å°ãæŒããŠå¹žãã«ãªã£ãŠãã ãã!
åºæïŒ habr.com