ç§ã®ååã¯ã¢ã³ãã³ã»ãããªã³ã§ãã ç§ã¯ãã€ãã¯ãããžãŒã»ã³ã¿ãŒã§ã·ã¹ãã 管çãããŠããŸãã XNUMX ãæåãç§ãã¡ã®äŒæ¥ã«ã³ãã¡ã¬ã³ã¹ãçµäºããèç©ãããçµéšãåžã® IT ã³ãã¥ããã£ãšå ±æããŸããã Web ã¢ããªã±ãŒã·ã§ã³ã®ç£èŠã«ã€ããŠè©±ããŸããã ãã®ææã¯ããã®ããã»ã¹ããŒãããæ§ç¯ããªããžã¥ãã¢ãŸãã¯äžçŽã¬ãã«ã察象ãšããŠããŸãã
ããããç£èŠã·ã¹ãã ã®åºç€ãšãªãã®ã¯ãããžãã¹äžã®åé¡ã解決ããããšã§ãã ç£èŠã®ããã®ç£èŠã¯èª°ã«ãšã£ãŠãèå³ããããŸããã ããžãã¹ã¯äœãæãã§ããã®ãïŒ ãã¹ãŠããšã©ãŒãªãè¿ éã«æ©èœããããã«ããŸãã äŒæ¥ã¯ãç§ãã¡èªèº«ããµãŒãã¹ã®åé¡ãç¹å®ããã§ããã ãæ©ã解決ã§ãããããç©æ¥µçã«è¡åããããšèããŠããŸãã å®éããããã¯ãç§ãæšå¹Žããã顧客ã®ãããžã§ã¯ãã§è§£æ±ºããåé¡ã§ãã
ãããžã§ã¯ãã«ã€ããŠ
ãã®ãããžã§ã¯ãã¯ãåœå æ倧ã®ãã€ã€ã«ã㣠ããã°ã©ã ã® 14 ã€ã§ãã ããŒãã¹ã«ãŒããªã©ã®ããŸããŸãªããŒã±ãã£ã³ã°ããŒã«ãéããŠãå°å£²ãã§ãŒã³ã®è²©å£²é »åºŠã®åäžãæ¯æŽããŸãã åèšã§ããã®ãããžã§ã¯ãã«ã¯ XNUMX å°ã®ãµãŒããŒã§å®è¡ããã XNUMX åã®ã¢ããªã±ãŒã·ã§ã³ãå«ãŸããŠããŸãã
ã€ã³ã¿ãã¥ãŒã®éçšã§ã管çè ã Web ã¢ããªã±ãŒã·ã§ã³ã®ç£èŠã«åžžã«æ£ããåãçµãã§ããããã§ã¯ãªãããšã«ç¹°ãè¿ãæ°ã¥ããŸããã管çè ã®å€ãã¯äŸç¶ãšããŠãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ã¡ããªã¯ã¹ã«çŠç¹ãåœãŠãŠããããµãŒãã¹ãç£èŠããããšããããŸãã
ç§ã®å Žåã顧客ã®ç£èŠã·ã¹ãã ã¯ä»¥å㯠Icinga ã«åºã¥ããŠããŸããã äžèšã®åé¡ã¯ãŸã£ãã解決ãããŸããã§ããã å€ãã®å Žåãã¯ã©ã€ã¢ã³ãèªèº«ãåé¡ã«ã€ããŠç§ãã¡ã«ç¥ãããŠããŸããããå€ãã®å Žåãçç±ãçªãæ¢ããã®ã«ååãªããŒã¿ããªãã£ãã ãã§ãã
ããã«ããã以äžã®éçºãç¡é§ã§ããããšãæ確ã«ç解ãããŠããŸããã ã¢ã€ã·ã³ã¬ã«è©³ããæ¹ãªãåãããšæããŸãã ããã§ãç§ãã¡ã¯ãã®ãããžã§ã¯ãã®ããã« Web ã¢ããªã±ãŒã·ã§ã³ç£èŠã·ã¹ãã ãå®å šã«åèšèšããããšã«ããŸããã
ããã¡ããŠã¹
ç§ãã¡ã¯ XNUMX ã€ã®äž»èŠãªææšã«åºã¥ã㊠Prometheus ãéžæããŸããã
- èšå€§ãªæ°ã®å©çšå¯èœãªã¡ããªã¯ã¹ã ç§ãã¡ã®å Žåããããã¯60äžåãããŸãã ãã¡ããããããã®å€§éšå (ããããçŽ 95%) ã¯äœ¿çšãããŠããªãããšã«æ³šæããŠãã ããã ãã®äžæ¹ã§ãã©ããæ¯èŒçå®äŸ¡ã§ãã ç§ãã¡ã«ãšã£ãŠãããã¯ä»¥åã«äœ¿çšãããŠãã Icinga ãšã¯å¯Ÿæ¥µã§ãã ãã®äžã§ãã¡ããªã¯ã¹ã®è¿œå ã¯ç¹ã«é¢åã§ãããæ¢åã®ã¡ããªã¯ã¹ã¯é«äŸ¡ã§ãã (ãã©ã°ã€ã³ã®ãœãŒã¹ ã³ãŒããèŠãŠãã ãã)ã ã©ã®ãã©ã°ã€ã³ã Bash ãŸã㯠Python ã®ã¹ã¯ãªããã§ããããã®èµ·åã«ã¯æ¶è²»ããããªãœãŒã¹ã®ç¹ã§ã³ã¹ããããããŸãã
- ãã®ã·ã¹ãã ã¯æ¯èŒçå°éã®ãªãœãŒã¹ãæ¶è²»ããŸãã ãã¹ãŠã®ã¡ããªã¯ã¹ã«ã¯ã600 MB ã® RAMã15 ã³ã¢ã® XNUMX%ãæ°åã® IOPS ã§ååã§ãã ãã¡ãããã¡ããªã¯ã¹ ãšã¯ã¹ããŒã¿ãŒãå®è¡ããå¿ èŠããããŸããããããã¯ãã¹ãŠ Go ã§æžãããŠãããããã»ã©é»åãæ¶è²»ããŸããã çŸä»£ã®çŸå®ã«ãããŠããããåé¡ã«ãªããšã¯æããŸããã
- Kubernetes ã«ç§»è¡ããæ©èœãæäŸããŸãã 顧客ã®èšç»ãèæ ®ãããšãéžæã¯æããã§ãã
ELK
以åã¯ããã°ãåéãŸãã¯åŠçããŠããŸããã§ããã æ¬ ç¹ã¯èª°ã®ç®ã«ãæããã§ãã ELK ãéžæããã®ã¯ããã®ã·ã¹ãã ã®äœ¿çšçµéšããã§ã«ãã£ãããã§ãã ããã«ã¯ã¢ããªã±ãŒã·ã§ã³ ãã°ã®ã¿ãä¿åãããŸãã äž»ãªéžæåºæºã¯ãå šææ€çŽ¢ãšãã®é床ã§ããã
ã¯ãªãã¯ããŠã¹
åœåãéžæè¢ã¯ InfluxDB ã«ãããŸããã Nginx ãã°ãpg_stat_statements ããã®çµ±èšãåéããPrometheus ã®å±¥æŽããŒã¿ãä¿åããå¿ èŠãããããšã«æ°ã¥ããŸããã Influx ã¯å®æçã«å€§éã®ã¡ã¢ãªãæ¶è²»ãå§ããŠã¯ã©ãã·ã¥ãããããç§ãã¡ã¯æ°ã«å ¥ããŸããã§ããã ãŸããã¯ãšãªãremote_addrã§ã°ã«ãŒãåãããã®ã§ããããã®DBMSã§ã¯ã¿ã°ã®ã¿ã§ã°ã«ãŒãåããŠããŸãã ã¿ã°ã¯é«äŸ¡ (ã¡ã¢ãª) ã§ããããã®æ°ã¯æ¡ä»¶ä»ãã§å¶éãããŸãã
ç§ãã¡ã¯åã³æ玢ãå§ããŸããã å¿ èŠãªã®ã¯ããªãœãŒã¹æ¶è²»ãæå°éã«æããã§ããã°ãã£ã¹ã¯äžã®ããŒã¿å§çž®ãåããåæããŒã¿ããŒã¹ã§ããã
Clickhouse ã¯ãããã®åºæºããã¹ãŠæºãããŠãããç§ãã¡ã¯ãã®éžæãåŸæããããšã¯ãããŸããã ç°åžžãªéã®ããŒã¿ã¯æžã蟌ãŸããŸãã (æ¿å ¥æ°ã¯ XNUMX åããããããçŽ XNUMX åã§ã)ã
NewRelic
NewRelic ã¯ãã客æ§ã®éžæã§ãã£ããããæŽå²çã«åœç€ŸãšååããŠããŸããã APMãšããŠäœ¿çšããŠããŸãã
ã¶ããã¯ã¹
åœç€Ÿã§ã¯ãããŸããŸãª API ã®ãã©ã㯠ããã¯ã¹ãç£èŠããããã«ã®ã¿ Zabbix ã䜿çšããŠããŸãã
ã¢ãã¿ãªã³ã°ã¢ãããŒãã®å®çŸ©
ç§ãã¡ã¯ã¿ã¹ã¯ãå解ããããã«ãã£ãŠã¢ãã¿ãªã³ã°ãžã®ã¢ãããŒããäœç³»åããããšèããŸããã
ãããè¡ãããã«ãã·ã¹ãã ã次ã®ã¬ãã«ã«åå²ããŸããã
- ããŒããŠã§ã¢ãš VMSã
- ãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ;
- ã·ã¹ãã ãµãŒãã¹ããœãããŠã§ã¢ã¹ã¿ãã¯ã
- å¿çš;
- ããžãã¹ã®è«çã
ãã®ã¢ãããŒãã䟿å©ãªçç±:
- åã¬ãã«ã®äœæ¥ã®è²¬ä»»è ã誰ã§ããããããã£ãŠããã®ã§ãããã«åºã¥ããŠã¢ã©ãŒããéä¿¡ã§ããŸãã
- ã¢ã©ãŒããæå¶ãããšãã«ãã®æ§é ã䜿çšã§ããŸããä»®æ³ãã·ã³å šäœãå©çšã§ããªããšãã«ããŒã¿ããŒã¹ãå©çšã§ããªãããšã«é¢ããã¢ã©ãŒããéä¿¡ããã®ã¯å¥åŠã§ãã
ç§ãã¡ã®ã¿ã¹ã¯ã¯ã·ã¹ãã ã®éçšã«ãããéåãç¹å®ããããšã§ãããããã¢ã©ãŒã ã«ãŒã«ãäœæããéã«æ³šæãæã䟡å€ã®ããç¹å®ã®ã¡ããªã¯ã¹ ã»ãããåã¬ãã«ã§åŒ·èª¿ããå¿ èŠããããŸãã 次ã«ããVMSããããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ããããã³ãã·ã¹ãã ãµãŒãã¹ããœãããŠã§ã¢ ã¹ã¿ãã¯ãã®ã¬ãã«ãèŠãŠã¿ãŸãããã
ä»®æ³ãã·ã³
ãã¹ãã£ã³ã°ã«ãããããã»ããµããã£ã¹ã¯ãã¡ã¢ãªããããã¯ãŒã¯ãå²ãåœãŠãããŸãã æåã® XNUMX ã€ã¯åé¡ããããŸããã ãããã£ãŠãã¡ããªã¯ã¹ã¯æ¬¡ã®ãšããã§ãã
CPU ã®çé£æé - Amazon ã§ä»®æ³ãã·ã³ (t2.micro ãªã©) ãè³Œå ¥ããå Žåãããã»ããµ ã³ã¢å šäœãå²ãåœãŠãããã®ã§ã¯ãªãããã®æéã®å²ãåœãŠã ããå²ãåœãŠãããããšãç解ããå¿ èŠããããŸãã ãããŠããã䜿ãæãããšãããã»ããµãŒã¯ããªããã奪ãããŸãã
ãã®ææšã䜿çšãããšããã®ãããªç¬éã远跡ããææ決å®ãè¡ãããšãã§ããŸãã ããšãã°ãæéããã£ãšé«ãããããããã¯ã°ã©ãŠã³ã ã¿ã¹ã¯ãš API ãªã¯ãšã¹ãã®åŠçãå¥ã®ãµãŒããŒã«åæ£ãããããå¿ èŠããããŸãã?
IOPS + CPU iowait æé - äœããã®çç±ã§ãå€ãã®ã¯ã©ãŠã ãã¹ãã£ã³ã°ã¯åå㪠IOPS ãæäŸããªããšãã眪ãç¯ããŸãã ããã«ãIOPS ãäœãã¹ã±ãžã¥ãŒã«ã¯åœŒãã«ãšã£ãŠè°è«ã«ãªããŸããã ãããã£ãŠãCPU iowait ãåéãã䟡å€ããããŸãã ãã® XNUMX ã€ã®ã°ã©ã (IOPS ãäœããI/O åŸ æ©ã倧ãã) ã䜿çšãããšããã¹ãã£ã³ã°ãšå¯Ÿè©±ããŠåé¡ã解決ã§ããŸãã
ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã
ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ã¡ããªã¯ã¹:
- 䜿çšå¯èœãªã¡ã¢ãªã®é (%)ã
- ã¹ã¯ãã䜿çšã¢ã¯ãã£ããã£: vmstat swapinãswapout;
- ãã¡ã€ã«ã·ã¹ãã äžã®å©çšå¯èœãª i ããŒãã®æ°ãšç©ºãé å (%)
- å¹³åè² è·ã
- tw ç¶æ ã®æ¥ç¶ã®æ°ã
- conntrack ããŒãã«ã®æºæ¯ã
- ãããã¯ãŒã¯ã®å質ã¯ãss ãŠãŒãã£ãªãã£ã§ãã iproute2 ããã±ãŒãžã䜿çšããŠç£èŠã§ããŸãããã®åºåãã RTT æ¥ç¶ã®ã€ã³ãžã±ãŒã¿ãŒãååŸããå®å ããŒãããšã«ã°ã«ãŒãåããŸãã
ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã¬ãã«ã«ããããã»ã¹ãªã©ã®ãšã³ãã£ãã£ããããŸãã ã·ã¹ãã å ã§ããã®éçšã«ãããŠéèŠãªåœ¹å²ãæããäžé£ã®ããã»ã¹ãç¹å®ããããšãéèŠã§ãã ããšãã°ãè€æ°ã® pgpool ãããå Žåã¯ãããããã® pgpool ã®æ å ±ãåéããå¿ èŠããããŸãã
äžé£ã®ã¡ããªã¯ã¹ã¯æ¬¡ã®ãšããã§ãã
- CPU;
- ã¡ã¢ãªã¯äž»ã«åžžé§ããŸãã
- IO - ã§ããã° IOPS ã§ã
- FileFd - éããŠå¶éããŸãã
- é倧ãªããŒãžé害 - ããã«ãããã©ã®ããã»ã¹ãã¹ã¯ãããããŠããããç解ã§ããŸãã
ãã¹ãŠã®ç£èŠã Docker ã§ãããã€ããAdvisor ã䜿çšããŠã¡ããªã¯ã¹ ããŒã¿ãåéããŸãã ä»ã®ãã·ã³ã§ã¯ãããã»ã¹ ãšã¯ã¹ããŒã¿ãŒã䜿çšããŸãã
ã·ã¹ãã ãµãŒãã¹ããœãããŠã§ã¢ã¹ã¿ãã¯
åã¢ããªã±ãŒã·ã§ã³ã«ã¯ç¬èªã®ç¹æ§ããããç¹å®ã®ææšã»ãããéžã³åºãã®ã¯å°é£ã§ãã
ãŠãããŒãµã«ã»ããã¯æ¬¡ã®ãšããã§ãã
- ãªã¯ãšã¹ãã¬ãŒãã
- ééãã®æ°;
- åŸ ã¡æéã
- 飜åã
ãã®ã¬ãã«ã§ã®ç£èŠã®æãé¡èãªäŸã¯ãNginx ãš PostgreSQL ã§ãã
ç§ãã¡ã®ã·ã¹ãã ã§æãè² è·ã®é«ããµãŒãã¹ã¯ããŒã¿ããŒã¹ã§ãã 以åã¯ãããŒã¿ããŒã¹ãäœãããŠããã®ããç解ããã®ã«èŠåŽããããšããããããŸããã
ãã£ã¹ã¯ã«é«ãè² è·ãããã£ãŠããããšãããããŸããããé ããã°ã«ã¯å®éã«ã¯äœã瀺ãããŠããŸããã§ããã ãã®åé¡ã¯ãã¯ãšãªçµ±èšãåéãããã¥ãŒã§ãã pg_stat_statements ã䜿çšããŠè§£æ±ºããŸããã
管çè ã«å¿ èŠãªã®ã¯ããã ãã§ãã
èªã¿åãããã³æžã蟌ã¿ãªã¯ãšã¹ãã®ã¢ã¯ãã£ããã£ã®ã°ã©ããäœæããŸãã
ãã¹ãŠãã·ã³ãã«ãã€æ確ã§ãããããã®ãªã¯ãšã¹ãã«ã¯ç¬èªã®è²ããããŸãã
åæ§ã«å°è±¡çãªäŸã¯ãNginx ãã°ã§ãã ãããã解æããããå¿ éåã®ãªã¹ãã«æããããã人ãã»ãšãã©ããªãã®ãäžæè°ã§ã¯ãããŸããã æšæºåœ¢åŒã¯ããŸãæçã§ã¯ãªããããæ¡åŒµããå¿ èŠããããŸãã
å人çã«ãrequest_timeãupstream_response_timeãbody_bytes_sentãrequest_lengthãrequest_id ãè¿œå ããå¿çæéãšãšã©ãŒæ°ãããããããŸãã
å¿çæéãšãšã©ãŒæ°ã®ã°ã©ããäœæããŸãã èŠããŠïŒ ããžãã¹ã¿ã¹ã¯ã«ã€ããŠè©±ããŸãããïŒ ãšã©ãŒãªãè¿ éã«è¡ãã«ã¯? ãããã®åé¡ã«ã€ããŠã¯ãXNUMX ã€ã®ã°ã©ãã§ãã§ã«èª¬æããŸããã ãŸãããããã䜿çšããŠå€åäžã®ç®¡çè ã«é»è©±ããããããšãã§ããŸãã
ããããäºä»¶ã®åå ãè¿ éã«æé€ãããšãããããäžã€ã®åé¡ãæ®ã£ãŠããŸãã
ã€ã³ã·ãã³ãã®è§£æ±º
åé¡ã®ç¹å®ãã解決ãŸã§ã®ããã»ã¹å šäœã¯ãããã€ãã®ã¹ãããã«åããããšãã§ããŸãã
- åé¡ãç¹å®ããã
- è·å管çè ãžã®éç¥ã
- ã€ã³ã·ãã³ããžã®å¯Ÿå¿ã
- åå ã®é€å»ã
ãããã§ããã ãæ©ãè¡ãããšãéèŠã§ãã ãããŠãåé¡ãç¹å®ããŠéç¥ãéä¿¡ãã段éã§ããŸãæéãåããªãå Žåããããã«ãã XNUMX åã¯ãããã®äœæ¥ã«è²»ããããããšã«ãªãããã®åŸã®äœæ¥ã¯åã«æ¹åã®ããã«èãããŠããªãçã«ãããŸããã
åœçŽèŠå¯å®ã®é»è©±ã鳎ã£ããšæ³åããŠã¿ãŸãããã 圌ã¯äœãããã§ããããïŒ äœãå£ããã®ããã©ãã§å£ããã®ããã©ã察åŠããã°ããã®ããªã©ã質åã«å¯Ÿããçããæ¢ããŠãã ããã ãããã®è³ªåã«å¯Ÿããçãã¯æ¬¡ã®ãšããã§ãã
ããããã¹ãŠã®æ å ±ãéç¥ã®ããã¹ãã«å«ãããã®åé¡ãžã®å¯Ÿå¿æ¹æ³ã解決æ¹æ³ããšã¹ã«ã¬ãŒã·ã§ã³æ¹æ³ã説æãã Wiki ããŒãžãžã®ãªã³ã¯ãéç¥ã«æž¡ãã ãã§ãã
ã¢ããªã±ãŒã·ã§ã³å±€ãšããžãã¹ããžãã¯ã«ã€ããŠã¯ãŸã äœãèªã£ãŠããŸããã æ®å¿µãªãããç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãŸã ã¡ããªã¯ã¹åéãå®è£ ããŠããŸããã ãããã®ã¬ãã«ã®æ å ±ã®å¯äžã®ãœãŒã¹ã¯ãã°ã§ãã
ããã€ãã®ç¹ã
ãŸããæ§é åããããã°ãæžã蟌ã¿ãŸãã ã¡ãã»ãŒãžã®ããã¹ãã«ã³ã³ããã¹ããå«ããå¿ èŠã¯ãããŸããã ãã®ãããã°ã«ãŒãåãåæãå°é£ã«ãªããŸãã Logstash ãããããã¹ãŠãæ£èŠåããã«ã¯é·ãæéãããããŸãã
次ã«ãé倧床ã¬ãã«ãæ£ãã䜿çšããŸãã åèšèªã«ã¯ç¬èªã®æšæºããããŸãã å人çã«ã¯ã次㮠XNUMX ã€ã®ã¬ãã«ãåºå¥ããŸãã
- ãšã©ãŒã¯ãããŸããã
- ã¯ã©ã€ã¢ã³ãåŽã®ãšã©ãŒã
- ééãã¯ç§ãã¡ã®åŽã«ãããç§ãã¡ã¯ãéã倱ãããšã¯ãªãããªã¹ã¯ãè² ããŸããã
- ééãã¯ç§ãã¡ã®åŽã«ãããç§ãã¡ã¯ãéã倱ããŸãã
èŠçŽããŠã¿ãŸãããã ããžãã¹ ããžãã¯ã«åºã¥ããŠç£èŠãæ§ç¯ããå¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³èªäœãç£èŠãã販売æ°ãæ°èŠãŠãŒã¶ãŒç»é²æ°ãçŸåšã¢ã¯ãã£ããªãŠãŒã¶ãŒæ°ãªã©ã®ææšã䜿çšããŠéçšããŠã¿ãŠãã ããã
ããžãã¹å šäœããã©ãŠã¶ãŒã® XNUMX ã€ã®ãã¿ã³ã§ããå Žåããã¿ã³ãã¯ãªãã¯ãããŠé©åã«æ©èœãããã©ãããç£èŠããå¿ èŠããããŸãã æ®ãã¯ãã¹ãŠåé¡ãããŸããã
ãããæã£ãŠããªãå Žåã¯ãç§ãã¡ãè¡ã£ãããã«ãã¢ããªã±ãŒã·ã§ã³ ãã°ã Nginx ãã°ãªã©ã§æ å ±ãååŸããŠã¿ãããšãã§ããŸãã ã§ããéãã¢ããªã±ãŒã·ã§ã³ã®è¿ãã«ããå¿ èŠããããŸãã
ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ææšã¯ãã¡ããéèŠã§ãããäŒæ¥ã¯ãããã«èå³ãæã£ãŠããããç§ãã¡ã¯ãããã«å¯ŸããŠãéãæã£ãŠããããã§ã¯ãããŸããã
åºæïŒ habr.com