çæéã§ãããã¡ããŠã¹ã¯æã人æ°ã®ããç£èŠããŒã«ã®1ã€ã«ãªããŸããã ç¹ã«ããããŠãã®äœæ¥ã®é«éæ§ã«æè¬ããŸãã ãã®ããŒã«ã«ã¹ãã¬ãŒãžã¯ãã¡ããªãã¯ã®çæã¹ãã¬ãŒãžã«æé©ã§ãããã¡ããªãã¯ãšé£æºããŸãã å Žåã«ãã£ãŠã¯ãå€ãããŒã¿ãèªåçã«ã«ããããããããããæäœããããã®ã€ã³ã¿ãŒãã§ã€ã¹ã倿Žããã«ãã¡ããªãã¯ãæ°ãæããã³æ°å¹Žã«ããã£ãŠé åžãããããšããããŸãã
ããã«ã€ããŠã¯ãRootConf 2018ã§ã®Alexey Palazhchenkoã«ããã¬ããŒãã®ãã³ãŒãã§ããã¬ããŒãïŒããã¡ããŠã¹ãããŒã«ã«ã¹ãã¬ãŒãžTSDBããªã¢ãŒãã¹ãã¬ãŒãžããã¡ããŠã¹ãPromQLãTSDBãã¯ãªãã¯ããŠã¹ãPromHouseãInfluxDBã®ãããã
ç«ã®äžã§èª°ãæ°ã«ããŠãã ããã
åéïŒ ã¿ãªããããã«ã¡ã¯ïŒ ç§ã®ååã¯ã¢ã¬ã¯ã»ã€ã»ãã©ãžãã§ã³ã³ã§ãã ç§ã¯ããŒã³ãã§åããŠããŸãã ããã¡ããŠã¹ã§ã®ã¡ããªãã¯ã®é·æä¿åã«ã€ããŠã話ããããšæããŸãã
ç§ã¯Perconaã§åããŠãããperconaç£èŠããã³ç®¡çãšåŒã°ãã補åãäœã£ãŠããŸãã ããã¯ãã客æ§ããèªèº«ã§èšå®ããããã¯ã¹ãœãªã¥ãŒã·ã§ã³ã§ãã PMMã¯å®å šã«ãªãŒãã³ãœãŒã¹ã§ãã Prometheusãã°ã©ãäœæçšã®Grafanaãã«ã¹ã¿ã ã¯ãšãªåæãœãããŠã§ã¢ãããã³ç®¡çãå¯èœã«ããç¬èªã®ã©ãããŒã§æ§æãããŠããŸãã ããšãã°ãPrometheusã«ã¹ã¯ã¬ã€ãã¿ãŒã²ããã远å ã§ããŸãã ãããã¯ãã³ã³ãããŸãã¯ä»®æ³ãã·ã³ãæåã§å ¥åããŠæ§æãã¡ã€ã«ãç·šéããããšãªããã¡ããªãã¯ãååŸããæ°ãããœãŒã¹ã§ãã
ãããã¯SaaSã§ã¯ãªãããšãçè§£ããããšãéèŠã§ãã çç£ã¯ãããŸããã ç§ãã¡ã®çç£ã¯ã客æ§ã«ãããŸãã ãããå®éšããããšã¯ããŸãè¯ããããŸããã productionãšåŒã°ããæãè¿ããã®ããããŸã -ããã¯https://pmmdemo.percona.com/ã§ãã ã¬ããŒãã®æç¹ã§ãGDPRã®ããã«pmmdemo.percona.comãã·ã£ããããŠã³ããå¿ èŠããããŸããã
PMMãã客æ§ã«æäŸããŸãâç®±å ¥ããœãªã¥ãŒã·ã§ã³ïŒDockerã³ã³ãããŸãã¯ä»®æ³ãã·ã³ã 圌ãã¯ãã¹ãŠããã¡ããŠã¹ã奜ãã§ãã ããã¡ããŠã¹ãåããŠèŠãŠãã人ã®äžã«ã¯ããã«ã¢ãã«ã«åºããã人ãããŸãã åå¿è ã«ãšã£ãŠãããã¯äžäŸ¿ã§ãã äžè¬çã«å¥ã®å€§ããªäŒè©±ã ãã«ãŸãã¯ããã·ã¥ã¡ãœããã«ã€ããŠè°è«ããããšãã§ããŸãã å¹³åããŠãããã¯ã»ãŒåãããšã§ãã
ããã¡ããŠã¹ã®ããã€ãã®ããšã¯ãšãŠãã¯ãŒã«ã§ãã
Prometheusã¯ãšãªèšèªã¯ãã©ãã«ãé¡äŒŒæ§ããªããæ¬åœã«ã¯ãŒã«ãªãã®ã§ãã
2çªç®ã«æ°ã«å ¥ã£ãŠããã®ã¯ããµãŒãã¹ã®çºèŠã§ãã ããçš®ã®åçã€ã³ãã©ã¹ãã©ã¯ãã£ïŒkubernetesïŒã䜿çšããŠããå Žåãèªåçã«ç£èŠå¯Ÿè±¡ã®ãã¹ãŠã®ã¿ãŒã²ããã远å ããå¿ èŠã¯ãããŸããã éçãªå Žå-ãããéåžžã«ç°¡åã«è¡ãããšãã§ããŸãã æ§æãã¡ã€ã«ã䜿çšããå¿ èŠããããŸãã
ããã¡ããŠã¹ã®é¡§å®¢ã¯ããã奜ãã§ãã 圌ãã¯ãã¡ããªãã¯ããŸããŸãé·ãä¿ã¡ãããšèããŠããŸãã 誰ããPrometheusãéçšäžã®ç£èŠã®ã¿ã«äœ¿çšããŠããŸãã ãããã1幎åã®ã°ã©ããšæ¯èŒããŠãã¡ããªãã¯ãããé·ãä¿æãããã€ããã¯ã¹ã芳å¯ããã人ãããŸãã ãã ããã¡ããªã¯ã¹ã®é·æä¿åã®ç®æšã¯ãPrometheusãããžã§ã¯ãã®ç®æšã§ã¯ãããŸããã æåã¯ãã¡ããªãã¯ãçæéä¿åããããã«äœæãããŸããã SoundCloudã¯ãããæ°æ¥ã§ã¡ããªãã¯ãä¿åããŸãã Prometheusã«ã¯ãããããã£ãšé·ãã§ããã¡ã«ããºã ããããŸãããå°ã暪ã«é 眮ãããŠããŸãã ãããã£ãŠãã·ã¹ãã ã®ã³ã¢ã倿ŽããããšãªããPrometheusãšã³ã·ã¹ãã ã®ãœãªã¥ãŒã·ã§ã³ãäœæã§ããŸãã ãããã«åºã¥ããŠãåããšã³ã·ã¹ãã å ã§ç¬èªã®æ±ºå®ãäžãããšãã§ããŸãã
ããã¯æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ã«é¢ããã¬ããŒãã§ã¯ãããŸããã ããã¯ãç§ãã¡ã®çµéšãçã¿ã詊ã¿ã«é¢ããå ±åã§ãã ãã®ã¬ããŒãã®åŸã§ãªããžããªãŸãã¯ããã«ãŒã³ã³ãããããŠã³ããŒãããŠå®è¡ãããšäºæ³ãããå Žåã¯ãåäœããŸãããããã§ã¯ãããŸããã ããããåæã«ããã¯ãããªãã®ã«ååè¿ãã ããã€ãã®åºç€ããããŸãã ãããã¯ãã¹ãŠãªãŒãã³ãœãŒã¹ã§ãã 詊ããŠã¿ãããšãã§ããŸãã 圌ãã¯ãŸã çç£ã®æºåãã§ããŠããŸããã ãããããã®ã¬ããŒãã«èšèŒãããŠããæ å ±ã䜿çšãããšãçç±ãçè§£ã§ããŸãã èªåã«åã£ãç¬èªã®æ±ºå®ãäžãããšãã§ããŸãã
ã¡ããªãã¯ã¯ã©ã®ããã«Prometheusã«ä¿åãããŸããïŒ ããŒã«ã«ã¹ãã¬ãŒãžããããŸãã ãªã¢ãŒãã¹ãã¬ãŒãžããããŸãã ãããã¯å®éã«ã¯2ã€ã®ç°ãªãäžçã§ãã ãããã¯åŒ±ã亀差ããŸãã ãããã£ãŠãã¬ããŒãã2ã€ã®éšåã«åãããŠããŸãã
Prometheusã®åªããã€ã³ããããã£ãã¡ã€ã³ããŒã«ã®ä»¥åã®ã¬ããŒãã«ããå ŽåãããŒã«ã«ã¹ãã¬ãŒãžã¯TSDBãšåŒã°ããç¬ç«ããã©ã€ãã©ãªã§ããããšãããããŸãã TSDBã¯OpenTSDBãšã¯é¢ä¿ãããŸããã TSDBã¯ãGoããã°ã©ã ãã䜿çšã§ããå¥åã®Goããã±ãŒãžã§ãã TSDBã©ã€ãã©ãªã¬ãã«ã§ã¯ãã¯ã©ã€ã¢ã³ããŸãã¯ãµãŒããŒã¯ãããŸããã
ãã®ã©ã€ãã©ãªã¯ãæç³»åããŒã¿ãæäœããããã«æé©åãããŠããŸãã ããšãã°ãTSDBã«ã¯ãã«ã¿ãšã³ã³ãŒãã£ã³ã°ããããããã«ãããæ°å€èªäœã§ã¯ãªãããããã®æ°å€éã®å€æŽãä¿åã§ããŸãã ããã«ããã16ãã€ãã§ã¯ãªã1ãã€ããä¿åã§ããŸãã æéã«1ãã€ããå€ã«1ãã€ãã ã€ãŸãããã®åªããå§çž®ã®ããã«ãæ£ç¢ºã«å¹³å1ãŸãã¯2ãã€ããä¿åããŸãã
TSDBã¯ãã«ã¢ãã«çšã«æé©åãããŠããŸãã ããŒã¿ã¯ããã«ã®ã¿è¿œå ãããŸãã ããã¡ããŠã¹ã¯å±¥æŽããŒã¿ãèšé²ã§ããŸããã ãã®ããã®APIã¯ãããŸããã æå€§ã®ãã«ã¿ã¯çŽ5åã§ãã ããŒã¿ãå€ãå Žåãåãå ¥ããããŸããã
TSDBã«ã¯ãçµã¿èŸŒã¿ã®ããŠã³ãµã³ããªã³ã°tsdbïŒ313ã¯ãããŸããã äžè¬ã«ãããã¡ããŠã¹ã®åšãã§äœããããŠãããããžã§ã¯ãããããããã«ããŠã³ãµã³ããªã³ã°ããããšããäºå®ã«ã€ããŠè°è«ãããæªè§£æ±ºã®åé¡ããããŸãã ãããŸã§ã®ãšããã解決çã¯TSDBãããŠã³ãµã³ããªã³ã°ã远å ããªãããšã§ãã
TSDBããã©ã®ããã«ããŒã¿ãååŸããŸããïŒ TSDBã¯ãã£ã¹ã¯äžã®ããŒã¿ããŒã¹ã§ãã Goããã°ã©ã ãäœæããŠããå Žåã¯ãããã䜿çšã§ããŸãã ãã ããGoã§ããã°ã©ã ãäœæããªãå Žåã¯ãã¯ãšãªã¯ãšãªãäœæã§ããJSON APIããããŸãã Prometheusã䜿çšããããšããããå°ãªããšãäžåºŠãã£ãŒããäœæããããšãããã°ãPromQLã¯ãšãªãšãªãã·ã§ã³ã§æéãå®è¡ã§ããã¯ãšãªãã©ã¡ãŒã¿ãããæšæºã¯ãšãªAPIãç¥ã£ãŠããŸãã æéããªãå Žåã¯ãçŸåšã®æéãåãããŸãã
ç¹å®ã®ã¯ãšãªãã¹ã©ã€ãäžã§åŒ·èª¿è¡šç€ºãããŸãããå®éã«ã¯ãã£ãã«è¡šç€ºãããŸããã ããã¯ããã¯ã§ãã ããã«ãããPrometheusã®ãã¹ãŠã®ã¡ããªãã¯ãåŒãåºãããšãã§ããŸãã ã©ã®ããã«æ©èœããŸããïŒ PromQLã®ã¬ãã«ã§ã¯ãåžžã«ã»ãªãšã«äžèŽãããããªè¡šçŸãæžãããšã¯äžå¯èœã§ãããšèšãããŠããŸãã ããã¯ã«ãŒã«ã«çŽæ¥èšè¿°ãããŸãã å¥ã®ã«ãŒã«ã§ã¯ããã¹ãŠã®å€ã空ã§ãããããªãããã£ãŒãäœæããããšã¯ã§ããŸããã åã«äžæ¬åŒ§ãæžããšãããã¯æ©èœããŸããã nameãäœããšçãããªãïŒç©ºã®å€ã§ã¯ãªãïŒå Žåãæ©èœããŸããã ããããããã¯ããªãããããè¡ãããšãã§ããæ¬åœã®ããã¯ã§ãã ãã ããç¹ã«ææžåãããŠããŸããã ãããæ©èœããããšãã³ãŒãèªäœã«ã³ã¡ã³ãããããŸãã
2çªç®ã®ã¯ãšãªã¯query_rangeã§ãããã¯åãããšãè¡ããŸãããããŒã¿ãç¯å²å ã§ããã€ãã®ã¹ãããã§è¿ããŸãã åºæ¬çã«ãæåããæåŸãŸã§ã®åã¹ãããã§ã¯ãšãªãæ°åå®è¡ããŸãã ããã¯ãã°ã©ãã£ãã¯ã®æç»ã«äœ¿çšãããAPIã§ãã æåã®APIã¯ãã€ã³ã¹ã¿ã³ãå€ãååŸããããã«äœ¿çšããŸãã
ã¡ã¿ããŒã¿ãååŸããããã®APIããããŸãã ã¡ããªãã¯ã®ãã¹ãŠã®ååãååŸããå Žåãæ¬¡ã®ãããªã¯ãšãªãäœæããŸããmatchã¯ã¡ããªãã¯ã®é åã§ãã ããã€ãã®åŒæ°ãååšããå ŽåããããŸããããã®å ŽåãåãäžèŽãæž¡ãããã¹ãŠãè¿ãããŸãã
2çªç®ã®ã¡ã¿APIããã¹ãŠã®ã©ãã«ã®å€ãè¿ããŸãã ãã¹ãŠã®ãžã§ãã®ãªã¹ãã衚瀺ããå Žåã¯ãlabel_nameã®ä»£ããã«jobãäœæããŠãã®ãªã¹ããååŸããŸãã ãããã®APIã¯JSONãè¿ããŸãã
Prometheusèªäœã®ãã¹ãŠã®ã¡ããªãã¯ããšã¯ã¹ããŒã¿ãŒã«ãã€ãã£ããªåœ¢åŒã§è¿ãå¥ã®APIããããŸãã ãã®åœ¢åŒã¯expfmtãšåŒã°ããŸãã ããã¡ããŠã¹èªäœã«ã¯ããã®ãããªãªã¯ãšã¹ããè¡ãããšãã§ãããã§ãã¬ãŒã·ã§ã³APIããããŸãã ããã¯äœã®ããã§ããïŒ æãç°¡åãªãªãã·ã§ã³ã¯ããã§ã«expfmtã§åäœããã³ãŒããããå Žåãã«ã¹ã¿ã JSON APIã§åäœããããã«åãã¬ãŒãã³ã°ããå¿ èŠã¯ãããŸããã ãªããžã§ã¯ãã®æäžäœã®ã©ããã«JSONãããå Žåãã»ãšãã©ã®å Žåããã®ãªããžã§ã¯ãå šäœãè§£æããå¿ èŠãããããããã®åœ¢åŒã®ã¹ããªãŒãã³ã°ã¯ã¯ããã«ç°¡åã§ãã ããã§ã¯ãè¡ããšã«å®è¡ã§ããŸãã
æãéèŠãªããšã¯ããããå¥åã®APIã§ããããšã§ãã å®éã®ãšã¯ã¹ããŒããšåãããã«æ©èœããŸãã å¥ã®ããã¡ããŠã¹ã䜿ã£ãŠãããåãããšãã§ããŸãã ããã¯ãéåžžã®ãã©ã¡ãŒã¿ãŒãæã€éåžžã®ãžã§ãã§ãã ãã©ã¡ãŒã¿-ã¯ãšãªURLãæž¡ãå¿ èŠããããŸãã ã«ãŒã«ãªã¯ãšã¹ããè¡ãå Žåãããã§ãåãããã«ãªããŸãã çŸåšã®æéå€ã®ãã¹ãŠã®ã¡ããªãã¯ãååŸããŸãã å¯äžã®æ³šæç¹ïŒãã®APIãä»ããŠå¥ã®ããã¡ããŠã¹ã廿£ããPrometheusããžã§ããšã€ã³ã¹ã¿ã³ã¹ã©ãã«ã®å€ãããããªãããã«ãhonor_labelsãèšå®ããå¿ èŠããããŸãã ãã®ãã§ãã¬ãŒã·ã§ã³APIã䜿çšãããšã1ã€ã®ããã¡ããŠã¹ããå¥ã®ããã¡ããŠã¹ã«ãã¹ãŠã®ããŒã¿ãããŒãã§ããŸãã
ããã¯ã©ã®ããã«äœ¿çšã§ããŸããïŒ
ãŸããæãéèŠãªããšã¯ããããè¡ãå¿ èŠããªããšããããšã§ãã TSDBã¯ããŸããŸãªåäœã¢ãŒãã«æé©åãããŠããŸãã 倧éã®ããŒã¿ãååŸããããã¡ããŠã¹ãããå Žåã倧éã®I / Oãå®è¡ããŸãã Federation APIã䜿çšããå Žåãå ¥ååºåã®éã¯çŽ2åã«å¢å ããŸãã ãã¥ã¢ã³ã¹ããããŸãã é£åãã¹ã¯ã¬ã€ãããé »åºŠãšãã¿ãŒã²ãããã¹ã¯ã¬ã€ãããé »åºŠã«ãã£ãŠç°ãªããŸãã æéã倿Žããªãå Žåãããã«ããè² è·ãå®éã«2åã«ãªããŸãã ãããã£ãŠãPrometheusãæ¡åŒµããŠãã§ãã¬ãŒã·ã§ã³ãæå¹ã«ãããå Žåã¯ãããã匷å¶çµäºããŸãã è² è·ã¯åå¢ããŸãã
第äºã®ç¬éã ããŒã¿ãã¹ãããããŸãã ããŒã¿ã®ç«¶åãçºçããŸãã ãªããã ãã®APIã¯ãPrometheusã®ã»ãšãã©ãã¹ãŠã®APIãšåæ§ãã¢ãããã¯ã§ã¯ãããŸããã æ°ããããŒã¿ãå°çããå Žåããã§ãã¬ãŒããªã¯ãšã¹ãããŸã é²è¡äžã®æç¹ã§æ°ããã¹ã¯ã¬ã€ãã³ã°ãçµäºããŸããããæç³»åã§1ã€ã®ããŒã¿ãååŸããå¥ã®æç³»åã§æ°ããããŒã¿ãååŸã§ããŸãã ãããç¡é¢ä¿ãªæç³»åã§ããå Žåãããã¯äžè¬çã«æããªãã§ãã ããããexpfmtã¬ãã«ã§ããã€ãã®åºæ¬çãªã¡ããªãã¯ã«ãã£ãŠè¡šãããèŠçŽãŸãã¯ãã¹ãã°ã©ã ãããå Žåããããã®éã«ççŸãçããŸãã
ãã®ã¢ãããã¯ãªåé¡ãã©ã®ããã«è§£æ±ºã§ããŸããïŒ ããã¡ããŠã¹ã«ã¯ãæ¢åã®æç³»åããæ°ããæç³»åãäœæã§ããèšé²ã«ãŒã«ããããŸãã ããã¯ããŸãé »ç¹ã«è¡ãããšã¯ã§ããŸããã ããã¯ããŠã³ãµã³ããªã³ã°ãè¡ã1ã€ã®æ¹æ³ã§ãã ããšãã°ãã¿ãŒã²ããã1ç§ããšã«å»æ£ããŸããããã®åŸ1åã§node_cpuéèšãå®è¡ããŸãã Prometheus 2.0ã§ã°ã«ãŒãåãããšããããã®éèšãé çªã«å®è¡ã§ããŸãã åãã°ã«ãŒãã«ããã«ãŒã«ã¯ãå³å¯ã«é çªã«å®è¡ãããŸãã ãã®æç¹ã§ã¯ãååæ§ã®åé¡ã¯ãªããããã»ã¹ã§ããŒã¿ã倿Žããããšããåé¡ã¯ãããŸããã ããããããã¯ãããã«è«ççã«æ¥ç¶ãããŠãããããŒã¿ã¢ãã«ã®èгç¹ããã¯æ¥ç¶ãããŠããªãä»ã®ããŒã¿ã蚱容ã§ãããšããäºå®ã®åé¡ã解決ãããã®ã§ã¯ãããŸããã ãŸã çŽç²ãªååæ§ã¯ãããŸããã ãã®ãããã¯ã«ã¯æªè§£æ±ºã®åé¡ããããŸãã ã¹ãããã·ã§ãããäœæã§ããŸãã TSDBããŒã¿ããŒã¹ã«å¯ŸããŠPromQLã¯ãšãªãäœæããååŸããå€ããè©äŸ¡ã§éå§ããæéã®å€ãããå°ãããã¹ãŠã®ãµã³ãã«ãåé€ã§ããŸãã ãããæãç°¡åãªæ¹æ³ã§ãããä»ã®ãšãããŸã å®è¡ãããŠããŸããã
èšé²èŠåã¯ããã§ãã¬ãŒã·ã§ã³ãè¡ãããã¡ããŠã¹ã§ã¯ãªããäžäœã®ããã¡ããŠã¹ã§è¡ãå¿ èŠãããããšãçè§£ããããšãéèŠã§ãã ããããªããšãããŒã¯ãã¹ããããããã¢ãã¿ãªã³ã°ãæ£ããæ©èœããŸããã
ãããã®çµã¿åãããã©ã®ããã«äœ¿çšããŠãããŠã³ãµã³ããªã³ã°ãšé·æä¿åãè¡ãããšãã§ããŸããã
æåã®ãã®ã 飿ºãèšå®ãããã®ããã¡ããŠã¹ãããã¹ãŠã®ããŒã¿ãããŠã³ããŒãããã ãã§ãã ãã®å¥åŠãªæ£èŠè¡šçŸã¯ãŸã€ãããŒã°ã®ãããªãã®ã§ã-å®éã«ã¯åãªãã³ãã³ã§ãã ã³ãã³ã®å·Šå³ã«ããã¢ã¹ã¿ãªã¹ã¯ã èšé²ã«ãŒã«ã«ã¯æšæºåã䜿çšããäžå€®ã«ã³ãã³ã远å ããŸãã å ã®ååãåå²ãããšãå·ŠåŽã«éçŽã¬ãã«ããããå³åŽã«é¢æ°ããããŸãã éåžžã®ã³ãã³ã¡ããªãã¯ã¯ããã§ã¯ãããŸããã ã³ãã³ãããå Žåãããã¯éçŽã§ããããšã瀺ããŠããŸãã ãã®åŸããã®ã¡ããªãã¯åãã°ã©ãã§äœ¿çšããŸãã ã¹ã±ãžã¥ãŒã«ãgrafanaã®ããã·ã¥ããŒããã¡ã€ã³ã®Prometheusãããã³äžäœã®ããã¡ããŠã¹ãšé£æºãããã«ã¯ãåŒãŸãã¯ã䜿çšããŸãã ã©ã¡ãããã©ãã§ãããã«å¿ããŠã1ã€ã®ã¡ããªãã¯ãŸãã¯å¥ã®ã¡ããªãã¯ã䜿çšããŸãã äžæ£ãããŠã©ãã«ã倿ŽããŠãæ°ããã¡ããªãã¯ã®ååãå€ãååã«å€æŽã§ããŸãã ããã¯ããªãå±éºãªã¢ãããŒãã§ãã éåžžã®æ·»ä»ãã¡ã€ã«ã®ã¹ãã«ãééãããšãæç³»åã®ç«¶åãçºçããŸãã ããã¡ããŠã¹ã¯å€ãã®èŠåããã°ã«æžã蟌ã¿ãŸãã ããã¯è¡šç€ºãããŸãããçç±ãèŠã€ããã®ã¯éåžžã«å°é£ã§ãã ããããããšãã°ãããã®æ£èŠè¡šçŸãããã°ã©ã ã§çæãããªã©ãæ éã«è¡ããšãããã¯æ©èœããŸãã æ¬¡ã«ãnode_cpuã®ã¿ã䜿çšãããéåžžã®ããã·ã¥ããŒãããããŸãã 䜿çšãããŠããããã¡ããŠã¹ã«å¿ããŠãçããŒã¿ãŸãã¯éèšããŒã¿ã®ãããããåãåããŸãã
åè¿°ããããã«ãèšé²ã«ãŒã«ã¯éåžžã«ç°¡åã«çæã§ããŸãã æ¢ã«ç€ºããAPIãä»ããŠãã¹ãŠã®æç³»åãååŸããŸãã ã«ãŒã«ãäœæãããããã®ã«ãŒã«ã¯æ£ãã颿°ãšæŒç®åã䜿çšããå¿ èŠããããŸãã ã²ãŒãžã§ã¬ãŒãã䜿çšããå¿ èŠã¯ãããŸããã ããã¯é©åã«æ©èœããŸããã countã§ã®ã¿äœ¿çšããå¿ èŠããããŸãã äœæ¥ã¬ãã«ã§ã¯ãããŒã¿åã«é¢ããæ å ±ããªãå ŽåããããŸãã ããšãã°ãexpfmtã䜿çšããå Žåã ã¿ã€ãã«é¢ããæ å ±ããããŸãã JSON APIãååšããªãå Žåã ãã®çµæãèªåçã«çæãããåŒã«ã¯ç©ççãªæå³ããªãå ŽåããããŸãã ãããã£ãŠããã¯ã€ããªã¹ããŸãã¯ãã©ãã¯ãªã¹ãã®ããããã䜿çšã§ããŸãã ããã«å¿ããŠãå¿ èŠãªã«ãŒã«ãçæããããæå³ããªããªãã«ãŒã«ãé€å€ããŸãã promtoolããŒã«ã䜿çšãããšãçæããã«ãŒã«ãçæããæ§æãé©åã§ããããšã確èªã§ããŸãã æ£ããæ§æã§ãã
Grafanaããããè€æ°ã®Prometheusãããå Žåãã©ã®Prometheusã«ãªã¯ãšã¹ããéä¿¡ããããç¥ãå¿ èŠããããŸãã ãããã©ã®ããã«è¡ãã®ã§ããããïŒ
1ã€ã®æ¹æ³ã¯ããªã¯ãšã¹ãå ã®æå»ã調ã¹ãç¹å¥ãªãããã·ãé 眮ããããšã§ããããã«å¿ããŠãPrometheusãéžæããŸãã ã¯ãšãªã«ã¯éå§æéãšçµäºæéããããŸãã ããã«å¿ããŠãæã§ã«ãŒãã£ã³ã°ãè¡ãããšãã§ããŸãã ãããè¡ãäœããã®ããã°ã©ã ãæžãããšãã§ããŸãã å®éã«ã¯ãããã¯luaã¢ãžã¥ãŒã«ãŸãã¯å°ããªããã°ã©ã ã䜿çšããŠnginxã«ãã£ãŠå®è¡ãããŸãã
æ¬åœã«APIãå¿ èŠã§ããïŒ TSDBãçŽæ¥æäœã§ããŸããïŒ ãã¥ã¢ã³ã¹ããããŸãã ãŸããçŸåšPrometheusã§äœ¿çšãããŠããTSDBã䜿çšããããšãããšããããè¡ãããšãã§ããªããªããŸãã ãããé²ãç¹å¥ãªããã¯ãã¡ã€ã«ããããŸãã ãããç¡èŠããã³ãŒããæžããããŒã¿ã®èªã¿åããŸãã¯æžã蟌ã¿ãè¡ãããšãããšãããããæå·ããããšãä¿èšŒãããŸãã èªæžãã äœãã§ããŸããïŒ APIãä»ããŠããŒã¿ãèªã¿åããTSDBã䞊è¡ããŠäœæã§ããŸãã æ¬¡ã«ãPrometheusã忢ããTSDBã«çœ®ãæããŸãã ãã ããåæã«ãAPIãä»ããŠãã¹ãŠã®ããŒã¿ãèªã¿åããšãããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãã ããã«ã€ããŠã¯å°ãåŸã§èª¬æããŸãã
2çªç®ã®ãªãã·ã§ã³ã ãããã®ãã¡ã€ã«ãã³ããŒïŒãããããã¯ã¢ããïŒã§ããŸããã€ãŸãããã®ãŸãŸã³ããŒã§ããŸãã ã¯ããç ŽæããŸãã éããšãããŒã¿ãç ŽæããŠãããšããèŠåã衚瀺ãããŸãã ããããä¿®æ£ããå¿ èŠããããŸãã æ°ããããŒã¿ã倱ãããå¯èœæ§ããããŸãã ããããããã¯ç§ãã¡ã«ãšã£ãŠéèŠã§ã¯ãããŸããã å€ãããŒã¿ã®ããŠã³ãµã³ããªã³ã°ãå¿ èŠã§ãã ããŠã³ãµã³ããªã³ã°ã¯ãPromQLã䜿çšããŠå®è¡ã§ããŸãã ãããããã¥ã¢ã³ã¹ããããŸãã TSDBãããããã¡ããŠã¹ããåŒãè£ãã®ã¯ã¯ããã«å°é£ã§ãã GoãšäŸåé¢ä¿ã®ç®¡çã«å°ã粟éããŠããå Žåããã³ããŒã®PromQLã¯å€§ããªèŠçã§ãã ã¢ããã€ã¹ã¯ããŸããã å¯èœã§ããã°ãããé¿ããŠãã ããã
ãªã¢ãŒãã¹ãã¬ãŒãžã«æž¡ããŸãã Prometheusã®ãªã¢ãŒãã¹ãã¬ãŒãžã§äœæ¥ãã人ã¯ããŸããïŒ ããã€ãã®æã ãªã¢ãŒãã¹ãã¬ãŒãžã¯ãé·ãé䜿çšãããŠããAPIã§ãã çŸåšãããŒãžã§ã³2.2ãªã¢ãŒãã¹ãã¬ãŒãžã§ã¯ãå®éšçãšããŠããŒã¯ãããŠããŸãã ããã«ãRemote Storage APIã確å®ã«å€æŽãããããšãããã£ãŠããŸãã
ãªã¢ãŒãèšæ¶åã䜿çšãããšãçããŒã¿ã®ã¿ãæäœã§ããŸãã å ¥åãŸãã¯åºåã«PromQLã¯ãããŸããã èªãã ãšãã«ãPromQLã®å šæ©èœã䜿çšããããšã¯ã§ããŸããã åºæ¬çã«ãæ¡ä»¶ã«äžèŽãããã¹ãŠã®ããŒã¿ããªã¢ãŒãã¹ãã¬ãŒãžããéãåºããŸãã ããã«PromQLã¯æ¢ã«ãããã§åäœããŸãã ããã«ã¯ããªã倧ããªãªãŒããŒãããããããŸãã ãããã¯ãŒã¯ãä»ããŠå€§éã®ããŒã¿ãéä¿¡ããå¿ èŠããããŸãã ãããã£ãŠããŸã ãªãªãŒã¹ãããŠããªããããã§ã«é å»¶ããŠããPrometheus 2.3ã§ã¯ãèªã¿åãã®ãã³ãããããŸãã ããã«ã€ããŠã¯åŸã»ã©èª¬æããŸãã
ã¡ã¿ããŒã¿çšã®APIã¯ãŸã ãããŸããã ãã¹ãŠã®æç³»åããªã¢ãŒãã¹ãã¬ãŒãžããè¿ãAPIãäœæããããšã¯ã§ããŸããã Prometheus APIã§ãªã¯ãšã¹ããè¡ã£ãå Žåããªã¢ãŒãã¹ãã¬ãŒãžã§ã¯æ©èœããŸããã ããŒã«ã«ããŒã¿ããŒã¹ã«ããæç³»åãè¿ãããŸãã ããŒã«ã«ããŒã¿ããŒã¹ãç¡å¹ã«ãªã£ãŠããå Žåã0ãè¿ãããŸããããã¯å°ãäºæ³å€ãããããŸããã çŸåšããã®APIã¯ProtoBufã䜿çšããŠãããå°æ¥çã«ã¯ç¢ºå®ã«gRPCã«å€æŽãããäºå®ã§ãã gRPCã¯HTTP2ãå¿ èŠãšããããã圌ãã¯ãŸã ãããããŠããŸããã ãããŠå®éã«ã¯ã圌ãã¯åœŒãšåé¡ãæ±ããŠããŸããã
æžã蟌ã¿APIã¯æ¬¡ã®ããã«ãªããŸãã ãªã¯ãšã¹ãã«ã¯ã©ãã«ã®ã»ããããããŸãã ã©ãã«ã®ã»ããã¯ãæç³»åãäžæã«èå¥ããã ãã§ãã __name__
ã¯å®éã«ã¯ç¹å¥ãªååãæã€åãªãã©ãã«__name__
ã ãµã³ãã«ã¯æéãšå€ã®ã»ããã§ã-int64ãšfloat64ã èšé²ãããšããé åºã¯éèŠã§ã¯ãããŸããã ãããèªåèªèº«ã«æžã蟌ãããŒã¿ããŒã¹ããã¹ãŠãæ£ããè¡ããšæ³å®ãããŠããŸãã ããã¡ããŠã¹ã¯ãããã€ãã®æé©åãè¡ãããããå床ãœãŒãããªãå ŽåããããŸãã ãããã£ãŠãæžã蟌ã¿èŠæ±ã¯ã»ãã®æ°æç³»åã§ãã
æžãèŸŒã¿æ§æã«ã¯ããªãæè»ãªæ§æããããŸãã æžã蟌ã¿äžŠè¡æ§ãæ§æããããã®å€ãã®ãªãã·ã§ã³ããããŸãã ããã¡ããŠã¹ãã·ã£ãŒããšåŒã¶ãã®ã¯ãæ¬è³ªçã«ã¯ç«¶äºåã®ããèŠæ±ã§ãã 1ã€ã®ãªã¯ãšã¹ãã®æå€§ãµã³ãã«æ°ã䞊åãªã¯ãšã¹ãã®æå€§æ°ãã¿ã€ã ã¢ãŠããç¹°ãè¿ãæ¹æ³ãããã¯ãªããå¶éã§ããŸãã å€ãã®ããŒã¿ããŒã¹ã§ã¯ãäžåºŠã«100åã®ãµã³ãã«-ããã¯éåžžã«å°ããå ŽåããããŸãã ClickHouseã䜿çšããå Žåã¯ããã¡ãããå€ãå€§å¹ ã«å¢ããå¿ èŠããããŸãã ããããªããšãéåžžã«å¹çãæªããªããŸãã
ãªã¢ãŒãèªã¿åãAPIã¯æ¬¡ã®ããã«ãªããŸãã ããã¯ãéå§ããçµäºãŸã§ã®æéç¯å²ãšäžèŽã»ããã«ãããŸããã
äžèŽã¯åºæ¬çã«ãååãšå€ã®ãã¢ã®ã»ããã§ãããéåžžã®ã©ãã«ãšæ¡ä»¶ã¿ã€ãã§ãã æ¯èŒãããšãçåŒãäžçåŒããŸãã¯æ£èŠè¡šçŸããããŸãã ããã¯ãPromQLã«è¡šç€ºãããéåžžã®æç³»åã»ã¬ã¯ã¿ãŒã§ãã ããã«ã¯æ©èœã¯ãããŸããã
çãã¯ããã®ã¯ãšãªã«äžèŽããããã€ãã®æç³»åã§ãã ããã§ã¯ããµã³ãã«ãæéã§äžŠã¹æ¿ããå¿ èŠããããŸãã ç¹°ãè¿ããŸãããããã¯ããã¡ããŠã¹ãå°ããªCPUãç¯çŽããã®ã«åœ¹ç«ã¡ãŸã-ãœãŒãããå¿ èŠã¯ãããŸããã ãã ããããŒã¿ããŒã¹ã§ãããè¡ãå¿ èŠããããšæ³å®ãããŠããŸãã ã»ãšãã©ã®å Žåããããªãã§ãããããªããªããã»ãšãã©ã®å Žåãæééãã«ã€ã³ããã¯ã¹ãããããã§ãã
Prometheus 2.3ã¯èªã¿åããã³ããå°å ¥ããŸããã ããã¯äœã§ãã ããã¯ãèŠæ±ãããŠããæç³»åã§æ©èœããå éšé¢æ°ãé©çšãããããšãPrometheusã«äŒããæ©äŒã§ãã ããã¯ã颿°ãŸãã¯éçŽæŒç®åã®ããããã§ãã ã¬ãŒããããããŸããã ã€ãŸããããã¯funcãšåŒã°ããŸãããå®éã«ã¯åèšã§ãããPromQLã®èгç¹ããã¯å®éã«ã¯é¢æ°ã§ã¯ãããŸããã ãããæŒç®åã§ãã ãããŠäžæ©ã åã®äŸã§ã¯ã1åã®ã¬ãŒãããããŸããã ããã§ãé床ã¯é¢æ°ã§ãããã¹ããããšããŠã®ããªç§åäœã®1åã§ãã ãã®ãã³ãã¯ããªã¢ãŒãããŒã¿ããŒã¹ã§ã¯ç¡èŠã§ããŸãã åæã«ãå¿çã«ç¡èŠããããã©ããã®è¡šç€ºã¯ãããŸããã
èªã¿åãã®æ§æã¯äœã§ããïŒ
ãŸããrequired_matchersãšããæ§æããããŸãã ããã«ãããåŒã«äžèŽãããªã¢ãŒãã¹ãã¬ãŒãžãªã¯ãšã¹ããéä¿¡ã§ããŸãã ãªã¢ãŒãã¹ãã¬ãŒãžããéèšããŒã¿ãèªã¿åãã«ã¯ãã³ãã³ãå«ãã¯ãšãªã䜿çšããå¿ èŠããããŸãã
TSDBã«ãããªã¢ãŒãã¹ãã¬ãŒãžããæè¿ã®ããŒã¿ãèªã¿åããã©ãããéžæã§ãããªãã·ã§ã³ããããŸãã éåžžãæšæºæ§æã§ã¯ãããŒã«ã«ãã£ã¹ã¯ã«æžã蟌ãŸããå°ããªããŒã«ã«TSDBããããŸãã åœŒå¥³ã¯æ°æéãŸãã¯æ°æ¥éããã«ä¿ç®¡ããŸãã ããã·ã¥ããŒãã®äœæã«äœ¿çšãããã¢ã©ãŒãã«äœ¿çšãããçŸåšäœ¿çšããŠããããŒã¿ã¯ãããŒã«ã«TSDBããã®ã¿èªã¿åãããŸãã é«éã§ããã倧éã®ããŒã¿ãä¿åããããšã¯ã§ããŸããã
å€ãå±¥æŽããŒã¿ã¯ããªã¢ãŒãã¹ãã¬ãŒãžããèªã¿åãããŸãã ããã«ãããããŒã«ã«ã¹ãã¬ãŒãžãšãªã¢ãŒãã¹ãã¬ãŒãžãçžäºã«éä¿¡ããæ¹æ³ãæç¢ºã«ãªããŸãã éè€æé€ã¯ãããŸããã
åºæ¬çã«äœãèµ·ãã£ãŠããã®ãã ããŒã¿ã¯ããŒã«ã«ã¹ãã¬ãŒãžããååŸãããread_recentãæå¹ãªå ŽåãããŒã¿ã¯ãªã¢ãŒãã¹ãã¬ãŒãžããååŸãããŸãã ãããã¯äžç·ã«ããŒãžãããŸãã ããã¯åé¡ã§ã¯ãªããšæãããŸãã æè¿ã®ããŒã¿ãããŠã³ãµã³ããªã³ã°ããŠããªããšä»®å®ããå Žåããããã¯ãŸã£ããåãããŒã¿ã§ãããããŒã«ã«ããŒã¿ãšå®å šã«äžèŽããŸãããµã³ãã«ã¯2åã«ãªãããã颿°ã«ã¯åœ±é¿ããŸããã ããã§ããªãã irateïŒïŒé¢æ°ãšãã²ãŒãžçšã®ãã¢ããããæåŸã®2ã€ã®å€ã®å·®ãè¿ããŸãã æå®ãããæéç¯å²ãæ¯ãè¿ããŸãããæåŸã®2ã€ã®å€ã®ã¿ã䜿çšããŸãã æåŸã®2ã€ã®å€ã®æéãåãå Žåãå·®ã¯ãŒãã«ãªããŸãã ããã¯ãã°ã§ãããèŠã€ããããšã¯ã»ãŒäžå¯èœã§ãã ããã4æ¥åã«ä¿®çãããŸããã ããã¯èå³ã®ãã人åãã®ãã±ããã§ã ã
è峿·±ãããšã«ããªã¢ãŒãèªã¿åãã¯ãããŒãžã§ã³1.8以éãPrometheusã«ãã£ãŠå®è£ ãããŠããŸãã ããã¯ãããŒãžã§ã³2.xã«ç§»è¡ãããšãã«å€ãPrometheusã®ããŒã¿ãèªã¿åãããšãã§ããæ¹æ³ã§ãã å ¬åŒã®æ¹æ³ã§ã¯ããªã¢ãŒãèªã¿åããšããŠæ¥ç¶ããããšããå§ãããŸãã å¿ èŠã«å¿ããŠããŒã¿ãå·®ãåŒãããŸãã
ãªã¢ãŒãèªã¿åãã䜿çšããŠããããã·ãªãã§ã¯ãšãªã«ãŒãã£ã³ã°ãè¡ãããšãã§ããŸãã åã®ã¹ã©ã€ãã®1ã€ã§ãæéã«å¿ããŠã1ã€ã®ããã¡ããŠã¹ãŸãã¯å¥ã®ããã¡ããŠã¹ã§ã«ãŒãã£ã³ã°ã§ããããšã瀺ããŸããã åæ§ã«ããããåé¿ã§ããŸãã 以äžã®ãªã¢ãŒãèªã¿åãã§ããããã¡ããŠã¹ãå·®ã蟌ãã ãã§ãããããããŒã¿ãèªã¿åãããŸãã ãããããã¡ããå€ãã®ããŒã¿ãæ±²ã¿äžãããããšããäºå®ã«ã¯ä¿®æ£ããããŸãã ç¹ã«ãã¯ãšãªãã³ãã䜿çšããŠããªãå Žåã
ãªãã¯ãªãã¯ããŠã¹ãªã®ãïŒ
ç§ãã¡ã®ç ç©¶ãœãªã¥ãŒã·ã§ã³ãšããŠãç§ãã¡ã¯ClickHouseãéžæããŸãããããã¯ãç§ãã¡ãé·ãéèŠãŠããããã§ãã ããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ã«åžžã«æºãããæ°ããããŒã¿ããŒã¹ãåžžã«ãã§ãã¯ããŠãã人ã ãããŸãã åœç€Ÿã¯ããªãŒãã³ãœãŒã¹ã®ããŒã¿ããŒã¹ã«åãçµãã§ããŸãã
çã®ããã©ãŒãã³ã¹ããšãŠãæ°ã«å ¥ã£ãŠããŸãã CPUãæéãªã©ã®ç¹ã§ãã®èœåã¯éåžžã«åªããŠããŸãã ãããã®ã·ã¹ãã ã®ã»ãšãã©ã¯ãç¡éã®ã¹ã±ãŒã©ããªãã£ã«ã€ããŠèªã£ãŠããŸãããåäžãµãŒããŒã®å¹çã«ã€ããŠã¯ã»ãšãã©èªã£ãŠããŸããã ã¯ã©ã€ã¢ã³ãã®å€ãã¯ãã¡ããªãã¯ããµãŒããŒã®ãã¢ã«ä¿åããŸãã
çµã¿èŸŒã¿ã®è€è£œãã·ã£ãŒãã£ã³ã°ã
GraphiteMergeTreeã¯ãã°ã©ãã¡ã€ãããŒã¿ãæ ŒçŽããããã®ç¹å¥ãªãšã³ãžã³ã§ãã æåã¯åœŒã¯ç§ãã¡ã«ãšãŠãèå³ããããŸããã
ãã®ãšã³ãžã³ã¯ãã°ã©ãã¡ã€ãããŒã¿ã®ããŒã«ã¢ããïŒéåŒãããã³éçŽ/å¹³ååïŒãç®çãšããŠããŸãã
Graphiteã¯å®å šãªããŒã¿ãClickHouseã«ä¿åããŸããããããåä¿¡ã§ããŸããããã«ãéåŒãGraphiteMergeTreeã䜿çšãããšãéåŒããªãã§MergeTreeã䜿çšãããŸãã æèŠã¯ãããŒã¿ãåžžã«ãã£ã±ãã§ãããäžæžããããã®ã§ã¯ãªããèªã¿åãã®æé©åã«ãããªããšããããšã§ãã ããããå šäœçã«ã¯æªããããŸããã èªã¿åããè¡ããšããããŒã¿ããã³ãã¢ãŠãããããããã¯èªåçã«éçŽãããå°éã®ããŒã¿ãååŸããŸã-ããã¯è¯ãããšã§ãã ç§ãã¡ã®æ¬ ç¹ã¯ããã¹ãŠã®ããŒã¿ãä¿åãããããšã§ãã
æã®åãã«ã¬ããŒãã®æºåãããŠããŸããã 誰ããé»å ±ãã£ããã«åå ããŠããGraphiteMergeTreeããŒã¿ã®ããŠã³ãµã³ãã«ããšå°ããŸãã ããæžããŠãªã ããã¥ã¡ã³ããŒã·ã§ã³ã¯ããŒãšèšããŸãã ãããããã£ããã®çžæã¯ãã¯ããoptimizeãåŒã³åºãå¿ èŠããããŸãããšçããŸãã å®è¡ã確èª-ã¯ããçå®ã ããã¥ã¡ã³ãã¯æ¬è³ªçã«ãã°ã§ãã æ¬¡ã«ããœãŒã¹ã³ãŒããèªãã§ãã§ãã¯ããŸããããæé©åããããæçµçã«æé©åãããŠããŸãã Optimize finalã¯ãããšããšGraphiteMergeTreeå°çšã«äœæãããŸããã å®éã«åœŒã¯ããŠã³ãµã³ããªã³ã°ããŠããŸãã ããããããã¯åœŒã®æã§åŒã°ããªããã°ãªããŸããã
GraphiteMergeTreeã«ã¯ç°ãªãããŒã¿ã¢ãã«ããããŸãã 圌ã«ã¯ã©ãã«ããããŸããã ã¡ããªãã¯ã®ååã§ãã¹ãŠã广çã«èšè¿°ããŠããããŸããããŸããã
ååã¡ããªãã¯ã¯1ã€ã®ããŒãã«ã«ä¿åãããŸãã ã¡ããªãã¯ã®ååã®é·ãã¯ç°ãªããŸãã ããã«ãããã¡ããªãã¯ã®ååã§ã€ã³ããã¯ã¹æ€çŽ¢ãè¡ãå Žåãé·ããç°ãªãããããã®ã€ã³ããã¯ã¹ã¯ããã®ã€ã³ããã¯ã¹ãåºå®é·ã®å€ãæã£ãŠããå Žåã»ã©å¹æçã§ã¯ãªããšããäºå®ã«ã€ãªãããŸãã ãã¡ã€ã«æ€çŽ¢ãè¡ãå¿ èŠãããããã ãã€ããªæ€çŽ¢ãè¡ãããã«çéžããå Žæãæ£ç¢ºã«æå®ããããšã¯äžå¯èœã§ãã
ãããã£ãŠã圌ãã¯ç¬èªã®ã¹ããŒã ãäœæããŸããã ã¹ã©ã€ãã¯ãæç³»åãããŒã¿ããŒã¹ã«ä¿åããæ¹æ³ã瀺ããŠããŸãã ClickHouseãå¿ èŠãšããæ¥ä»ã¯æçŽã§ãã PrometheusãŸãã¯TSDBã®ãœãŒã¹ãèŠããšãæçŽã¯æ¬è³ªçã«ãã«ããŒã æç³»åã®çãã¯ã€ãã¯ãã§ãã¯ãµã ã§ããããšãããããŸãã æçŽã¯ããã¹ãŠã®ã©ãã«ãããŒãããã³å€ã®çµã¿åããã§ãã ååã¯éåžžã®ã©ãã«ã§ãã äºææ§ã®ããã«åãã¢ã«ãŽãªãºã ã䜿çšããŸãã åæ¹èšå ¥ã¯äŸ¿å©ã§ãã æçŽã¯åãã§ãããTSDBãšã¹ãã¬ãŒãžã§ããããåãã§ããããšã確èªã§ããŸãã ã©ãã«ã¯ç¹å¥ãªJSONã«ä¿åãããŸããããã«ãããClickHouseã¯æšæºæ©èœã§ã©ãã«ãæäœã§ããŸãã ããã¯ãã¹ããŒã¹ã®ãªãã³ã³ãã¯ããªJSONã§ãããåœåããããã«åçŽåãããŠããŸãã ãã®ããŒãã«ã¯æäœäžã«ã¯äœ¿çšãããŸããã PromHouseãšåŒã°ããå®éã®ãœãªã¥ãŒã·ã§ã³ã®ã¡ã¢ãªã«åžžã«ä¿åãããŸãã æç³»åãšã¯äœãã調ã¹ãããã«ãµãŒããŒãèµ·åãããšãã«ã®ã¿äœ¿çšãããŸãã 圌女ã¯å·®ãåŒãããŸãã æ°ããæç³»åãå°çãããšãããã«èšé²ããŸãã è€æ°ã®PromHouseã€ã³ã¹ã¿ã³ã¹ã¯ãã¹ãŠãåãããŒãã«ãèªã¿åãããšãã§ããŸãã ReplacingMergeTreeã¯ããããã®æç³»åïŒããã€ãã®ç°ãªãã€ã³ã¹ã¿ã³ã¹ãããïŒãåãæç³»åãèšè¿°ããããšã瀺ããŠããŸãã 圌ãã¯äºããŸã-ãããŠãããã§åé¡ã¯ãããŸããã
ãµã³ãã«ãå¥ã®ããŒãã«ã«éåžžã«å¹ççã«ä¿åããŸãã åºå®é·ã®å€ã䜿çšãããšããã®ãã£ã³ã¬ãŒããªã³ãã¯æéãšå€ãåãã«ãªããŸãã ãµã³ãã«ããã24ãã€ããååŸããŸãã é·ããå³å¯ã«åºå®ãããŠããŸãã ååã¯åå¥ã«ä¿åãããŸãã ãµã€ãºãåºå®ãããŠããããšãããã£ãŠãããããæçŽæ€çŽ¢ã¯å¹æçã§ãã æååã®å ŽåãGraphitmergeTreeã®ãããªåé¡ã¯ãããŸããã ã«ã¹ã¿ã ããŒãã£ã·ã§ã³ã䜿çšããŸãã ãã©ã€ããªæçŽã€ã³ããã¯ã¹ãšæéã
24ãã€ãã¯ç°¡æããŒãžã§ã³ã§ãã å®éãããã¯ããå§çž®ãããŸãã å®éã䜿çšããã¹ããŒã¹ãå°ãªããªããŸãã ææ°ã®ãã¹ãã§ã¯ãå§çž®çã¯çŽ1ã42ã§ãã
GraphiteMergeTreeãããå ŽåãæåããŠã³ãµã³ããªã³ã°ãå®è¡ããã«ã¯ã©ãããã°ããã§ããïŒ å®éãç§ãã¡ã¯æã§ãããè¡ãããšãã§ããŸãã åãšåãããã«ãäœãçµã¿èŸŒãŸããŠããªããšãã®ã·ã£ãŒãã£ã³ã°ãããŒãã£ã·ã§ã³åå²ã æã§æ°ããããŒãã«ãäœããŸãã æéãµã³ãã«ãæ¥ããšãã©ã®ããŒãã«ã«æžã蟌ãããæ±ºå®ããŸãã
èªã¿èŸŒãããŒãã«ã®ã¯ãšãªããæéãéžæããŸãã èªã¿åããå¢çã§çºçããå Žåãããã€ãã®ããŒãã«ãèªã¿åããŸãã æ¬¡ã«ããã®ããŒã¿ãä¿æããŸãã ããã«ã¯ãã¥ãŒã䜿çšã§ããŸãã ããšãã°ãè€æ°ã®ããŒãã«ã®ãã¥ãŒãäœæãããšã1ã€ã®ã¯ãšãªã§èªã¿åãããšãã§ããŸãã ãã ããClickHouseã«ã¯ãã°ããããŸãããã¥ãŒããã®è¿°èªã¯ã¯ãšãªã«ä»£å ¥ãããŸããã ãããã£ãŠããã¥ãŒã§ãªã¯ãšã¹ããè¡ããšããã¹ãŠã®ããŒãã«ã«éä¿¡ãããŸãã 䜿çšã§ããªããã¥ãŒã
ããŠã³ãµã³ããªã³ã°ã¯ã©ã®ããã«è¡ããŸããïŒ äžæããŒãã«ãäœæããŸãã æ£ãã颿°ã䜿çšããŠãæ¿å ¥ãéžæããŒã¿ã«ã³ããŒããŸãã
ã°ããŒãã«ããã¯ã®äžã§ã¢ãããã¯ãªåå倿Žãè¡ããŸãã æ¢åã®ããŒãã«ã®ååãå€ããã®ã«å€æŽããŠããŸãã æ¢åããæ°èŠã å€ãããŒãã«ãåé€ããŸãã 148æ¥éã®ããŒã¿ã¯ãã§ã«ããŠã³ãµã³ããªã³ã°ãããŠããŸãã ããã§åé¡ã¯äœã§ããïŒ çŸããèŠããã«æ¿å ¥ããŸãã å®éãæ£ããæ©èœãé©åãªéçŽãé©çšããå¿ èŠããããŸãã å®éã«ã¯ãããã1ã€ã®å€§ããªèŠæ±ã§è¡ãããšã¯ã§ããŸããã å°æ°ã®å€§èŠæš¡ãªãªã¯ãšã¹ãã§ãããå®è¡ã§ããŸããã ããã¯ã³ãŒãããå®è¡ããå¿ èŠããããŸãã ã³ãŒãã¯ã倿°ã®å°ããªãªã¯ãšã¹ããéä¿¡ããŸãã å€§èŠæš¡ãªãªã¯ãšã¹ãã§ãããè¡ãããã«æåãå°œãããŸããããããã¯ããŸã广çã§ã¯ãããŸããã ãããŸã§ã®1æ¥ããã®ããŒã¿ã®ããŠã³ãµã³ããªã³ã°ã«ã¯ã1æ¥ãããããŸããã ããŒã¿ã®éã«ãã£ãŠã¯ãæéããããå ŽåããããŸãã
ClickHouseã¯æŽæ°/åé€ãããŸãã åé€ãããšãæåã®ããŒãžã§ã³ãæ¢ã«ååŸãããŠããŸãã æŽæ°/åé€ãæ©èœããå ŽåãããŠã³ãµã³ããªã³ã°ããŒã¿ã¹ããŒã ãç°¡çŽ åã§ããŸãã
次ã«ãClickHouseã«ã¯ãã«ã¹ã¿ã å§çž®ïŒãã«ã¿ããã«ã¿ãããã«ã¿ïŒãäœæããã¿ã¹ã¯ããããŸãã ãããTSDBã®æ©èœã§ãã ããã¯æç³»åããŒã¿ã«é©ããŠããŸãã ããã¯ãããŒã¿ã®çš®é¡ã«å¿ããŠå§çž®ã®çš®é¡ãéžæã§ããå Žåã«ç¹ã«äŸ¿å©ã§ãã ããšãã°ãã«ãŠã³ã¿ã¯æé·ããŠããã ãã§ãããã®ããã«ã¯ããã«ã¿ãã«ã¿å§çž®ãé©ããŠããŸãã 倧ããã®åšãã§å€åããã²ãŒãžããããã£ãŠããã«ã¿ã¯ããŸãæ©èœããŸãã
åäœããä»ã®ã¹ãã¬ãŒãžããããŸãã ããã«äœ¿ããInfluxDBããããŸãã ã¹ããŒãã®ããã«åœŒãscãã®ãæ £ç¿ã§ãããç®±ããåºããŠåäœããäœãããå¿ èŠããªãã®ã¯è¯ãããšã§ãã
OpenTSDBãšãæžã蟌ã¿å°çšã®GraphiteããããŸãã Prometheusã®æšæºã¢ããã¿ãŒã¯å®éã«ã¯æ©èœããŸããã
CrateDBããããŸãã æç³»åããŒã¿ããŒã¹çšã«PostgreSQLããã©ãŒã¯ããTimescaleDBããããŸãã 圌ãã¯ãããããŸããããšèšã£ãŠããŸãããç§ãã¡ã¯èªåã§è©ŠããŠããŸããã
ãã©ã³ã±ã³ã·ã¥ã¿ã€ã³ãããžã§ã¯ããšããŠãç¥ãããŠããCortexããããŸãã ããã¯åœŒããšãŠããã説æããŠããŸãã ããã¯ãããã¡ããŠã¹é£åã«åºã¥ããŠæ±ºå®ããããšããŠãã人ãã¡ã§ãã S3ã«ããŒã¿ãä¿åããŸãã
ãµãã¹ãããŸãã
- 圌ã¯éåžžã«è峿·±ãã¢ãŒããã¯ãã£ãæã£ãŠããŸãã ããŒã«ã«TSDBã䜿çšããããã¡ããŠã¹ããããŸãã ãããã®éã«ã¯ã©ã¹ã¿ãŒãäœæãããŸãã åããã¡ããŠã¹ã®é£ã«ã¯ç¹å¥ãªãµã€ãã«ãŒãããããªã¢ãŒãèªã¿åãããã³ãªã¢ãŒãæžã蟌ã¿APIãä»ããŠãªã¯ãšã¹ããåãåããŸãã 圌ã¯ãããã®ãªã¯ãšã¹ããããã¡ããŠã¹ã«ãªãã€ã¬ã¯ãããŸãã Prometheusã¯ããªã¢ãŒãèªã¿åãããã³ãªã¢ãŒãæžã蟌ã¿APIã䜿çšã§ããŸãã ãã¹ãŠã®ãµã€ãã«ãŒã¯çžäºæ¥ç¶ãããŠãããgRPCãä»ããŠã«ã¹ã¿ã APIãã¹ã¿ãŒéã§è€è£œãå©çšå¯èœã§ãåã·ã§ãŒãã£ã³ã°ããããŸãã
- æŽç·Žãããã¢ãŒããã¯ãã£ã
- ããªã湿ã£ãŠããŸãã æ°ã¶æåãéå§æã®ããŒãããã¯ããå€ããŠããŸããã
ãã«ã¢ãã«ã䜿çšããŠãã倧éã®ããŒã¿ã¯æžã蟌ãŸããŸããã 幎éããŒã¿ãå ¥åããã«ã¯ã1å¹ŽåŸ ã€å¿ èŠããããŸãã ã©ããããããããã«ããããæžã蟌ãããšããŠããŸãã
Prometheusã«ã¯ãªã¢ãŒãæžã蟌ã¿ããªããããããŒã«ã«TSDBã«å€§éã®ããŒã¿ãæžã蟌ãããšã¯ã§ããŸããã
2çªç®ã®åé¡ã ã¹ãã¬ã¹ãã¹ãçšã®ããŒã¿ãçæãããšãããæºããŸãã ããšãã°ãæ¢åã®ããŒã¿ãååŸããŠ100åã®ã€ã³ã¹ã¿ã³ã¹ãçæããããããåãããŒã¿ã§ããå Žåãå§çž®ä¿æ°ã¯éåžžã«çŸãããããå®éã«ã¯çºçããŸããã
Prometheusãäžç·ã«ä¿æã§ããéåžžã®ãšã¯ã¹ããŒã¿ãŒã®ããã«èŠããåœã®ãšã¯ã¹ããŒã¿ãŒãäœæããŸããã
- ã¹ã¯ã©ãããå ¥ããšã圌ã¯äžæµã®èŒžåºæ¥è ã«è¡ããŸãã ããŒã¿ãååŸããŸãã
- å€ãã®ã€ã³ã¹ã¿ã³ã¹ãçæããŸãã 1ãã¹ã¯ã¬ã€ããŒã§ãããåºåã§100ãåŸããšããŸãããã
- ããŒã¿ããããã«å€æŽããŸãïŒã«ãŠã³ã¿ãŒãšã²ãŒãžã®ãã©ã¹ãã€ãã¹10ïŒ ã
- åçŽãªå€0ãŸãã¯1ã¯å€æŽãããŸãããå¿çããUPã¡ããªãã¯ãããå ŽåããµãŒãã¹ãå®è¡ãããŠãããã©ããã瀺ããŸãïŒyes-1ãŸãã¯no-0ããããŠ098 UPã®æå³ã¯ããŸãæç¢ºã§ã¯ãããŸããã
- æŽæ°ãå®éã®æŽæ°ã«å€æŽãããããã®éãè¡ã£ããããããšã¯ãããŸããã
- éåžžã®expfmt圢åŒã§ããŒã¿ãæäŸããã ãã§ãã
ããŒã¿ãããŒãããpromloadããŒã«ã ããŒã¿ã®èªã¿åãïŒ
- ç¬èªã®åœ¢åŒã®ãã¡ã€ã«ããèªã¿åãããšãã§ããŸã
- ãã¶ãããªã¢ãŒãèªã¿åããã
- äžéšã®ãšã¯ã¹ããŒã¿ãŒããèªã¿åãããšãã§ããŸã
ããŸããŸãªåœ¢åŒã§æžã蟌ã¿ãŸãã / dev / nullãå«ããŠãèªã¿åããã©ã®ããã«è¿ éã«æ©èœããããæ£ç¢ºã«ãã¹ãããå Žåã
çŸåšã§ã¯ãPromHouseã ãã§ãªãããªã¢ãŒãèªã¿åããŸãã¯Prometheusã䜿çšãããœãªã¥ãŒã·ã§ã³åãã®è² è·ãã¹ãããŒã«ã§ããããŸãã
ãã¹ãã§ã¯ãããã«ããã¯ã¯å€ãã®å Žåãé·æéããŒã¿ãçæããåœã®ãšã¯ã¹ããŒã¿ãŒã§ãã£ããããèªã¿åããã£ãã·ã¥ã远å ããŸãã ãããããã£ãã·ã¥ã§ããŸãã ããããéçŸå®çã«è¯ããã®ã«ããŠãã ããã ããããç§ãã¡ã¯é ããªããŸããã ã¹ãã¬ã¹ãã¹ããæ°æ¥åŸ ã€å¿ èŠã¯ãããŸããã§ããã
ããçš®ã®ãã£ã«ã¿ãªã³ã°ããã®å Žã§ãããçš®ã®å€æŽããã®å Žã§è¡ãã
TSDBã®ãã€ãã£ããµããŒãã APIçµç±ã§ã¯ãªãããã£ã¹ã¯äžã®ããŒã¿ããŒã¹ãæäœããããã
ç§»è¡ã®ç²ŸåºŠã«çŠç¹ãåœãŠãŸãã pmmdemo.percona.comïŒconnectedãé 眮ãããšããã¹ãŠã®ã¡ããªãã¯ãåãåããŸããã ããããã€ãã£ããªæ¹æ³ã§è¡ããšãPrometheusã¯TSDBãéãããã£ã¹ã¯ãããã¹ãŠã®æç³»åãçæããã€ã³ããã¯ã¹ãçæããŠããããã£ã³ã¯ãã¡ã€ã«ã«ã¯ããŒã«ããããããå®éã«ååšããããšãèªèããŸãã ãã®æç¹ã§ããã¹ãŠã暪ã«ãªããŸãã
åçŽãªã¢ãããŒãã¯ãæç³»åå šäœãååŸããå€ãããŒã¿ããæ°ããããŒã¿ã«èªã¿èŸŒãããšã§ãã ãã®ç¬éãåœŒã¯æšªã«ãªããŸãã ããªãã¯å察ãããå¿ èŠããããŸãã æåã«ãæ£èŠè¡šçŸã䜿çšããããã€ãã®ã¯ãšãªã§æç³»åãªã¹ããååŸããå¿ èŠããããŸãã ããšãã°ãAã§å§ãŸãæç³»åãæ¬¡ã«Bã§å§ãŸãæç³»åãæããŠãã ãããæ¬¡ã«ãæéã§ã¯ãªããã¡ããªãã¯ã«ãã£ãŠæ£ç¢ºã«èªã¿èŸŒã¿ãŸãã ããã¯éè«ççã§ããããããæ©èœããæ¹æ³ã§ãã ããªãããã®ãããªããšããããªããããã¯ãã¥ã¢ã³ã¹ã§ãã OOM Killerãããã§çºçããããšãããããšãããã¯ããªããåå ã§ããããšãããããŸãã
è² è·ãã¹ãã®çµæãã°ã©ãã¯ãããŸããã è² è·ãã¹ãã«ã¯å€ãã®æéãããããŸãããæ®å¿µãªããšã«ãèšå®ãšã©ãŒã®ããã«ãã¹ãŠãããŸããããŸããã§ããã ãããã£ãŠãçµæã¯ããŸããããŸããã§ããã
è² è·ãã¹ããè¡ããšãã«ãPerconaããã°ã«æžã蟌ã¿ãŸãã
ã°ã©ããªãã§çµæãèšãããšãã§ããŸãã é²é³ã¯ç·åœ¢ã§ããã èªæžã¯æ¥äžæããããŸãéããããŸããã§ããã çŸåšã®ããŒã¿ãèªãããšã¯ãç§ãã¡ã«ãšã£ãŠããŸãéèŠã§ã¯ãããŸããã èªã¿åããã³ãã䜿çšããŠé«éåã§ããŸãã read_recentãæå¹ã«ããŠãèªã¿åããæ¹åã§ããŸãã å€ãããŒã¿ã®å Žåãããã¯æ£åžžã«æ©èœããŸãã
人ã ã¯é·æä¿åãæãã§ããŸãã ãã®ãããªèŠæ±ããããŸãã PromConã§PromHouseã«ã€ããŠè©±ããŸããã ããã§ã¯éåžžã«ããããªãããã¯ã§ããã ãµãã¹ã¯ç©æ¥µçã«éçºããŠããŸãã
ãã§ã«å¯èœã§ãã ããã«ã¯è§£æ±ºçããããŸãã APIããããŸãã ããã€ãã®çµ±åããããŸãã ãã ãããããã¯ãã¹ãŠãã¡ã€ã«ã§ãã¡ã€ãã©ã€ãºããå¿ èŠããããŸãã çç£æºåã®æŽã£ããœãªã¥ãŒã·ã§ã³ã¯ãããŸããã
èŠã©ãããžã®ãªã³ã¯ã æåã®ãªã³ã¯ã¯ãPromHouseãªããžããªã§ãã 2çªç®ã®ãªã³ã¯ã¯ã圌ãç§»åããå¯èœæ§ãããå Žæã§ãã ä»ã1ã€ã®ãªããžããªã«ããã€ãã®ç°ãªããã®ããããŸããïŒ ããŸã坿¥ã«é¢é£ããŠããŸããã ãããã£ãŠããããã転éããå¿ èŠããããŸãã
ããã°ã«ã¯ãããã©ãŒãã³ã¹ã«é¢ããæ å ±ãšããã€ãã®ãã¥ãŒã¹ãå«ãŸããŸãã
質åïŒ
質åïŒInfluxDBã«é¢ããåã確èªããŸãããïŒ
åçïŒåœŒã¯ããŸãè¯ããããŸããã§ããã 圌ã¯ãã£ãšè¯ããªããŸããã InfluxDBãé ãããã©ãã©ã«ãªã£ãŠãããšããäºå®ã«é¢ããããããã¹ãŠã®ç©èªã¯ãå€ãããŒãžã§ã³ã«é¢ãããã®ã§ãã çŸåšã®ããŒãžã§ã³ã¯å®å®ããŠããŸãã èšããªãïŒ ãããéãåäœããããšã ããããããã¯å®å®ããŠåäœããŸãã ç§ã®æèŠã§ã¯ãInfluxDBã®é·æïŒ
- ãŸããInfluxDBã¯ãã®ãŸãŸäœ¿çšã§ãããããè¿ãã§äœããããå¿ èŠã¯ãããŸããã
- 次ã«ãClickHouseã§ã¯ãTSDBã§ã¯ãªãä»ã®ããŒã¿ããŒã¹ããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ãšåæ§ã«ãããäœ¿ãæ £ããã¯ãšãªèšèªã䜿çšã§ããŸãã InfluxDBã¯ãšãªèšèªã¯SQLã«äŒŒãŠããŸãã PromQLã§ã¯å°é£ãªåæãè¡ãããšãã§ããŸãã TimeScaleDBã䜿çšããå Žå-å®éã®SQLããããŸãã
質åïŒèšé²å°çšã®GraphiteMergeTreeãšã³ãžã³ãååŸãããŸããïŒ ã°ã©ãã衚瀺ãããå Žåãé·æä¿åã衚瀺ããããã«GrafanaãGraphiteã«èšå®ããå¿ èŠããããŸããïŒ
åçïŒã¯ãã Prometheusèªäœã«ããçµ±åã¯ãé²é³ã«å¯ŸããŠã®ã¿æ©èœããŸãã 圌ã¯ããŒã¿ãæžã蟌ãã ãã§ãã ãããã£ãŠãGrafanaããGraphiteã«ç§»åããŸãã
質åïŒãããŠãåœŒã¯æžããšãã«ã©ãã«ã倱ããŸããïŒ
åçïŒããããã©ãããããããããæ¿å ¥ããæ¹æ³ãããããæ¿å ¥ããå Žæãæç€ºããæ§æããããŸãã
èŽè¡ããã®æ å ±ïŒAvitoã¯ãPrometheusããGraphiteãŸã§ã®ã¬ã³ãŒãã£ã³ã°ã®ãœãªã¥ãŒã·ã§ã³ãäœæããŠãããšèšããŸããã
質åïŒèšé²ããããšã§ãé·æã¹ãã¬ãŒãžãµãŒããŒã§ãã¹ãŠãåé¡ãªããšããçµè«ã«éããŸããã
100äžã¡ããªãã¯ã®ãããŒããããŸãïŒ5åãŸãã¯15åïŒã raid 6 sata ?
: PMM â . downsampling c 14 1 . , . . . .
: IOPS ?
: .
:
: . , . , , .
: InfluxDB, InfluxDB?
: read_recent. , remote storage. InfluxDB . . read_recent , .
: , Prometheus. InfluxDB. Grafana Prometheus. Prometheus PromQL , InfluxDB?
: .
: Prometheus InfluxDB Grafana?
: . Prometheus 2.2 , .