ããã«ã¡ã¯ãç§ã®ååã¯ãŠãŒãžã³ã§ããã·ãã£ã¢ãŒãã«ã® B2B ããŒã ãªãŒããŒã§ãã ç§ãã¡ã®ããŒã ã®ã¿ã¹ã¯ã® XNUMX ã€ã¯ãããŒãããŒããã¿ã¯ã·ãŒã泚æããããã®çµ±åããµããŒãããããšã§ããå®å®ãããµãŒãã¹ã確ä¿ããã«ã¯ããã€ã¯ããµãŒãã¹ã§äœãèµ·ãã£ãŠããã®ããåžžã«ç解ããå¿
èŠããããŸãã ãã®ããã«ã¯ããã°ãåžžã«ç£èŠããå¿
èŠããããŸãã
CityMob ã§ã¯ãELK ã¹ã¿ã㯠(ElasticSearchãLogstashãKibana) ã䜿çšããŠãã°ãæäœããŠãããããã«éãããããŒã¿ã®éã¯èšå€§ã§ãã æ°ããã³ãŒãã®ãããã€åŸã«çºçããå¯èœæ§ã®ãããã®å€§éã®ãªã¯ãšã¹ãã®äžããåé¡ãèŠã€ããã®ã¯éåžžã«å°é£ã§ãã ãŸããèŠèŠçã«èå¥ã§ããããã«ãKibana ã«ã¯ããã·ã¥ããŒã ã»ã¯ã·ã§ã³ããããŸãã
ããŒã¿ãåä¿¡ããŠââä¿åããããã« ELK ã¹ã¿ãã¯ãèšå®ããæ¹æ³ã®äŸãèšèŒãã Habré ã«é¢ããèšäºã¯æ°å€ããããŸãããããã·ã¥ããŒãã®äœæã«é¢ããé¢é£è³æã¯ãããŸããã ãããã£ãŠãKibana ã§åä¿¡ãããã°ã«åºã¥ããŠããŒã¿ã®èŠèŠçè¡šçŸãäœæããæ¹æ³ã瀺ããããšæããŸãã
調æŽ
ããããããããããã«ãELK ãš Filebeat ã䜿çšã㊠Docker ã€ã¡ãŒãžãäœæããŸããã ãããŠãå°ããªå®¹åšã«å
¥ããŠã
æ§æãªããžããªã®ã¯ããŒã³ãäœæãã docker-compose
ãš ELK èšå®ãå€æŽãã次ã®ã³ãã³ãã§èµ·åããŸãã docker-compose up
ã æå³çã«ããŒãè¿œå ããªã -d
ELK ã¹ã¿ãã¯ã®é²è¡ç¶æ³ã確èªããŸãã
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
ãã¹ãŠãæ£ããæ§æãããŠããå Žåã¯ããã°ã«ãšã³ããªã衚瀺ãããŸã (ããã«ã§ã¯ãªãå¯èœæ§ããããŸããã¹ã¿ãã¯å šäœã§ã³ã³ãããŒãèµ·åããããã»ã¹ã«ã¯æ°åãããå ŽåããããŸã)ã
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
ã« localhost:5061
ããããéãã¯ãã§ãã
æ§æããå¿
èŠãããã®ã¯ã衚瀺ããããŒã¿ã«é¢ããæ
å ±ãå«ã Kibana ã®ã€ã³ããã¯ã¹ ãã¿ãŒã³ãäœæããããšã ãã§ãã ãããè¡ãã«ã¯ãcurl ãªã¯ãšã¹ããå®è¡ããããã°ã©ãã£ã«ã« ã€ã³ã¿ãŒãã§ã€ã¹ã§äžé£ã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
GUI ã䜿çšããã€ã³ããã¯ã¹ ãã¿ãŒã³ã®äœæ
èšå®ããã«ã¯ãå·ŠåŽã®ã¡ãã¥ãŒã® [æ€åº] ã»ã¯ã·ã§ã³ãéžæãã[ã€ã³ããã¯ã¹ ãã¿ãŒã³ã®äœæ] ããŒãžã«ç§»åããŸãã
ãã€ã³ããã¯ã¹ãã¿ãŒã³ã®äœæããã¿ã³ãã¯ãªãã¯ãããšãã€ã³ããã¯ã¹äœæããŒãžã衚瀺ãããŸãã ãã€ã³ããã¯ã¹ãã¿ãŒã³åããã£ãŒã«ãã«ãlogstash-*ããšå
¥åããŸãã ãã¹ãŠãæ£ããæ§æãããŠããå ŽåãKibana ã®äžã«ã«ãŒã«ã«è©²åœããã€ã³ããã¯ã¹ã衚瀺ãããŸãã
次ã®ããŒãžã§ãã¿ã€ã ã¹ã¿ã³ãã®ããã㌠ãã£ãŒã«ããéžæããŸãããã®å Žåã¯ã @timestamp
.
ããã«ãããã€ã³ããã¯ã¹èšå®ããŒãžã衚瀺ãããŸãããçŸæç¹ã§ã¯ãã以äžã®ã¢ã¯ã·ã§ã³ã¯å¿
èŠãããŸããã
ããã§åã³ãDiscoverãã»ã¯ã·ã§ã³ã«ç§»åãããã°ãšã³ããªã確èªããŸãã
ããã·ã¥ããŒã
å·ŠåŽã®ã¡ãã¥ãŒã§ [ããã·ã¥ããŒãäœæ] ã»ã¯ã·ã§ã³ãã¯ãªãã¯ãã察å¿ããããŒãžã«ç§»åããŸãã
ãæ°ããããã·ã¥ããŒãã®äœæããã¯ãªãã¯ãããšãããã·ã¥ããŒãã«ãªããžã§ã¯ããè¿œå ããããŒãžã衚瀺ãããŸãã
ãæ°èŠäœæããã¿ã³ãã¯ãªãã¯ãããšãããŒã¿è¡šç€ºã®ã¿ã€ããéžæããããæ±ããããŸãã Kibana ã«ã¯ããããå€æ°ãããŸãããããã§ã¯ãåçŽããŒãã®ã°ã©ãã£ãã¯è¡šçŸãšè¡šåœ¢åŒã®ãããŒã¿ ããŒãã«ãã®äœæãèŠãŠãããŸãã ä»ã®ã¿ã€ãã®ãã¬ãŒã³ããŒã·ã§ã³ãåæ§ã®æ¹æ³ã§æ§æãããŸãã
å©çšå¯èœãªãªããžã§ã¯ãã®äžã«ã¯ B ããã³ E ãšããã©ãã«ãä»ããŠãããã®ããããŸããããã¯ããã®åœ¢åŒãå®éšçãŸãã¯ããŒã¿ ãã¹ãäžã§ããããšãæå³ããŸãã æéãçµã€ãšã圢åŒãå€æŽãããããKibana ããå®å
šã«æ¶ãããããå¯èœæ§ããããŸãã
åçŽããŒ
ãåçŽããŒãã®äŸã§ã¯ããµãŒãã¹ã®æåãšå€±æã®å¿çã¹ããŒã¿ã¹ã®æ¯çã®ãã¹ãã°ã©ã ãäœæããŠã¿ãŸãããã èšå®ã®æåŸã«ã次ã®ã°ã©ãã衚瀺ãããŸãã
å¿çã¹ããŒã¿ã¹ã 400 æªæºã®ãã¹ãŠã®ãªã¯ãšã¹ããæåãšããŠåé¡ãã400 以äžã®ãªã¯ãšã¹ããåé¡ãããšããŠåé¡ããŸãã
ã瞊æ£ãã°ã©ããäœæããã«ã¯ãããŒã¿ ãœãŒã¹ãéžæããå¿ èŠããããŸãã å ã»ã©äœæããã€ã³ããã¯ã¹ ãã¿ãŒã³ãéžæããŸãã
ããã©ã«ãã§ã¯ãããŒã¿ ãœãŒã¹ãéžæãããšãåäžã®å®ç·ã°ã©ãã衚瀺ãããŸãã èšå®ããŠã¿ãŸãããã
ããã±ããããããã¯ã§ãè¿œå ããã¿ã³ãæŒãããX-asisããéžæã㊠X 軞ãèšå®ããŸãããã°å
ã®ãšã³ããªã®åä¿¡çšã®ã¿ã€ã ã¹ã¿ã³ãã確ä¿ããŠãããŸãã ãéèšããã£ãŒã«ãã§ãæ¥ä»ãã¹ãã°ã©ã ããéžæããããã£ãŒã«ããã§æéãã£ãŒã«ãã瀺ãã@timestampããéžæããŸãã ãæå°ééãããèªåãç¶æ
ã®ãŸãŸã«ããŠãããšã衚瀺ã«åãããŠèªåçã«èª¿æŽãããŸãã
ãæŽæ°ããã¿ã³ãã¯ãªãã¯ãããšã30 ç§ããšã®ãªã¯ãšã¹ãæ°ã®ã°ã©ãã衚瀺ãããŸãã
Y 軞ã«æ²¿ã£ãŠåãèšå®ããŠãéžæããæéå
ã®ãªã¯ãšã¹ãã®åèšæ°ã衚瀺ããŸãã
ãAggregationãã®å€ããSum Bucketãã«å€æŽããŸããããããã«ãããæåãããªã¯ãšã¹ããšå€±æãããªã¯ãšã¹ãã®ããŒã¿ãçµåã§ããããã«ãªããŸãã Bucket -> Aggregation ãããã¯ã§ããFiltersãã§éèšãéžæãããstatusCode >= 400ãã§ãã£ã«ã¿ãªã³ã°ãèšå®ããŸãã ãŸãããã«ã¹ã¿ã ã©ãã«ããã£ãŒã«ãã«ã¯ããã£ãŒãäžã®å¡äŸããã³äžè¬ãªã¹ãã§ãããããããã衚瀺ãããããã«ãã€ã³ãžã±ãŒã¿ãŒã®ååã瀺ãããŸãã
èšå®ãããã¯ã®äžã«ãããæŽæ°ããã¿ã³ãã¯ãªãã¯ãããšãåé¡ã®ãããªã¯ãšã¹ãã®ã°ã©ãã衚瀺ãããŸãã
å¡äŸã®æšªã«ããåãã¯ãªãã¯ãããšãåã®è²ãå€æŽã§ãããŠã£ã³ããŠã衚瀺ãããŸãã
次ã«ãæåãããªã¯ãšã¹ãã®ããŒã¿ãã°ã©ãã«è¿œå ããŸãããã ãã¡ããªã¯ã¹ãã»ã¯ã·ã§ã³ã§ãè¿œå ããã¿ã³ãã¯ãªãã¯ãããY軞ããéžæããŸãã
äœæããã¡ããªã¯ã¹ã«ã¯ã誀ã£ããªã¯ãšã¹ããšåãèšå®ãè¡ããŸãã ãã£ã«ã¿ãŒå
ã§ã®ã¿ãstatusCode < 400ããæå®ããŸãã
æ°ããåã®è²ãå€æŽãããšãåé¡ã®ãããªã¯ãšã¹ããšæåãããªã¯ãšã¹ãã®æ¯çã衚瀺ãããŸãã
ç»é¢äžéšã®ãä¿åããã¿ã³ãã¯ãªãã¯ããååãæå®ãããšãããã·ã¥ããŒãã«æåã®ã°ã©ãã衚瀺ãããŸãã
ããŒã¿è¡š
次ã«ã衚圢åŒãã¥ãŒãããŒã¿ããŒãã«ãã«ã€ããŠèããŠã¿ãŸãããã ãªã¯ãšã¹ãããããã¹ãŠã® URL ãšãããã®ãªã¯ãšã¹ãã®æ°ã®ãªã¹ããå«ãããŒãã«ãäœæããŸãããã åçŽããŒã®äŸãšåæ§ã«ãæåã«ããŒã¿ ãœãŒã¹ãéžæããŸãã
ãã®åŸãç»é¢ã« XNUMX åã®è¡šã衚瀺ãããéžæããæéã«ããããªã¯ãšã¹ãã®åèšæ°ã衚瀺ãããŸãã
ãBucketsããããã¯ã®ã¿ãå€æŽããŸãã ãè¿œå ããã¿ã³ãã¯ãªãã¯ãããè¡ã®åå²ããéžæããŸãã
ãéèšããã£ãŒã«ãã§ãæ¡ä»¶ããéžæããŸãã ãããŠè¡šç€ºãããããã£ãŒã«ããæ¬ã§ãurl.keywordããéžæããŸãã
[ã«ã¹ã¿ã ã©ãã«] ãã£ãŒã«ãã« [URL] å€ãæå®ãã[æŽæ°] ãã¯ãªãã¯ãããšãéžæããæéã«ãããå URL ã®ãªã¯ãšã¹ãæ°ãå«ãç®çã®ããŒãã«ãååŸãããŸãã
ç»é¢ã®äžéšã§ [ä¿å] ãã¿ã³ãå床ã¯ãªãã¯ããããŒãã«ã®åå (äŸ: URL) ãæå®ããŸãã ããã·ã¥ããŒãã«æ»ã£ãŠãäœæãããäž¡æ¹ã®ãã¥ãŒã確èªããŠã¿ãŸãããã
ããã·ã¥ããŒãã®æäœ
ããã·ã¥ããŒããäœæãããšãã¯ã衚瀺ãªããžã§ã¯ãèšå®ã§ã¡ã€ã³ ãã¥ãŒ ãã©ã¡ãŒã¿ãŒã®ã¿ãèšå®ããŸãã ãªããžã§ã¯ãå ã®ãã£ã«ã¿ãŒã«ããŒã¿ãæå®ããããšã¯æå³ããããŸãããããšãã°ããæ¥ä»ç¯å²ããããŠãŒã¶ãŒãšãŒãžã§ã³ãã«ãããã£ã«ã¿ãŒãããèŠæ±åœã«ãããã£ã«ã¿ãŒããªã©ã§ãã ãªããžã§ã¯ãã®äžã«ããã¯ãšãª ããã«ã§ãåžæã®æéãæå®ããããå¿ èŠãªãã£ã«ã¿ãªã³ã°ãèšå®ãããããæ¹ãã¯ããã«äŸ¿å©ã§ãã
ãã®ããã«ã«è¿œå ããããã£ã«ã¿ãŒã¯ããã·ã¥ããŒãå
šäœã«é©çšããããã¹ãŠã®è¡šç€ºãªããžã§ã¯ãã¯å®éã®ãã£ã«ã¿ãŒåŠçãããããŒã¿ã«åŸã£ãŠåæ§ç¯ãããŸãã
ãŸãšã
Kibana ã¯ãããããããŒã¿ã䟿å©ãªæ¹æ³ã§èŠèŠåã§ãã匷åãªããŒã«ã§ãã äž»èŠãª XNUMX çš®é¡ã®ãã£ã¹ãã¬ã€ã®èšå®ã瀺ããŠã¿ãŸããã ãã ããä»ã®ã¿ã€ããåæ§ã®æ¹æ³ã§æ§æãããŸãã ãŸãããèå°è£ãã«æ®ããè±å¯ãªèšå®ã«ãããããŒãºã«åãããŠéåžžã«æè»ã«ãã£ãŒããã«ã¹ã¿ãã€ãºã§ããããã«ãªããŸãã
åºæïŒ habr.com