LinuxãµãŒããŒã®ã·ã¹ãã 管çã®é·ãéã®ããçµãŠãçµ±èšã®åéãšç£èŠã®ããã®åºæ¬çãªããŒã«ãšããŠãããŸããŸãªå®è£ ãªãã·ã§ã³ãè©Šãããšã«æåããŸããã èªäœã®ã¹ã¯ãªããïŒããã³Webã¢ããªã±ãŒã·ã§ã³ãïŒãCactiãZabbixã¯ããã€ãæã確ç«ããããªãã·ã§ã³ã§ãããè¿å¹Žã§ã¯OkmeterãšPrometheusã«çœ®ãæããããŸããã ãã®èšäºã§ã¯ãaïŒååããŠãããOkmeterã®å°è±¡ãbïŒå°èŠæš¡ãªãã®ãã倧èŠæš¡ãªãã®ãããªãäºçŽ°ãªWebã€ã³ã¹ããŒã«ãŸã§ãOkmeterãããŸããŸãªãããžã§ã¯ãã§äœ¿çšããããšã«é¢ããããŒã ãªãŒããŒããã³Flantãšã³ãžãã¢ããã®ãã£ãŒãããã¯Kubernetesã¯ã©ã¹ã¿ãžã®ãã¹ãã£ã³ã°ïŒã
ã©ãããŠOkmeterãªã®ã§ããïŒ
ç¹å®ã®ãµãŒãã¹ïŒWebã¢ããªã±ãŒã·ã§ã³ã®æ£åžžãªæ©èœãããã¯ã¢ããã®å®è¡ãcronã¿ã¹ã¯ã®å®è¡ãªã©ïŒã®éäžç£èŠã«ãã£ãŠè£å®ããããéåžžã®Zabbixã»ã«ããã¹ãã€ã³ã¹ããŒã«ã®ä»£ããã«ããµãŒãããŒãã£ãœãªã¥ãŒã·ã§ã³-Okmeter-ã®éžæã¯ããã«ã¯èµ·ãããŸããã§ããã éçšããã»ã¹ã®ãã®ãããªéèŠãªéšåã§ãããééã£ãæã«æž¡ããããšã«åæããããã«ã¯ãçµ±èšãåéããç£èŠã®äž»èŠéšåã«éç¥ããããã«ãããããã®ãµããã³ãé£ã¹ãªããã°ãªããŸããã§ããã ãã ããèç©ããããšãã¯ããã®åé¡ãå®å šã«è§£æ±ºãã2ã€ã®æ¹æ³ããããšããç解ã«ã€ãªãããŸããïŒéçºãè¡ãããèª å®ãªæ®å¿µãªããšã«ãªãŒãã³ãœãŒã¹è£œåã§ã¯ãªããæ¬åœã«æ·±å»ãªèŠä»¶ãæå±ãããŠããæ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãä¿¡é ŒããæäœéãSLAã«èšé²ããã眰åã¯ãã®å質ã«äŸåããæ倧ã§-ãµãŒãã¹ã®ã¬ãã«ãšè©å€å šè¬ã«äŸåããŸãïŒã
å°èŠæš¡ãªã·ã¹ãã éçºéšéããããŸãããæ¬æ Œçãªç£èŠã·ã¹ãã ã®èŠæš¡ã§ç¬èªã®ã·ã¹ãã ãäœæïŒããã³ææ°ã®ç¶æ ã«ç¶æïŒããããšã¯ãåªå é äœã®é«ã掻åã§ã¯ãããŸããïŒç°¡åã«èšãã°ãæéãšè²»çšãããããŸãïŒã ãããã£ãŠã1幎åã«2çªç®ã®ãã¹ãéžæãããŸãããã決å®ãåŸæããããšã¯ãããŸããã ãªãå ·äœçã«Okmeterãªã®ãïŒ ç°¡åãªçãã¯ãããŸããããäžè¬çã«èšãã°ãæäŸãããæ©äŒãšä¿¡é Œæ§ã®ã¬ãã«ãé©åãªè²¡åç¶æ³ãååã®èŠéãïŒç¹ã«ããªã¯ãšã¹ãã®äœæ¥ãå®äºããå¯èœæ§ïŒãæ°ã«å ¥ããŸããã
ãã®éžæã¯å®éã«ã©ã®ããã«åœ¹ç«ã¡ãŸãããïŒ è¡£æã§äººã ã«äŒãã®ãæ £ç¿ã§ããå Žåã管çè ã¯ãæ§æãšãããªãã¡ã³ããã³ã¹ã®å©äŸ¿æ§ã®ããã«ããŒã«ã«äŒããŸãã Okmeterã®å Žåããšã³ãžãã¢ã¯æ¬¡ã®ããã«èª¬æããŸãã
ãã¡ããªãã¯ïŒããã³ã°ã©ãïŒã¯ç°¡åã«è¿œå ã§ããŸããOkmeterçšã«JSONãæºåããã ãã§ãã 人çã®ç°¡çŽ åãšã¯ãZabbixã®ã€ã³ã¹ããŒã«ãšã¡ã³ããã³ã¹ãåæ¢ããããšãã»ããã¢ããã«æéã浪費ããªãããšãäžéšã®ã°ã©ãã£ãã¯ã¹ãçªç¶æç»ãåæ¢ããããšãå¿ããŠããããšã§ãïŒããé »ç¹ã«æ²ãã£ãæãéé£ãããïŒ ãœãããŠã§ã¢ãæ€åºããããšãåºæ¬çãªã¢ã©ãŒããèªåçã«è¿œå ãããŸã-ããã¯éåžžã«äŸ¿å©ã§ããç£èŠã®è¿œå ãå¿ããªãã§ãã ããã
ãZabbixã§ã¯ããã³ãã¬ãŒããèªåã§äœæããæ¬åœã«å¿ èŠãªãã®ãããŸããŸãªãã³ãã¬ãŒãããåéããªããã°ãªããŸããã§ããã -ãããŠããã«æãããŸããã
ã幞ããªããšã«ã1ã€ã®Okmeterã€ã³ã¹ããŒã«ããããžã§ã¯ãå ã®ä»»æã®ããŒã¿ããŒã¹ã«æ¥ç¶ã§ããŸãã ç§ãããã«AWSã§RDSãç«ã¡åŸçããŸãããã
ãç§ãã¡ãšã¯ã©ã€ã¢ã³ãã«ãšã£ãŠãããŒã¿ããŒã¹ã¡ããªãã¯ãšnginxã¯éåžžã«ææšçã§ããããã䜿çšãããŸãã æã£ãŠããå¿ èŠããããŸãã Zabbixã§ã¯ããã®ãããªã€ããžã¯ãæãããã§ããã
çžäºäœçš
ãããã®æè¡çã¢ã¡ããã£ã®éèŠæ§ã«ãããããããããããå¯äžã®æ±ºå®èŠå ã§ã¯ãããŸããã§ããã ç§ãã¡ã®ååã®åºæ¬çãªéèŠæ§ã¯ãã³ã¢æŽ»åã®çµæãçžäºã«æçã«äº€æããæ©äŒã«ãã£ãŠããããããŸããã
FlantåŽããèŠããšã次ã®ããã«ãªããŸãã
- äžéšã®ãããžã§ã¯ãã§ã¯ãæšæºå€ã®åé¡ããããŸããã
- ãããã®ã°ã©ãã«åºã¥ããŠããããç¹å®ããããšãïŒå®å šã«/äœç³»çã«ïŒç解ããããšãã§ããŸããã§ããã
- 次åãã©ã®ãããªè¿œå ã®ç£èŠæ©èœïŒã©ã®ããŒã¿ãã©ããã©ã®ãããªåœ¢åŒïŒãç¶æ³ïŒã€ãŸããè¡åãšç解ïŒãæ¹åããã®ã«åœ¹ç«ã€ããåæãããã®æ å ±ãOkmeterã«æž¡ããŸããã
- ãã¹ãŠã®ãããžã§ã¯ãã«åºãã£ãŠããæ¹åãåããŸããã
ãã®æ¹æ³ã§ã€ãã³ããè€æ°åå±éãããSphinxãphp-fpmãPostfixãªã©ã®ãµãŒãã¹ã®åäœã®ç£èŠã«è¿œå ã§ããããã«ãªããŸãã...
ä»ã®çžäºäœçšã·ããªãªããããŸãã-ããšãã°ããšã³ãžãã¢ã®å 端ã§ãMySQLã®äžéšã®ããªã¬ãŒã圹ã«ç«ããªãããšãå€æããåãMySQLãLinux cgroupãªã©ã®ãã©ã°ã€ã³ã§å€æ°ã®ãã°ãçºèŠãããä¿®æ£ãããŸããã
ããã«ã¯Okmeterã«ãšã£ãŠæãããªå©ç¹ããããŸãããµãŒãã¹éçºè ã¯ãå€æ°ã®ç°ãªãã¯ã©ã€ã¢ã³ããšç¹å®ã®åé¡ã«é¢ããçžè«ã®ãããã§ãç¥èããŒã¹ãç©æ¥µçã«æ¡å€§ããŠããŸãã ããããæè¡é¢ã«æ»ããŸããOkmeterãæ£ç¢ºã«ã©ã®ããã«äœ¿çšããäœãç¹ã«éèŠããŸããïŒ
æäœ
1.äžè¬çãªèšºæ
æåã®æãæçœãªã¢ããªã±ãŒã·ã§ã³ã¯ãLinuxãµãŒããŒã®æ¯æ¥ã®ã¡ã³ããã³ã¹ã§ãããã®ããã«ã次ã®ãããªæ©èœãç¹ã«ç©æ¥µçã«äœ¿çšããŠããŸãã
- ããã»ã¹å¥ã®ã·ã¹ãã ãªãœãŒã¹ïŒããã»ããµããã£ã¹ã¯ãã¡ã¢ãªïŒã®è² è·ã®ã°ã©ããããã³èŠæ±å¥ã®ãããïŒåŸè ã¯äºåŸã®äºæ ã®èª¿æ»ã«éåžžã«éèŠã§ã-ããšãã°ãããããã»ã¹ã1æéåã«ãã¹ãŠã®ã¡ã¢ãªãæ¶è²»ããããšãã¯ã£ãããšããããŸãïŒ;
- nginxãã£ãŒãããµãŒããŒã¬ã¹ãã³ã¹ã¿ã€ã ãã£ãŒããããŸããŸãªURLã®ãªã¯ãšã¹ããã£ãŒãïŒGETãã©ã¡ãŒã¿ãŒãªãã§ã°ã«ãŒãåïŒ;
- ããŒãããã³ã¢ãã¬ã¹ã«ããæ¥ç¶ã®çµ±èšã
- ç§ãã¡ã®ãšã³ãžãã¢ã®äžäººãèšã£ãããã«ãããŒã¿ããŒã¹ã®äžäœã¯ãšãªã¯ãç¥ãã§ãã
å³äžã®ã°ã©ãã®å¹Žéœ¢ïŒãã©ã³ã¶ã¯ã·ã§ã³æéïŒã®æ¥å¢ã¯ãã€ã³ããã¯ã¹ãªãã§ããŒã¿ããŒã¹ã埩å ããçµæã§ãã
2.ç£æ»
Okmeterã®ãã1ã€ã®äžè¬çãªäœ¿çšæ³ã¯ãæ°ãããããžã§ã¯ãã®ç£æ»ã§ãã ãµãŒãã¹ããŸã éå§ããŠããããäºåã®NDAã«çœ²åããã ãã§ãã¯ã©ã€ã¢ã³ãã«ãã¹ãŠã®ãµãŒããŒã§å®è¡ããã³ãã³ããçºè¡ããŸãã çµæ-èªåãµãŒãã¹æ€åºã䜿çšããŠååŸãããå€ãã®ã¡ããªãã¯ã衚瀺ãããŸãã
ãããã£ãŠãçµ±èšã¯å€æ°ã®ãµãŒããŒã«ãè¿ éã«è¿œå ãããçµæã®æšæºã°ã©ãã«ãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ç¶æ ãç解ããæé©å/éçºã®æåã®ç®æšã圢æããã®ã«åœ¹ç«ã€å€ãã®ã€ã³ãžã±ãŒã¿ãŒãããã«èŠãããšãã§ããŸãïŒ
- ãµãŒããŒäžã®ããã»ã¹ãšæ¶è²»ããããªãœãŒã¹ã®éã
- DBMSãšWebãµãŒããŒã®è² è·
- ããŒã¿ããŒã¹ãµã€ãºïŒElasticsearchã«é¢é£ïŒ;
- ...ãªã©
3.ã³ã³ãã
Kubernetesã¯ã©ã¹ã¿ãŒã®ç¹å®ã®æäœã®ã³ã³ããã¹ãã§ã¯ãOkmeterã«ã¯ããã»ã©å€ãã®ãã®ããããŸããã ããã«ãããããããã³ã³ããã«ãããªãœãŒã¹æ¶è²»ã®ã°ã©ãïŒãŸãã¯KubernetesãæäŸããŸãïŒã¯ãK8ã«å€æ°ã®ã³ã³ãããå±éãããŠããå Žåã®docker
docker stats
åºåãåé¡ã§ãããããç¹ã«é¢é£æ§ããããŸãã
aïŒã³ã³ããã«ãããªãœãŒã¹ã®æ¶è²»
bïŒãããã«ãããªãœãŒã¹ã®æ¶è²»
Kubernetesã®å®å šãµããŒããç»å Žãå§ããã°ããã§ãããããK8åºæã®ã€ã³ãžã±ãŒã¿ãŒãç£èŠããããã«ã Prometheus moreã䜿çšããŠããŸã ã ãããããã®æ¹åã§ã®Okmeterã®èŠéãã«ã€ããŠãç¥ãããŠããŸã...
OkmeterãšKubernetes
FlantãšOkmeterå šäœã®çžäºäœçšã«ã€ããŠã¯ïŒäžèšåç §ïŒ ãå ±åå©çã®ç¹å®ã®æãæ¿ããé åã§ããKubernetesãæå³çã«çç¥ããŸããã Okmeterã®ãšã³ãžãã¢ã¯ãKubernetesã®ç¥èãšçµéšã䜿çšããŠããµãŒãã¹ã§K8ã¢ãã¿ãªã³ã°ãéçºããŸãã
ãŸã第äžã«ããããã¯ã©ã€ãã¯ã©ã€ã¢ã³ãã§ããã€ãŸããæ¬çªç°å¢ã§äœ¿çšãããK8ã®ã¯ã©ã¹ã¿ãŒã§ãã ãã®ãããªåã€ã³ã¹ããŒã«ã¯Okmeterã«ãšã£ãŠæçšãªããŒã¿ãœãŒã¹ã§ãããKubernetesãå®éã«ã©ã®ããã«æ©èœãããããŠãŒã¶ãŒã«ãšã£ãŠæ¬åœã«éèŠãªã¢ããªã±ãŒã·ã§ã³ã®è©³çŽ°ãšåé¡ã確èªã§ããŸãã
第äºã«ãïŒãã®ãããªåŒã³åºããçºçãããšãïŒKubernetesãã©ã®ããã«æ§æãããŠããããç¹å®ã®ãŠãŒã¶ãŒãã©ã®ããã«å±éãããããã©ã®ããã«ççºããããïŒã©ã®åé¡ãååšããæåã«äœãèŠããïŒã«ã€ããŠè©±ããŸãã
ããã«ãããOkmeterã¯Kubernetesã®ç¥èãåäžãããã ãã§ãªãããã®ã·ã¹ãã ãåžå Žå šäœã§ææã§ããããšã確èªããããšãã§ããŸããã ãåŸæ©åå ãã®å°é家ã®ååšã¯ãäŒç€Ÿã䜿çšããŠããããã°ããŒãã£ã³ã°ã¢ãããŒãã«å¯Ÿå¿ããç¬èªã®ããŒãºã«åãããŠK8ãè¿ éã«å®è£ ããããšã«ã€ãªãã ããµãŒãã¹èªäœã§KubernetesããµããŒãããäœæ¥ã«ãè²¢ç®ããŸããã
ãã®ãµããŒãã§äœãçŽæãããŸãã
- K8ã§èµ·åããããµãŒãã¹éã®ã¯ã©ã¹ã¿ãŒãªãœãŒã¹ã®åæ£ã ãã¹ãŠã®ã¡ããªãã¯ã¯ãK8sãšã³ãã£ãã£ã®ã³ã³ããã¹ãã§è¡šç€ºã§ããŸãïŒ å±éããç¹å®ã®çåºã®ç¹å®ã®ã³ã³ãããŸã§ã
- ãµãŒãã¹ãªãœãŒã¹ã®å¶éã䜿ãæããããã®èªåããªã¬ãŒã
- ãµãŒãã¹ã®äœæ¥ã«ãããåé¡ïŒã³ã³ããã®åèµ·åãå¿ èŠãªæ°ã®ã€ã³ã¹ã¿ã³ã¹ãèµ·åã§ããªããªã©ã
- ãã£ãã·ãã£ãã©ã³ãã³ã°ïŒãã§ã«ãäºçŽããããŠãããªãœãŒã¹ã®æ°ãæ®ãããŠãããªãœãŒã¹ã®æ°ã
- K8sã³ã³ããŒãã³ãã®ã¹ããŒã¿ã¹ïŒetcdãdnsãapiserverãªã©ã
äž»ãªã¢ã€ãã¢ã¯ãFluantaã®ãšã³ãžãã¢ããã®æšå¥šäºé ã«åºã¥ããŠäœæãããKubernetesã®åºæ¬èšå®ã®ç¶ç¶çãªç£æ»ã§ãã ãããŠãã¡ãããDaemonSetã®åœ¢åŒã§OkmeterãšãŒãžã§ã³ãããããã€ãããŸãã
説æãããŠããæ©èœã¯æ¢ã«ããŒã¿ãã¹ãã«ç»å Žãå§ããŠããïŒè©³çŽ°ã«ã€ããŠã¯NikolaySivkoã«ãåãåãããã ãã ïŒ ã9æãŸã§ã«å®å šãªãªãªãŒã¹ãäºå®ãããŠããŸãã
ãŸãšã
OkmeterãšFlantã®ã³ã©ãã¬ãŒã·ã§ã³ã®å©çšå¯èœãªçµæã¯ãå ±çãšçžä¹å¹æã§ããããžãã¹ã§éèŠãªåœ¹å²ãæãããŠããïŒãã ããå éšéçºã«ã¯ååã§ã¯ãªãïŒæ¢æã®ããŒã«ãå ¥æããŸãããç¹å®ã®æè¡çåé¡ã«é¢ããç¥èã®è£å ãšå°éçãªæ¯æŽã åæã«ãååã®éããéåžžã®ããããžã§ã¯ãããKubernetesã¯ã©ã¹ã¿ãŒãžã®éçšãããã³å¯Ÿå¿ããæ¹åãžã®Okmeterã®éçºã®åŸåããããŸãã
PS
ããã°ãã芧ãã ããã
- â Kubernetesã®ããã¡ããŠã¹ãªãã¬ãŒã¿ãŒã®æäœã®ããã€ã¹ãšã¡ã«ããºã â;
- â Kubernetesã®Prometheusã§15åã§ç£èŠ â;
- ã ãã©ãã¯ãã©ã€ããŒã®ããã«ãªã³ã©ã€ã³ã¹ãã¢ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãæºåãã10ã®æçœãªã¹ããã ã;
- ã å°èŠæš¡ãããžã§ã¯ãã§ã®Kubernetesã§ã®çµéš ã ïŒãããªã¬ããŒããKubernetesã®æè¡ããã€ã¹ã®çŽ¹ä»ãå«ãïŒ ã
- ã æé ãªäŸ¡æ Œã®ãµãŒãã¹ãšããŠKubernetesã䜿çšããã€ã³ãã©ã¹ãã©ã¯ã㣠ãã