VictoriaMetricsãTimescaleDBãInfluxDB ãæ¯èŒããŸããã
æ°å¹Žåã«ã¯Zabbixã®æ代ããããŸããã åã㢠ã¡ã¿ã« ãµãŒããŒã«ã¯ãCPU 䜿çšçãRAM 䜿çšçããã£ã¹ã¯äœ¿çšçããããã¯ãŒã¯äœ¿çšçãªã©ãããã€ãã®ææšãããããŸããã§ããã ãã®ããã«ããŠãæ°åã®ãµãŒããŒããã®ã¡ããªã¯ã¹ã 40 ã®äžæã®æç³»åã«é©åãããããšãã§ããZabbix ã¯æç³»åããŒã¿ã®ããã¯ãšã³ããšã㊠MySQL ã䜿çšã§ããŸã :)
çŸåšã¯äžäººã§
çŸæç¹ã§ã®å€æ°ã®äžæã®æç³»åã¯äœã§ãã? ãããã400Kã4Mã§ããããïŒ ãããšã40mïŒ ææ°ã® TSDB ããããã®æ°å€ãšæ¯èŒããŠã¿ãŸãããã
ãã³ãããŒã¯ã®ã€ã³ã¹ããŒã«
-scale-var
ïŒã 10 ã¯ãåãã¹ããŸãã¯ãµãŒããŒã§çæããã枬å®å€ (ã¡ããªãã¯) ã®æ°ã§ãã 次ã®ããŒã¿ã»ããã¯ããã³ãããŒã¯ã« TSBS ã䜿çšããŠçæãããŸããã
- 400 äžã®äžæã®æç³»åãããŒã¿ ãã€ã³ãéã®éé㯠60 ç§ãããŒã¿ã¯äžž 3 æ¥éã«ããããããŒã¿ ãã€ã³ãã®åèšæ°ã¯çŽ 1.7 åã§ãã
- 4 äžã®äžæã®æç³»åã600 ç§ééãããŒã¿ç¯å²ã¯äžž 3 æ¥ãåèšããŒã¿ ãã€ã³ãæ°ã¯çŽ 1.7 åã§ãã
- 40 äžã®äžæã®æç³»åã1 æéééãããŒã¿ç¯å²ã¯äžž 3 æ¥ãåèšããŒã¿ ãã€ã³ãæ°ã¯çŽ 2.8 åã§ãã
ã¯ã©ã€ã¢ã³ããšãµãŒããŒã¯å°çšã®ã€ã³ã¹ã¿ã³ã¹ã§å®è¡ãããŠããŸãã
- vCPU: 16
- RAMïŒ60 GB
- ã¹ãã¬ãŒãž: æšæº 1TB HDDã 120 Mbps ã®èªã¿åã/æžã蟌ã¿ã¹ã«ãŒãããã750 ç§ããã 1,5 ã®èªã¿åãæäœãXNUMX ç§ããã XNUMXK ã®æžã蟌ã¿ãå®çŸããŸãã
TSDB ã¯å ¬åŒã® Docker ã€ã¡ãŒãžããæœåºããã次ã®æ§æã® Docker ã§å®è¡ãããŸãã
-
ãã¯ããªã¢ã¡ããªã¯ã¹:
docker run -it --rm -v /mnt/disks/storage/vmetrics-data:/victoria-metrics-data -p 8080:8080 valyala/victoria-metrics
-
é«åºåããµããŒãããã«ã¯ãInfluxDB (-e) å€ãå¿ èŠã§ãã詳现ã«ã€ããŠã¯ããåç §ããŠãã ããã
ããã¥ã¡ã³ããŒã·ã§ã³ ):docker run -it --rm -p 8086:8086 -e INFLUXDB_DATA_MAX_VALUES_PER_TAG=4000000 -e INFLUXDB_DATA_CACHE_MAX_MEMORY_SIZE=100g -e INFLUXDB_DATA_MAX_SERIES_PER_DATABASE=0 -v /mnt/disks/storage/influx-data:/var/lib/influxdb influxdb
-
TimescaleDB (æ§æã¯ä»¥äžããååŸ)
ãã® ãã¡ã€ã«ïŒïŒ
MEM=`free -m | grep "Mem" | awk â{print $7}â`
let "SHARED=$MEM/4"
let "CACHE=2*$MEM/3"
let "WORK=($MEM-$SHARED)/30"
let "MAINT=$MEM/16"
let "WAL=$MEM/16"
docker run -it â rm -p 5432:5432
--shm-size=${SHARED}MB
-v /mnt/disks/storage/timescaledb-data:/var/lib/postgresql/data
timescale/timescaledb:latest-pg10 postgres
-cmax_wal_size=${WAL}MB
-clog_line_prefix="%m [%p]: [%x] %u@%d"
-clogging_collector=off
-csynchronous_commit=off
-cshared_buffers=${SHARED}MB
-ceffective_cache_size=${CACHE}MB
-cwork_mem=${WORK}MB
-cmaintenance_work_mem=${MAINT}MB
-cmax_files_per_process=100
ããŒã¿ ããŒããŒã¯ 16 åã®äžŠåã¹ã¬ããã§å®è¡ãããŸããã
ãã®èšäºã«ã¯ãæ¿å ¥ãã³ãããŒã¯ã®çµæã®ã¿ãå«ãŸããŠããŸãã éžæçãã³ãããŒã¯ã®çµæã¯å¥ã®èšäºã§å ¬éãããŸãã
400K ã®äžæã®æç³»å
åçŽãªèŠçŽ ã§ãã 400K ããå§ããŸãããã ãã³ãããŒã¯çµæ:
- VictoriaMetrics: 2,6 ç§ããã 3 äžã®ããŒã¿ ãã€ã³ãã RAM䜿çšé: 965 GB; ãã£ã¹ã¯äžã®æçµããŒã¿ãµã€ãº: XNUMX MB
- InfluxDB: 1.2 ç§ããã 8.5 äžã®ããŒã¿ ãã€ã³ãã RAM䜿çšé: 1.6 GB; ãã£ã¹ã¯äžã®æçµããŒã¿ãµã€ãº: XNUMX GB
- ã¿ã€ã ã¹ã±ãŒã«: 849 ç§ããã 2,5K ããŒã¿ ãã€ã³ãã RAM䜿çšé: 50 GB; ãã£ã¹ã¯äžã®æçµããŒã¿ãµã€ãº: XNUMX GB
äžèšã®çµæãããããããã«ãæ¿å ¥ããã©ãŒãã³ã¹ãšå§çž®çã§ã¯ VictoriaMetrics ãåã£ãŠããŸãã RAM 䜿çšéã§ã¯ã¿ã€ã ã©ã€ã³ãåªããŠããŸãããããŒã¿ ãã€ã³ãããšã« 29 ãã€ããšãã倧éã®ãã£ã¹ã¯é åã䜿çšããŸãã
以äžã¯ããã³ãããŒã¯äžã®å TSDB ã® CPU 䜿çšçã®ã°ã©ãã§ãã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: VictoriaMetrics - åºæã® 400K ã¡ããªã¯ã¹ã®æ¿å ¥ãã¹ãäžã® CPU è² è·ã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: InfluxDB - åºæã¡ããªã㯠400K ã®æ¿å ¥ãã¹ãäžã® CPU è² è·ã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: TimescaleDB - 400K ã®äžæã®ã¡ããªãã¯ã«å¯Ÿããæ¿å ¥ãã¹ãäžã® CPU è² è·ã
VictoriaMetrics ã¯å©çšå¯èœãªãã¹ãŠã® vCPU ã䜿çšããŸãããInfluxDB 㯠2 åã® vCPU ã®ãã¡æ倧 16 åãååã«æŽ»çšããŠããŸããã
Timescale 㯠3 åã® vCPU ã®ãã¡ 4 ïœ 16 åã®ã¿ã䜿çšããŸãã TimescaleDB ã¿ã€ã ã¹ã±ãŒã« ã°ã©ãå ã® iowait ãš system ã®é«ãå²åã¯ãå ¥åºå (I/O) ãµãã·ã¹ãã ã®ããã«ããã¯ã瀺ããŠããŸãã ãã£ã¹ã¯åž¯åå¹ äœ¿çšçã®ã°ã©ããèŠãŠã¿ãŸãããã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: VictoriaMetrics - åºæã®ã¡ããªã¯ã¹ 400K ã®æ¿å ¥ãã¹ãã«ããããã£ã¹ã¯åž¯åå¹ ã®äœ¿çšéã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: InfluxDB - åºæã¡ããªã¯ã¹ 400K ã®æ¿å ¥ãã¹ãã§ã®ãã£ã¹ã¯åž¯åå¹ äœ¿çšéã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: TimescaleDB - åºæã®ã¡ããªã¯ã¹ 400K ã®æ¿å ¥ãã¹ãã§ã®ãã£ã¹ã¯åž¯åå¹ äœ¿çšéã
VictoriaMetrics 㯠20 Mbps ã§ããŒã¿ãèšé²ããæ倧 45 Mbps ã§ããŒã¿ãèšé²ããŸãã ããŒã¯ã¯ããªãŒå
ã®å€§ããªéšåçãªããŒãžã«å¯Ÿå¿ããŸã
InfluxDB 㯠160 MB/ç§ã§ããŒã¿ãæžã蟌ã¿ãŸããã1 TB ãã©ã€ãã¯
TimescaleDB ã®æžã蟌ã¿ã¹ã«ãŒããã㯠120 Mbps ã«å¶éãããŠããŸãããå Žåã«ãã£ãŠã¯ãã®å¶éãç ŽããããŒã¯å€ã 220 Mbps ã«éããããšããããŸãã ãããã®ããŒã¯ã¯ãåã®ã°ã©ãã®äžåå㪠CPU 䜿çšçã®è°·ã«å¯Ÿå¿ããŸãã
å ¥åºå (I/O) 䜿çšçã®ã°ã©ããèŠãŠã¿ãŸãããã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: VictoriaMetrics - 400K ã®äžæã®ã¡ããªã¯ã¹ã«å¯Ÿãããã¹ã I/O 䜿çšéãæ¿å ¥ããŸãã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: InfluxDB - 400K ã®äžæã®ã¡ããªã¯ã¹ã«å¯Ÿãããã¹ã I/O 䜿çšéãæ¿å ¥ããŸãã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: TimescaleDB - 400K ã®äžæã®ã¡ããªã¯ã¹ã«å¯Ÿãããã¹ã I/O 䜿çšéãæ¿å ¥ããŸãã
TimescaleDB ã I/O å¶éã«éãã€ã€ãããããæ®ã 12 åã® vCPU ã䜿çšã§ããªãããšãæããã«ãªããŸããã
4M ã®åºæã®æç³»å
4M æç³»åã¯å°ãé£ãããã§ãã ãããã競åä»ç€Ÿã¯ãã®è©Šéšã«ç¡äºåæ ŒããŠããŸãã ãã³ãããŒã¯çµæ:
- VictoriaMetrics: 2,2 ç§ããã 6 äžã®ããŒã¿ ãã€ã³ãã RAM䜿çšé: 3 GB; ãã£ã¹ã¯äžã®æçµããŒã¿ ãµã€ãº: XNUMX GBã
- InfluxDB: 330 ç§ããã 20,5K ããŒã¿ ãã€ã³ãã RAM䜿çšé: 18,4 GB; ãã£ã¹ã¯äžã®æçµããŒã¿ ãµã€ãº: XNUMX GBã
- TimescaleDB: 480 ç§ããã 2,5K ããŒã¿ ãã€ã³ãã RAM䜿çšé: 52 GB; ãã£ã¹ã¯äžã®æçµããŒã¿ ãµã€ãº: XNUMX GBã
InfluxDB ã®ããã©ãŒãã³ã¹ã¯ã1,2 äžæç³»åã® 400 ç§ããã 330 äžããŒã¿ ãã€ã³ãããã4M æç³»åã® XNUMX ç§ããã XNUMX äžããŒã¿ ãã€ã³ãã«äœäžããŸããã ããã¯ãä»ã®ç«¶åä»ç€Ÿãšæ¯èŒããŠå€§å¹ ãªããã©ãŒãã³ã¹ã®äœäžã§ãã ãã®æ倱ã®æ ¹æ¬åå ãç解ããããã«ãCPU 䜿çšçã®ã°ã©ããèŠãŠã¿ãŸãããã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: VictoriaMetrics - åºæã® 4M æç³»åã®æ¿å ¥ãã¹ãäžã® CPU 䜿çšçã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: InfluxDB - åºæã® 4M æç³»åã®æ¿å ¥ãã¹ãäžã® CPU 䜿çšçã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: TimescaleDB - åºæã® 4M æç³»åã®æ¿å ¥ãã¹ãäžã® CPU 䜿çšçã
VictoriaMetrics ã¯ãåŠçè£ çœ® (CPU) ã®é»åã®ã»ãŒãã¹ãŠã䜿çšããŸãã æåŸã®ããããã¯ããã¹ãŠã®ããŒã¿ãæ¿å ¥ãããåŸã®æ®ãã® LSM ããŒãžã«å¯Ÿå¿ããŸãã
InfluxDB 㯠8 åã® vCPU ã®ãã¡ 16 åã®ã¿ã䜿çšããŸãããTimsecaleDB 㯠4 åã® vCPU ã®ãã¡ 16 åã䜿çšããŸãã 圌ãã®ã°ã©ãã®å
±éç¹ã¯äœã§ãããã? é«ã·ã§ã¢ iowait
ãããã I/O ããã«ããã¯ã瀺ããŠããŸãã
TimescaleDBã¯é«ãã·ã§ã¢ãèªã system
ã é«é»åã®çµæãå€ãã®ã·ã¹ãã ã³ãŒã«ãŸãã¯å€æ°ã®ã³ãŒã«ãçºçãããšæ³å®ããŸãã
ãã£ã¹ã¯ ã¹ã«ãŒãããã®ã°ã©ããèŠãŠã¿ãŸãããã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: VictoriaMetrics - ãã£ã¹ã¯åž¯åå¹ ã䜿çšã㊠4M ã®äžæã®ã¡ããªã¯ã¹ãæ¿å ¥ããŸãã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: InfluxDB - ãã£ã¹ã¯åž¯åå¹ ã䜿çšã㊠4M ã®åºæã®ã¡ããªã¯ã¹ãæ¿å ¥ããŸãã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: TimescaleDB - ãã£ã¹ã¯åž¯åå¹ ã䜿çšã㊠4M ã®äžæã®ã¡ããªã¯ã¹ãæ¿å ¥ããŸãã
VictoriaMetrics ã¯ããŒã¯æã« 120 MB/ç§ã®å¶éã«éããŸããããå¹³åæžã蟌ã¿é床㯠40 MB/ç§ã§ããã ããŒã¯äžã«æ°åã®åŒ·å㪠LSM èåãå®è¡ãããå¯èœæ§ããããŸãã
InfluxDB ã¯ãæžã蟌ã¿å¶éã 200 MB/ç§ã®ãã£ã¹ã¯äžã§ãå¹³åæžã蟌ã¿ã¹ã«ãŒãããã 340 MB/ç§ãããŒã¯æã«æ倧 120 MB/ç§ãçµãåºããŸã :)
TimescaleDB ã«ã¯ãã£ã¹ã¯å¶éããªããªããŸããã æ¯çã®é«ãã«é¢é£ããä»ã®äœãã«ãã£ãŠå¶éãããŠããããã§ã ÑОÑÑеЌМПй
CPUè² è·ã
IO 䜿çšçã®ã°ã©ããèŠãŠã¿ãŸãããã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: VictoriaMetrics - åºæã® 4M æç³»åã®æ¿å ¥ãã¹ãäžã« I/O ã䜿çšããŸãã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: InfluxDB - åºæã® 4M æç³»åã®æ¿å ¥ãã¹ãäžã« I/O ã䜿çšããŸãã
äžã¯ã¹ã¯ãªãŒã³ã·ã§ããã§ã: TimescaleDB - åºæã® 4M æç³»åã®æ¿å ¥ãã¹ãäžã® I/O 䜿çšéã
IO 䜿çšãã¿ãŒã³ã¯ãã£ã¹ã¯åž¯åå¹ ã®ãã¿ãŒã³ãåæ ããŠããŸããInfluxDB 㯠IO ãå¶éãããŠããŸãããVictoriaMetrics ãš TimescaleDB ã«ã¯äºåã® IO ãªãœãŒã¹ããããŸãã
40 äžã®äžæã®æç³»å
40 äžã®äžæã®æç³»å㯠InfluxDB ã«ã¯å€§ããããŸãã :)
ãã³ãããŒã¯çµæ:
- VictoriaMetrics: 1,7 ç§ããã 29 äžã®ããŒã¿ ãã€ã³ãã RAM䜿çšé: 17 GB; ãã£ã¹ã¯å®¹éã®äœ¿çšé: XNUMX GBã
- InfluxDB: 60GB ãè¶ ãã RAM ãå¿ èŠã ã£ãã®ã§å®äºããŸããã§ããã
- TimescaleDB: 330 ç§ããã 2,5K ããŒã¿ ãã€ã³ããRAM 䜿çšé: 84 GBã ãã£ã¹ã¯å®¹éã®äœ¿çšé: XNUMXGBã
TimescaleDB ã¯ãåºæã® 2,5M ããã³ 4K ã¡ããªã¯ã¹ãšåã 400 GB ã§ãéåžžã«äœãå®å®ãã RAM 䜿çšéã瀺ããŠããŸãã
VictoriaMetrics ã¯ã100 äžåã®ã¿ã°ä»ãã¡ããªã¯ã¹åããã¹ãŠåŠçããããŸã§ã40 ç§ããã 1,5 ããŒã¿ ãã€ã³ãã®é床ã§ãã£ãããšã¹ã±ãŒã«ã¢ããããŸããã ãã®åŸã2,0 ç§ããã 1,7 ïœ XNUMX äžã®ããŒã¿ ãã€ã³ãã®æç¶çãªæ¿å ¥é床ãéæãããããæçµçµæ㯠XNUMX ç§ããã XNUMX äžã®ããŒã¿ ãã€ã³ãã«ãªããŸããã
40 äžã®åºææç³»åã®ã°ã©ãã¯ã4 äžã®åºææç³»åã®ã°ã©ããšäŒŒãŠãããããã¹ãããããŸãããã
æèŠ
- ææ°ã® TSDB ã¯ãåäžãµãŒããŒäžã§äœçŸäžãã®åºæã®æç³»åã®æ¿å ¥ãåŠçã§ããŸãã 次ã®èšäºã§ã¯ãTSDB ãäœçŸäžãã®åºæã®æç³»åã«ããã£ãŠéžæãã©ã®çšåºŠé©åã«å®è¡ãããããã¹ãããŸãã
- CPU 䜿çšçãäžååãªå Žåã¯ãéåžžãI/O ããã«ããã¯ãçºçããŠããããšã瀺ããŸãã ãŸããããããã³ã°ãç²ãããŠãäžåºŠã«å®è¡ã§ããã¹ã¬ãããå°æ°ã§ããããšã瀺ããŠããå¯èœæ§ããããŸãã
- I/O ããã«ããã¯ã¯ãç¹ã«ã¯ã©ãŠã ãããã€ããŒã®ä»®æ³åããã㯠ããã€ã¹ãªã©ã®é SSD ã¹ãã¬ãŒãžã«ååšããŸãã
- VictoriaMetrics ã¯ãäœé㧠I/O ã®å°ãªãã¹ãã¬ãŒãžã«æé©ãªæé©åãæäŸããŸãã æé«ã®é床ãšæé«ã®å§çž®çãå®çŸããŸãã
ããŠã³ããŒã
VictoriaMetrics ã«ã€ããŠè©³ããã¯ããã¡ããã芧ãã ããã
æŽæ°: å
¬éãããŸãã
æŽæ° #2: ãã¡ãããèªã¿ãã ãã
ã¢ããããŒã #3:
é»å ±ãã£ãã:
åºæïŒ habr.com