ã¯ããã«
Badooã«ã¯å€æ°ã®ãèªäœãã®æªéãããŸãã ãããã®ã»ãšãã©ã¯Cã§æžãããŠããã1ã€ã¯C ++ã§ã5ã€ãŸãã¯6ã€ã¯Goã§æ®ã£ãŠããŸãã 4ã€ã®ããŒã¿ã»ã³ã¿ãŒã«ããçŽ100å°ã®ãµãŒããŒã§åäœããŸãã
Badooã§ã¯ããã«ã¹ãã§ãã¯ãšããŒã¢ã³ã®åé¡ã®æ€åºã¯ãç£èŠéšéã®è©ã«ããã£ãŠããŸãã Zabbixãšã¹ã¯ãªããã䜿çšããŠããååã¯ããµãŒãã¹ãå®è¡ãããŠãããã©ããããªã¯ãšã¹ãã«å¿çãããã©ããããŸãããŒãžã§ã³ãç£èŠããŸãã ããã«ãéšéã¯ãç°åžžãçªç¶ã®ãžã£ã³ããªã©ã®ããã«æªéãšããããšé£æºããã¹ã¯ãªããã®çµ±èšãåæããŸãã
ãã ããæè¿ãŸã§ãéåžžã«éèŠãªéšåã¯ãããŸããã§ãããåããŒã¢ã³ããµãŒããŒäžã®ãã¡ã€ã«ã«ããŒã«ã«ã§æžã蟌ããã°ã®åéãšåæã§ãã å€ãã®å Žåããã®æ
å ±ã¯ãåæ段éã§åé¡ãçºèŠããããäºåŸèª¿æ»ãè¡ã£ãŠé害ã®åå ãç解ãããããã®ã«åœ¹ç«ã¡ãŸãã
ãã®ãããªã·ã¹ãã ãæ§ç¯ãã詳现ãæ¥ãã§å
±æããŠããŸãã ãã£ãšããªãã®1人ãåæ§ã®ä»äºãããã§ãããããããŠãã®èšäºãèªãããšã¯ç§éãç¯ããééãããããªããæããŸãã
ããŒã«éžæ
åœåããããã¯ã©ãŠããã·ã¹ãã ã«é°åœ±ãä»ããŠããŸãã Badooã§ã¯ãå¯èœã§ããã°ããŒã¿ãæäŸããªãã®ãæ
£äŸã§ãã 人æ°ã®ããããŒã«ãåæããçµæã次ã®3ã€ã®ã·ã¹ãã ã®ãããããé©ããŠãããšããçµè«ã«éããŸããã
ã¹ãã©ã³ã¯
ãŸããSplunkãè©ŠããŸããã Splunkã¯ã¿ãŒã³ããŒã·ã¹ãã ã§ãããééåã®ææãœãªã¥ãŒã·ã§ã³ã§ããããã®ã³ã¹ãã¯ã·ã¹ãã ã«çä¿¡ãããã©ãã£ãã¯ã«çŽæ¥äŸåããŸãã ãã§ã«è«æ±éšéã®ããŒã¿ã«äœ¿çšããŠããŸãã ååã¯ãšãŠãæºè¶³ããŠããŸãã
ç§ãã¡ã¯ãã¹ãã®ããã«ãããã®ã€ã³ã¹ããŒã«ãå©çšããã»ãšãã©ããã«ç§ãã¡ã®ãã©ãã£ãã¯ãå©çšå¯èœãªæ¯æãæžã¿ã®å¶éãè¶
ãããšããäºå®ã«çŽé¢ããŸããã
å¥ã®ãã¥ã¢ã³ã¹ã¯ããã¹ãäžã«ãäžéšã®åŸæ¥å¡ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®è€éããšãçŽæçã§ãªããããšã«äžæºãèšãããšã§ããã ãã®æéäžã®èª²éæ
åœè
ã¯ãSplunkãšã®ã³ãã¥ãã±ãŒã·ã§ã³ãæ¢ã«ãã¹ã¿ãŒããŠãããåé¡ã¯ãããŸããã§ãããããã®äºå®ã¯æ³šç®ã«å€ããŸãã ã·ã¹ãã ãç©æ¥µçã«äœ¿çšãããå ŽåãçŽ æµãªã€ã³ã¿ãŒãã§ã€ã¹ãéåžžã«éèŠã«ãªããŸãã
Splunkã®æè¡é¢ã§ã¯ãæããã«å®å
šã«æºè¶³ããŸããã ãããããã®ã³ã¹ããè¿ããããã³äžäŸ¿ãªã€ã³ã¿ãŒãã§ãŒã¹ã«ãããç§ãã¡ã¯ããã«å
ãèŠãŠããŸããã
ELKïŒElastic Search + Logstash + Kibana
ãªã¹ãã®æ¬¡ã¯ELKã§ããã ELKã¯ãããããä»æ¥ã®ãã°ãåéããã³åæããããã®æã人æ°ã®ããã·ã¹ãã ã§ãã ãããŠãããã¯é©ãããšã§ã¯ãããŸããã ç¡æã§ãã·ã³ãã«ã§ãæè»æ§ãããã匷åã§ãã
ELKã¯3ã€ã®ã³ã³ããŒãã³ãã§æ§æãããŠããŸãã
- 匟æ§æ€çŽ¢ã Luceneãšã³ãžã³ã«åºã¥ãããŒã¿ä¿åããã³æ€çŽ¢ã·ã¹ãã ã
- Logstashã ããŒã¿ïŒåŠçãããå¯èœæ§ãããïŒãElastic Searchã«å°éããäžé£ã®æ©èœãåããããã€ããã
- ãããã Elastic Searchããã®ããŒã¿ãæ€çŽ¢ããã³èŠèŠåããããã®Webã€ã³ã¿ãŒãã§ãŒã¹ã
ELKã®äœ¿çšã¯éåžžã«ç°¡åã§ããå
¬åŒãµã€ããã3ã€ã®ã¢ãŒã«ã€ããããŠã³ããŒãããããã€ãã®ãã€ããªã解åããŠå®è¡ããã ãã§ãã ãã®ã·ã³ãã«ãã«ãããã·ã¹ãã ãæ°æ¥ã§ãã¹ãããã·ã¹ãã ãã©ã®ããã«é©ããŠããããç解ã§ããŸããã
ãããŠå
šäœçã«åœŒå¥³ã¯æãã€ããã æè¡çã«ã¯ãå¿
èŠã«å¿ããŠå¿
èŠãªãã®ããã¹ãŠå®è£
ããç¬èªã®ãœãªã¥ãŒã·ã§ã³ãäœæããŠãå
±éã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«æ§ç¯ã§ããŸãã
ELKãç§ãã¡ã«å®å
šã«åã£ãŠãããšããäºå®ã«ããããããã3çªç®ã®ææŠè
ãããŸããã
ã°ã¬ã€ãã°2
äžè¬ã«ãGraylog 2ã¯ELKã«éåžžã«ãã䌌ãŠããŸãããªãŒãã³ãœãŒã¹ã§ãã€ã³ã¹ããŒã«ãç°¡åã§ãElastic SearchãšLogstashã䜿çšã§ããŸãã äž»ãªéãã¯ãGraylog 2ã¯ãã°ãåéããããã«ç¹å¥ã«èª¿æŽãããããã«äœ¿çšã§ããã·ã¹ãã ã§ããããšã§ãã ãšã³ããŠãŒã¶ãŒã«å¯ŸããæºåãæŽã£ãŠããããšãããSplunkãéåžžã«é£æ³ãããŸãã ãã©ãŠã¶ã§è¡ã®è§£æãçŽæ¥ã«ã¹ã¿ãã€ãºããã¢ã¯ã»ã¹ãšéç¥ãå¶éããæ©èœãåãã䟿å©ãªã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ããããŸãã
ããããELKã䜿çšãããšãããŒãºã«åãããŠã«ã¹ã¿ãã€ãºãããã¯ããã«æè»ãªã·ã¹ãã ãäœæã§ãããšããçµè«ã«éããŸããã ã³ã³ããŒãã³ããæ¡åŒµãå€æŽããŸãã ã³ã³ã¹ãã©ã¯ã¿ãŒãšããŠã ç§ã¯ããéšåã奜ãã§ã¯ãããŸããã§ãã-å¥ã®éšåã«çœ®ãæããããŸãã 圌ãã¯ãŠã©ããã£ãŒã«ãéãæããããããŸããã§ãã-圌ãã¯ç¬èªã®ã·ã¹ãã ãäœããŸããã ELKã§ãã¹ãŠã®éšåãç°¡åã«åãå€ããŠäº€æã§ããå ŽåãGraylog 2ã§ã¯ãäžéšã®éšåãã«ãŒãã§åæããå¿
èŠããããäžéšã¯åã«å®è£
ã§ããªããšæããŸããã
解決ãããŸããã ELKã§è¡ããŸãã
ãã°é
ä¿¡
éåžžã«åæã®æ®µéã§ããã°ãã³ã¬ã¯ã¿ãŒã«å
¥ãããã£ã¹ã¯äžã«æ®ãããã«å¿
é ã®èŠä»¶ãäœæããŸããã ãã°ãåéããã³åæããã·ã¹ãã ã¯åªããŠããŸãããã©ã®ã·ã¹ãã ãäžå®ã®é
延ãäžãã倱æããå¯èœæ§ããããgrepãAWKã䞊ã¹æ¿ããªã©ã®æšæºçãªUNIXãŠãŒãã£ãªãã£ãæäŸããæ©èœã眮ãæãããã®ã¯äœããããŸããã ããã°ã©ããŒã¯ãµãŒããŒã«è¡ããããã§äœãèµ·ãã£ãŠããã®ãèªåã®ç®ã§ç¢ºãããæ©äŒãæã€ã¹ãã§ãã
次ã®ããã«ãã°ãLogstashã«é
ä¿¡ã§ããŸãã
- ELKã¹ã€ãŒãã®æ¢åã®ãŠãŒãã£ãªãã£ã䜿çšããŸãïŒlogstash-forwarderããããŠçŸåšã¯åã£ãŠããŸãïŒã ãããã¯ãã£ã¹ã¯äžã®ãã¡ã€ã«ãç£èŠããLogstashã«ã¢ããããŒãããå¥åã®ããŒã¢ã³ã§ãã
- PHPãã°ãé
ä¿¡ããLSDãšããååã§ç¬èªã®éçºã䜿çšããŠãã ããã å®éãããã¯ãã¡ã€ã«ã·ã¹ãã å
ã®ãã°ãã¡ã€ã«ãç£èŠããããããã©ããã«ã¢ããããŒãããå¥åã®ããŒã¢ã³ã§ããããŸãã äžæ¹ã§ãLSDã¯èšå€§ãªæ°ã®ãµãŒããŒããèšå€§ãªæ°ã®ãã°ãã¢ããããŒãããéã«çºçããå¯èœæ§ã®ãããã¹ãŠã®åé¡ãèæ
®ã«å
¥ããŠè§£æ±ºããŸããããã·ã¹ãã ã¯PHPã¹ã¯ãªããã«å¯ŸããŠã調æŽããããããŠããŸãã çµäºããå¿
èŠããããŸãã
- ãã£ã¹ã¯ãžã®æžã蟌ã¿ãšäžŠè¡ããŠãUNIXã®äžçã®syslogæšæºã«ãã°ãæžã蟌ã¿ãŸãã
åŸè
ã®æ¬ ç¹ã«ããããããããã®ã¢ãããŒãã¯éåžžã«ç°¡åã§ããã®ã§ãè©ŠããŠã¿ãããšã«ããŸããã
建ç¯
ãµãŒããŒãšrsyslogd
ã·ã¹ãã 管çè
ãšäžç·ã«ãç§ãã¡ã«ãšã£ãŠåŠ¥åœãšæãããã¢ãŒããã¯ãã£ãã¹ã±ããããŸããïŒåãµãŒããŒã«1ã€ã®rsyslogdããŒã¢ã³ããµã€ãã«1ã€ã®ã¡ã€ã³rsyslogdããŒã¢ã³ããµã€ãã«1ã€ã®LogstashããããŠã¢ã¹ã¯ã¯ã«è¿ã1ã€ã®Elastic Searchã¯ã©ã¹ã¿ãŒãé
眮ããŸããã ã ãã©ãã®ããŒã¿ã»ã³ã¿ãŒãžã
åçã§ã¯ããµãŒããŒã®1ã€ã¯æ¬¡ã®ããã«ãªããŸããã
ãªããªã Badooã¯ããã€ãã®å Žæã§dockerã䜿çšããŸããçµã¿èŸŒã¿ããŒã«ã䜿çšããŠãã³ã³ããå
ã«/ dev / logãœã±ãããã¹ããŒããããšãèšç»ããŸããã
æçµçãªãã£ãŒãã¯æ¬¡ã®ãããªãã®ã§ããïŒ
äžèšã§èæ¡ãããã¹ããŒã ã¯ãæåã¯ããŒã¿æ倱ã«å¯ŸããŠéåžžã«èæ§ããããŸãããårsyslogdããŒã¢ã³ã¯ãã¡ãã»ãŒãžãããã«éä¿¡ã§ããªãå Žåããã£ã¹ã¯ã«ä¿åããã次ã®ãåäœæã«éä¿¡ããŸãã
æåã®rsyslogããŒã¢ã³ãæ©èœããªãã£ãå Žåã«ã®ã¿ãããŒã¿ã倱ãããŸããã ãããããã®ç¬éãç§ãã¡ã¯ãã®åé¡ã«ããŸã泚æãæããŸããã§ããã ããã§ãããã°ã¯éåžžã«éèŠãªæ
å ±ã§ã¯ãªããããæåããå€ãã®æéãè²»ããå¿
èŠããããŸãã
ãã°è¡ã®åœ¢åŒãšLogstash
Logstashã¯ãè¡ãéä¿¡ãããããŒã¿ã®ãã€ãã§ãã å
éšã§ã¯ããããã¯è§£æãããã€ã³ããã¯ã¹äœæã®æºåãã§ãããã£ãŒã«ããšã¿ã°ã®åœ¢åŒã§Elastic Searchã«ç§»åããŸãã
ã»ãšãã©ãã¹ãŠã®ãµãŒãã¹ã¯ãç¬èªã®libangelã©ã€ãã©ãªã䜿çšããŠæ§ç¯ãããŠããŸããã€ãŸããåããã°åœ¢åŒãæã¡ã次ã®ããã«ãªããŸãã
Mar 04 04:00:14.609331 [NOTICE] <shard6> <16367> storage_file.c:1212 storage___update_dump_data(): starting dump (threaded, update)
ãã®åœ¢åŒã¯ãå€æŽãããŠããªãäžè¬çãªéšåãšããã®ã³ã°çšã®é¢æ°ã®1ã€ãåŒã³åºããšãã«ããã°ã©ããŒãèªåã§èšå®ããéšåã§æ§æãããŸãã
äžè¬çãªéšåã§ã¯ãæ¥ä»ããã€ã¯ãç§ä»ãã®æå»ããã°ã¬ãã«ãã©ãã«ãPIDããœãŒã¹ã®ãã¡ã€ã«åãšè¡çªå·ãé¢æ°ã®ååã衚瀺ãããŸãã æãäžè¬çãªãã®ã
Syslogã¯ãæéãPIDããµãŒããŒã®ãã¹ãåãããããidentãšãã£ãæ
å ±ãèªèº«ãããã®ã¡ãã»ãŒãžã«è¿œå ããŸãã ããã¯éåžžãããã°ã©ã ã®ååã«ãããŸããããäœã§ãæž¡ãããšãã§ããŸãã
ãã®identãæšæºåããååãã»ã«ã³ããªåãããã³ããŒã¢ã³ã®ããŒãžã§ã³ãããã«æž¡ããŸãã ããšãã°ã
meetmaker-ru.mlan-1.0.0ã§ãã ãããã£ãŠãç°ãªãããŒã¢ã³ã®ãã°ãç°ãªãã¿ã€ãã®1ã€ã®ããŒã¢ã³ïŒåœãã¬ããªã«ãªã©ïŒã®ãã°ãåºå¥ããå®è¡äžã®ããŒã¢ã³ã®ããŒãžã§ã³ã«é¢ããæ
å ±ãååŸã§ããŸãã
ãã®ãããªã¡ãã»ãŒãžã®åæã¯éåžžã«ç°¡åã§ãã ãã®èšäºã§ã¯æ§æãã¡ã€ã«ã®äžéšãåŒçšããŸããããããã¯ãã¹ãŠãæ£èŠã®æ£èŠè¡šçŸã䜿çšããæååã®éšåã®æ®µéçãªãé£ã蟌ã¿ãããã³è§£æã«åž°çããŸãã
解æã®ããã€ãã®æ®µéã倱æããå Žåãç¹å¥ãªã¿ã°ãã¡ãã»ãŒãžã«è¿œå ããŸããããã«ãããåŸã§ãã®ãããªã¡ãã»ãŒãžãèŠã€ããŠãã®çªå·ãç£èŠã§ããŸãã
æéã®åæã«é¢ããèšåã ããŸããŸãªãªãã·ã§ã³ãèæ
®ããããšããŸããããããã©ã«ãã®ã¡ãã»ãŒãžæéã¯libangelã¡ãã»ãŒãžããã®æéã«ãªããŸãã åºæ¬çã«ããã®ã¡ãã»ãŒãžãçæãããæéã äœããã®çç±ã§ãã®æéãèŠã€ãããªãã£ãå ŽåãsyslogããæéãåããŸãã ã¡ãã»ãŒãžãæåã®ããŒã«ã«syslogããŒã¢ã³ã«éãããæéã äœããã®çç±ã§ãã®æéãå©çšã§ããªãå Žåãã¡ãã»ãŒãžã®æéã¯Logstashã§ãã®ã¡ãã»ãŒãžãåä¿¡ããæéã«ãªããŸãã
çµæã®ãã£ãŒã«ãã¯ãã€ã³ããã¯ã¹äœæã®ããã«Elastic Searchã«éãããŸãã
Elasticsearch
Elastic Searchã¯ãè€æ°ã®ããŒãã1ã€ã®ãããã¯ãŒã¯ã«çµåãããŠé£æºããå Žåãã¯ã©ã¹ã¿ãŒã¢ãŒãã§ã®åäœããµããŒãããŸãã ã€ã³ããã¯ã¹ããšã«å¥ã®ããŒããžã®ã¬ããªã±ãŒã·ã§ã³ãæ§æã§ãããããäžéšã®ããŒãã«é害ãçºçããŠãã¯ã©ã¹ã¿ãŒã¯åäœãç¶ããŸãã
ãã§ãŒã«ãªãŒããŒã¯ã©ã¹ã¿ãŒå
ã®ããŒãã®æå°æ°ã¯3ã§ãæåã®å¥æ°ã¯1ãã倧ããã§ãã ããã¯ãå
éšã¢ã«ãŽãªãºã ã®æäœã®ããã«ãã¯ã©ã¹ã¿ãŒãéšåã«åå²ãããšãã«ã倧éšåãåé¢ã§ããããšãå¿
èŠã§ãããšããäºå®ã«ãããã®ã§ãã å¶æ°ã®ããŒãã¯ããã«ã¯é©ããŠããŸããã
Elastic Searchã¯ã©ã¹ã¿ãŒã«3ã€ã®ãµãŒããŒãå²ãåœãŠãå³ã®ããã«åã€ã³ããã¯ã¹ã1ã€ã®ã¬ããªã«ãæã€ããã«æ§æããŸããã
ãã®ãããªã¢ãŒããã¯ãã£ã§ã¯ãã¯ã©ã¹ã¿ãŒããŒãã®ããããã®é害ã¯èŽåœçã§ã¯ãªããã¯ã©ã¹ã¿ãŒã«ã¢ã¯ã»ã¹ã§ããªããªããŸãã
ãã©ãŒã«ããã¬ã©ã³ã¹èªäœã«å ããŠããã®ãããªã¹ããŒã ã§ã¯ãElastic SearchèªäœãæŽæ°ãããšäŸ¿å©ã§ããäžæ¹ã®ããŒããåæ¢ãããããæŽæ°ããéå§ããä»æ¹ãæŽæ°ããŸãã
Elastic Searchã«ãã°ãæ£ç¢ºã«ä¿åãããšããäºå®ã«ããããã¹ãŠã®ããŒã¿ã1æ¥ããšã«ç°¡åã«ã€ã³ããã¯ã¹ã«åå²ã§ããŸãã ãã®ãããªããŒãã£ã·ã§ã³ã«ã¯ãããã€ãã®å©ç¹ããããŸãã
- ãµãŒããŒã®ãã£ã¹ã¯å®¹éãäžè¶³ããå Žåãå€ãããŒã¿ãåé€ããã®ã¯éåžžã«ç°¡åã§ãã ããã¯ç°¡åãªæäœã§ãããããã«ãå€ãããŒã¿ãåé€ããæ¢è£œã®ãã¥ã¬ãŒã¿ãŒããŒã«ããããŸãã
- 1æ¥ä»¥äžã®ééã§ã®æ€çŽ¢äžã«ãæ€çŽ¢ã䞊è¡ããŠå®è¡ã§ããŸãã ããã«ã1ã€ã®ãµãŒããŒãšè€æ°ã®ãµãŒããŒã®äž¡æ¹ã§äžŠè¡ããŠå®è¡ã§ããŸãã
æ¢ã«è¿°ã¹ãããã«ãååãªãã£ã¹ã¯å®¹éããªãå Žåã«å€ãã€ã³ããã¯ã¹ãèªåçã«åé€ããããã«
ãã¥ã¬ãŒã¿ãŒãèšå®ããŸããã
Elastic Searchã®ã»ããã¢ããã§ã¯ãJavaãšãåã«Luceneãå
éšã§äœ¿çšããããšããäºå®ã®äž¡æ¹ã«é¢é£ããå€ãã®åŸ®åŠãªç¹ããããŸãã ãããããããã®åŸ®åŠãªç¹ã¯ãã¹ãŠå
¬åŒææžãšå€æ°ã®èšäºã®äž¡æ¹ã§èª¬æãããŠããã®ã§ãæ·±ãæãäžããŸããã Elastic SearchãµãŒããŒã§ã¯ãJavaããŒããšå€éšããŒãïŒLuceneã§äœ¿çšãããïŒã®äž¡æ¹ã«ã¡ã¢ãªãå²ãåœãŠãããšãèŠããŠããå¿
èŠãããããšãç°¡åã«è¿°ã¹ãŠãããŸãããã£ã¹ã¯äžã
ããã
話ãããšã¯äœããããŸãã:-)é
ä¿¡ãããåäœããŸãã 幞ããªããšã«ãææ°ããŒãžã§ã³ã§ã¯ãéçºè
ã¯èšå®ã§ã¿ã€ã ãŸãŒã³ãå€æŽããæ©èœãè¿œå ããŸããã 以åã¯ããŠãŒã¶ãŒã®ããŒã«ã«ã¿ã€ã ãŸãŒã³ãããã©ã«ãã§äœ¿çšãããŠããŸããããããã¯éåžžã«äžäŸ¿ã§ãã ããããå Žæã®ãµãŒããŒã§åžžã«UTCã§ããããã®äžã§ã®éä¿¡ã«æ
£ããŠããŸãã
éç¥ã·ã¹ãã
ãã°åéã·ã¹ãã ã®éåžžã«éèŠãªéšåãšäž»ãªèŠä»¶ã®1ã€ã¯ãéç¥ã·ã¹ãã ã®å¯çšæ§ã§ããã ã«ãŒã«ãŸãã¯ãã£ã«ã¿ãŒã«åºã¥ããŠã詳现ã確èªã§ããããŒãžãžã®ãªã³ã¯ã§ããªã¬ãŒãããã«ãŒã«ãéç¥ããæåãéä¿¡ããã·ã¹ãã ã
ELKã®äžçã«ã¯2ã€ã®é¡äŒŒããæ¢è£œè£œåããããŸããã
Watcherã¯ãã¢ã¯ãã£ããªãµãã¹ã¯ãªãã·ã§ã³ãå¿
èŠãšããéããElastic補åã§ãã Elastalertã¯ãPythonã§æžããããªãŒãã³ãœãŒã¹è£œåã§ãã 以åãšåãçç±ã§ãç§ãã¡ã¯ããã«Watcherãå»æ¢ããŸãã-ç§ãã¡ã«æ¡å€§ããŠé©å¿ããããšã®è¿ããšè€éãã ãã¹ãã«ãããšãElastalertã¯ã¯ãŒã«ãªè£œåã§ããããšãå€æããŸããããããã€ãã®æ¬ ç¹ããããŸããïŒãã ããããã»ã©éèŠã§ã¯ãããŸããïŒã
- Pythonã§æžãããŠããŸãã Pythonã¯ãé«éãªãããŒãã€ãã¹ã¯ãªãããäœæããããã®èšèªãšããŠæ°ã«å
¥ã£ãŠããŸãããå®çšŒåç°å¢ã§æçµè£œåãšããŠèŠããã¯ãããŸããã
- ã€ãã³ãã«å¿ããŠã·ã¹ãã ãéä¿¡ããæåãäœæããå¯èœæ§ã¯ãå®å
šã«åæ©çãªãã®ã§ãã ãããŠãä»ã®äººã«ãã®ã·ã¹ãã ã䜿ããããšãã欲æ±ãããã°ãæç« ã®çŸãããšäŸ¿å©ãã¯éåžžã«éèŠã§ãã
Elastalertã§éãã§ãã®ãœãŒã¹ã³ãŒãã調ã¹ãã®ã§ããã©ãããã©ãŒã éšéã䜿çšããŠPHPã§è£œåãæžãããšã«ããŸããã ãã®çµæãDenis Karasik
Battlecatã¯2é±éã«ããã£ãŠã調æŽãããã補åãäœæããŸãããããã¯ããã¯ãªãã£ã¹ã«çµ±åãããå¿
èŠãªæ©èœã®ã¿ãåããŠããŸãã
åã«ãŒã«ã«ã€ããŠãã·ã¹ãã ã¯Kibanaã«åºæ¬çãªããã·ã¥ããŒããèªåçã«äœæããŸãããã®ãªã³ã¯ã¯ã¬ã¿ãŒã«èšèŒãããŸãã ãªã³ã¯ãã¯ãªãã¯ãããšãéç¥ã§æå®ãããæéã®ã¡ãã»ãŒãžãšã¹ã±ãžã¥ãŒã«ãæ£ç¢ºã«è¡šç€ºãããŸãã
ãçæã
ãã®æ®µéã§ãã·ã¹ãã ã®æåã®ãªãªãŒã¹ã®æºåãæŽããæ©èœãã䜿çšã§ããããã«ãªããŸããã ããããç§ãã¡ãçŽæããããã«ããçæãã¯ããããã§ã¯ãããŸããã§ããã
åé¡1ïŒsyslog + dockerïŒ
syslogããŒã¢ã³ãšããã°ã©ã ã®éã®æšæºçãªéä¿¡æ¹æ³ã¯ãunix socket / dev / logã§ãã åè¿°ã®ããã«ã
æšæºã® docker
ããŒã«ã䜿çšããŠã³ã³ããã«ãããæããŸããã syslogããŒã¢ã³ããªããŒãããå¿
èŠããããŸã§ããã®ãã³ãã«ã¯æ£åžžã«æ©èœããŸããã
ã©ãããããã£ã¬ã¯ããªã§ã¯ãªãç¹å®ã®ãã¡ã€ã«ã転éãããå Žåããã¹ãã·ã¹ãã ã§ãã¡ã€ã«ãåé€ãŸãã¯åäœæãããšãã³ã³ããå
ã§ã¢ã¯ã»ã¹ã§ããªããªããŸãã syslogããŒã¢ã³ãåèµ·åãããšãDockerã³ã³ããããã®ãã°ãçµäºããããšãããããŸããã
ãã£ã¬ã¯ããªå
šäœã転éãããšãå
éšã«åé¡ãªãUNIXãœã±ãããååšããããŒã¢ã³ãåèµ·åããŠãäœãå£ããŸããã ããããlibcã¯ãœã±ããã/ dev / logã«ããããšãæ³å®ããŠããããããã®ãã¹ãŠã®å¯ãæ§æããããšã¯ããè€éã«ãªããŸãã
æ€èšãã2çªç®ã®ãªãã·ã§ã³ã¯ãUDPãŸãã¯TCPã䜿çšããŠãã°ãéä¿¡ããããšã§ãã ããããããã¯åã®ã±ãŒã¹ãšåãåé¡ã§ãïŒlibcã¯/ dev / logã«ããæžã蟌ãããšãã§ããŸããã syslogã¯ã©ã€ã¢ã³ããäœæããå¿
èŠããããŸããããã®æ®µéã§ã¯ãããè¡ããããããŸããã§ããã
æçµçã«ãåã³ã³ããã§1ã€ã®syslogããŒã¢ã³ãå®è¡ããæšæºã®libc openlogïŒïŒ/ syslogïŒïŒé¢æ°ã䜿çšããŠ/ dev / logã«æžã蟌ã¿ãç¶ããããšã«ããŸããã
ããã¯å€§ããªåé¡ã§ã¯ãããŸããã§ãã ã·ã¹ãã 管çè
ã¯ã1ã€ã®ããŒã¢ã³ã®ã¿ãèµ·åããã®ã§ã¯ãªããåã³ã³ããã§initã·ã¹ãã ãåŒãç¶ã䜿çšããŸãã
åé¡2ïŒsyslogã®ãããã¯ïŒ
éçºã¯ã©ã¹ã¿ãŒã§ãããŒã¢ã³ã®1ã€ãå®æçã«ãã³ã°ããããšã«æ°ä»ããŸããã ããŒã¢ã³ã®å
éšãŠã©ããããã°ããªã³ã«ãããšãããã€ãã®ããã¯ãã¬ãŒã¹ãåŸãããsyslogïŒïŒ-> writeïŒïŒã§ããŒã¢ã³ããã³ã°ããããšãããããŸããã
==== WATCHDOG ==== tag: IPC_SNAPSHOT_SYNC_STATE start: 3991952 sec 50629335 nsec now: 3991953 sec 50661797 nsec Backtrace: /lib64/libc.so.6(__send+0x79)[0x7f3163516069] /lib64/libc.so.6(__vsyslog_chk+0x3ba)[0x7f3163510b8a] /lib64/libc.so.6(syslog+0x8f)[0x7f3163510d8f] /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(zlog1+0x225)[0x519bc5] /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running[0x47bf7f] /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(storage_save_sync_done+0x68)[0x47dce8] /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(ipc_game_loop+0x7f9)[0x4ee159] /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(game+0x25b)[0x4efeab] /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(service_late_init+0x193)[0x48f8f3] /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(main+0x40a)[0x4743ea] /lib64/libc.so.6(__libc_start_main+0xf5)[0x7f3163451b05] /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running[0x4751e1] ==== WATCHDOG ====
libcãœãŒã¹ããã°ããããŠã³ããŒãããsyslogã¯ã©ã€ã¢ã³ãã®å®è£
ã確èªãããšãããsyslogïŒïŒé¢æ°ã¯åæã§ãããrsyslogåŽã®é
延ãããŒã¢ã³ã«åœ±é¿ããããšãããããŸããã
ããã§äœããããå¿
èŠããããŸããããæ©ããã°æ©ãã»ã©è¯ãã§ãã ããããæéããããŸããã§ãã...
æ°æ¥åŸãç§ãã¡ã¯çŸä»£å»ºç¯ã®æãäžå¿«ãªã¬ãŒãã§ããã«ã¹ã±ãŒã倱æã«èžã¿åºããŸããã
Rsyslogã¯ããã©ã«ãã§èšå®ãããŠãããããäœããã®çç±ã§å
éšãã¥ãŒããã£ã±ãã«ãªããšããã¹ãããã«ãïŒengãThrottleïŒãéå§ãããŸãã æ°ããã¡ãã»ãŒãžã®ãèªåã®èšé²ããé
ãããŸãã
ããã°ã©ããŒã®ç£èŠã«ããããã¹ããµãŒããŒã®1ã€ã倧éã®ã¡ãã»ãŒãžããã°ã«éä¿¡ãå§ããããšãå€æããŸããã Logstashã¯ãã®ãããªã¹ããªãŒã ã«å¯ŸåŠã§ããŸããã§ãããã¡ã€ã³ã®rsyslogãã¥ãŒããã£ã±ãã§ãä»ã®rsyslogããã®ã¡ãã»ãŒãžãéåžžã«ãã£ãããšèªã¿åããŸããã ãã®ãããä»ã®rsyslogã®ãã¥ãŒããªãŒããŒãããŒããããŒã¢ã³ããã®ã¡ãã»ãŒãžã®èªã¿åããéåžžã«é
ããªããŸããã
ãããŠãæªéã¯ãäžã§èšã£ãããã«ã/ dev / logã«åæããŠãã¿ã€ã ã¢ãŠããªãã§æžã蟌ã¿ãŸãã
çµæã¯äºæž¬å¯èœã§ãããã©ããã£ã³ã°ãã¹ãããŒã¢ã³ã1ã€ãããããå°ãªããšãããªãã®é »åºŠã§syslogã«æžã蟌ããã¹ãŠã®ããŒã¢ã³ã®é床ãäœäžãå§ããŸããã
ãã1ã€ã®ééãã¯ãæœåšçãªåé¡ã«ã€ããŠã·ã¹ãã 管çè
ã«éç¥ããªãã£ãããšã§ãããçç±ãèŠã€ããŠrsyslogãç¡å¹ã«ããã®ã«1æé以äžããããŸããã
ãã®ã¬ãŒãã
èžãã ã®ã¯
ç§ãã¡ã ãã§ã¯ãããŸããã ãããŠ
ãrsyslogã ãã§ã¯ãããŸãã ã ããŒã¢ã³ã®ã€ãã³ãã«ãŒãã§ã®åæåŒã³åºãã¯ã蚱容ã§ããªãèŽ
æ²¢ã§ãã
ããã€ãã®ãªãã·ã§ã³ããããŸããã
- syslogããè±åºããŸãã ä»ã®ãªãã·ã§ã³ã®1ã€ã«æ»ããŸããããã¯ãããŒã¢ã³ããã£ã¹ã¯ã«æžã蟌ã¿ãè¡ã£ãŠããããã§ã«ä»ã®ããŒã¢ã³ããã£ã¹ã¯ããå®å
šã«ç¬ç«ããŠèªã¿åããè¡ã£ãŠããããšã瀺ããŠããŸãã
- syslogãžã®åææžã蟌ã¿ãç¶ããŸãããå¥åã®ã¹ã¬ããã§è¡ããŸãã
- syslogã¯ã©ã€ã¢ã³ããäœæããUDPãä»ããŠsyslogã«ããŒã¿ãéä¿¡ããŸãã
æãæ£ãããªãã·ã§ã³ã¯ããããæåã®ãã®ã§ãã ããããç§ãã¡ã¯ããã«æéãç¡é§ã«ããããªãã£ãã®ã§ãããã«3ã€ç®ãäœããŸããã UDPçµç±ã§syslogãžã®æžã蟌ã¿ãéå§ããŸããã
Logstashã«é¢ããŠã¯ã2ã€ã®èµ·åãã©ã¡ãŒã¿ãŒããã¹ãŠã®åé¡ã解決ããŸããããã³ãã©ãŒã®æ°ãšåæã«åŠçãããè¡ã®æ°ãå¢ããããšã§ãïŒ
-w 24 -b 1250 ïŒã
ä»åŸã®èšç»
è¿ãå°æ¥ãæªéã®ããã·ã¥ããŒããäœæããŠãã ããã æ¢åã®æ©èœãšããã€ãã®æ°ããæ©èœãçµã¿åããããã®ãããªããã·ã¥ããŒãïŒ
- ããŒã¢ã³ã®ç¶æ
ïŒããã©ãã£ãã¯ã©ã€ããïŒãåºæ¬çãªçµ±èšæ
å ±ã衚瀺ããŸãã
- ãã°ã®ãšã©ãŒããã³èŠåã®è¡æ°ã®ã°ã©ãããããã®è¡šç€º;
- ããªã¬ãŒãããã¢ã©ãŒãã·ã¹ãã ã«ãŒã«ã
- åé¡ã®ãããµãŒãã¹ãŸãã¯ãªã¯ãšã¹ãã衚瀺ããSLAã¢ãã¿ãªã³ã°ïŒã¬ã€ãã³ã·ãŒã¬ã¹ãã³ã¹ã¢ãã¿ãªã³ã°ïŒã
- ããŒã¢ã³ãã°ããã®ããŸããŸãªæ®µéã®éžæã ããšãã°ãããŠã³ããŒãã®ã©ã®æ®µéã«ããããããŠã³ããŒãæéãããã€ãã®å®æçãªããã»ã¹ã®æéãªã©ã®ããŒã¯ã
ç§ã®æèŠã§ã¯ããã®ãããªããã·ã¥ããŒãã®ååšã¯ããããŒãžã£ãŒãããã°ã©ããŒã管çè
ãã¢ãã¿ãŒã«èšŽããã§ãããã
ãããã«
ãã¹ãŠã®ããŒã¢ã³ã®ãã°ãåéãããããã䟿å©ã«æ€çŽ¢ããã°ã©ããšèŠèŠåãæ§ç¯ããåé¡ãã¡ãŒã«ã§éç¥ã§ããããã«ããã·ã³ãã«ãªã·ã¹ãã ãæ§ç¯ããŸããã
ã·ã¹ãã ã®æåã¯ããã®ååšäžã«ããŸã£ããçºèŠã§ããªãã£ãããŸãã¯é·ãæéåŸã«çºèŠãããåé¡ãè¿
éã«çºèŠããä»ã®ããŒã ãã€ã³ãã©ã¹ãã©ã¯ãã£ã䜿çšãå§ããŠãããšããäºå®ã«ãã£ãŠèšŒæãããŸãã
è² è·ã«ã€ããŠè©±ããšã1æ¥ããããã°ãæ¯ç§600ã2000è¡ã§ãæ倧1äžè¡ã®åšæçãªããŒã¹ããçºçããŸãã ã·ã¹ãã ã¯åé¡ãªããã®è² è·ãæ¶åããŸãã
æ¥æ¬¡ã€ã³ããã¯ã¹ã®ãµã€ãºã¯ãæ°åã®ã¬ãã€ãããæ°çŸã®ã¬ãã€ããŸã§ããŸããŸã§ãã
ãã®ã·ã¹ãã ã«ã¯æ¬ ç¹ããããäœãå¥ã®ããšãè¡ãããšã§ãã¬ãŒãããåé¿ã§ãããšèšã人ãããŸãã ããã¯æ¬åœã§ãã ããããç§ãã¡ã¯ããã°ã©ãã³ã°ã®ããã«ããã°ã©ãã³ã°ãããŠããããã§ã¯ãããŸããã ç§ãã¡ã®ç®æšã¯ãåççã«æå°éã®æéã§éæãããã·ã¹ãã ã¯éåžžã«æè»ã§ãããããå°æ¥ç§ãã¡ãšäžèŽããªãéšåã¯éåžžã«ç°¡åã«æ¹åãŸãã¯å€æŽã§ããŸãã
Marco KevatsãC / C ++éçºéšéã®ããã°ã©ããŒ