
忣ã·ã¹ãã ã®è€éåã«äŒŽããç£èŠã¯ã¯ã©ãŠããœãªã¥ãŒã·ã§ã³ã®æé·ã«ãããŠéåžžã«éèŠãªèŠçŽ ãšãªã£ãŠããŸãã忣ã·ã¹ãã ã®æåãçè§£ããããšã¯äžå¯æ¬ ã§ãããããããµãŒãã¹ããããŒã¿ãåéããããã©ãŒãã³ã¹åæããšã©ãŒã®æ€èšŒãå¯çšæ§ããã°ãåäžã®ã€ã³ã¿ãŒãã§ãŒã¹ã§å°éå®¶ã«æäŸã§ããã¹ã±ãŒã©ãã«ãªããŒã«ãå¿ èŠã§ãã
ãããã®ããŒã«ã¯ãå¹ççãã€çç£çã§ãªããã°ãªããŸããããã®èšäºã§ã¯ãEFKïŒElasticsearchïŒãšPLGïŒLokiïŒãšãã2ã€ã®äººæ°ã®ãã¯ãããžãŒã¹ã¿ãã¯ãåãäžããããããã®ã¢ãŒããã¯ãã£ãšéããåæããŸãã
EFKã¹ã¿ãã¯
éåžžã«äººæ°ã®é«ãELKãEFKã«ã€ããŠèããããšããããããããŸããããã®ã¹ã¿ãã¯ã¯ãElasticsearchïŒãªããžã§ã¯ãã¹ãã¬ãŒãžïŒãLogstashãŸãã¯FluentDïŒãã°åéãšéçŽïŒããããŠå¯èŠåã®ããã®Kibanaãšãã£ããè€æ°ã®ç°ãªãããŒãã§æ§æãããŠããŸãã
å žåçãªäœæ¥èšç»ã¯æ¬¡ã®ããã«ãªããŸãã

Elasticsearch ãªã¢ã«ã¿ã€ã æ€çŽ¢ãšåææ©èœãåãã忣ãªããžã§ã¯ãã¹ãã¬ãŒãžããã°ãªã©ã®åæ§é åããŒã¿ã«æé©ãªãœãªã¥ãŒã·ã§ã³ã§ããæ å ±ã¯JSONããã¥ã¡ã³ããšããŠä¿åããããªã¢ã«ã¿ã€ã ã§ã€ã³ããã¯ã¹åãããã¯ã©ã¹ã¿ãŒããŒãã«åæ£ãããŸããApache Luceneæ€çŽ¢ãšã³ãžã³ãããŒã¹ã«ããå šææ€çŽ¢ã§ã¯ããã¹ãŠã®äžæã®åèªãšããã«é¢é£ããããã¥ã¡ã³ããå«ã転眮ã€ã³ããã¯ã¹ã䜿çšãããŸãã
æµæ¢ãªD â ã¯ãããŒã¿ã®åéãšæ¶è²»ã®éçšã§ããŒã¿ã®çµ±åãè¡ãããŒã¿ã³ã¬ã¯ã¿ã§ããå¯èœãªéãJSON圢åŒã§ããŒã¿ãæŽçããããšããŸããã¢ãŒããã¯ãã£ã¯æ¡åŒµå¯èœã§ãããå€ãã® ããããæ©äŒã«ã³ãã¥ããã£ããµããŒãããŸãã
æšå Ž â æç³»ååæãã°ã©ãåæãæ©æ¢°åŠç¿ãªã©ãããŸããŸãªè¿œå æ©èœãåãã Elasticsearch ã®ããŒã¿èŠèŠåããŒã«ã§ãã
Elasticsearchã¢ãŒããã¯ãã£
Elasticsearchã¯ã©ã¹ã¿ãŒã¯ãããŒãã«åæ£ããŠããŒã¿ãä¿åããå¯çšæ§ãšå埩åãåäžãããŸããã¯ã©ã¹ã¿ãŒã¯è€æ°ã®ããŒãã§æ§æãããã©ã®ããŒãã§ãã¯ã©ã¹ã¿ãŒã®ãã¹ãŠã®åœ¹å²ãå®è¡ã§ããŸãããå€§èŠæš¡ãªå°å ¥ã§ã¯éåžžãããŒãã«åå¥ã®ã¿ã¹ã¯ãå²ãåœãŠãããŸãã
ã¯ã©ã¹ã¿ãŒ ããŒãã®çš®é¡:
- ãã¹ã¿ãŒ ããŒã - ã¯ã©ã¹ã¿ãŒã管çããŸããå°ãªããšã 3 ã€å¿ èŠã§ã1 ã€ã¯åžžã«ã¢ã¯ãã£ãã§ãã
- ããŒã¿ ããŒã - ã€ã³ããã¯ã¹ä»ããããããŒã¿ãä¿åããããã䜿çšããŠããŸããŸãªã¿ã¹ã¯ãå®è¡ããŸãã
- åã蟌ã¿ããŒã - ã€ã³ããã¯ã¹äœæåã®ããŒã¿å€æçšã®ãã€ãã©ã€ã³ãæŽçããŸãã
- 調æŽããŒã - ãªã¯ãšã¹ãã®ã«ãŒãã£ã³ã°ãæ€çŽ¢åŠçãã§ãŒãºã®ççž®ã倧éã€ã³ããã¯ã¹ã®èª¿æŽã
- ã¢ã©ãŒãããŒã - ã¢ã©ãŒãæã«ã¿ã¹ã¯ãèµ·åããŸãã
- æ©æ¢°åŠç¿ããŒã - æ©æ¢°åŠç¿ã¿ã¹ã¯ãåŠçããŸãã
äžã®å³ã¯ãããŒã¿ã®å¯çšæ§ãé«ããããã«ãããŒã¿ãã©ã®ããã«ããŒãéã§ä¿åããã³è€è£œããããã瀺ããŠããŸãã

åã¬ããªã«ã®ããŒã¿ã¯è»¢çœ®ã€ã³ããã¯ã¹ã«ä¿åãããŸããäžã®å³ã¯ãããã©ã®ããã«è¡ããããã瀺ããŠããŸãã

ã€ã³ã¹ããŒã«
詳现ã¯ä»¥äžãã芧ãã ãã ãç§ã¯Helmãã£ãŒãã䜿ããŸã:
$ helm install efk-stack stable/elastic-stack --set logstash.enabled=false --set fluentd.enabled=true --set fluentd-elasticsPLGã¹ã¿ãã¯
ãã®é åèªãèŠã€ãããªããŠãé©ããªãã§ãã ãããGrafana LokiãšããŠããç¥ãããŠããŸãããããã«ããããã®ã¹ã¿ãã¯ã¯å®çžŸã®ããæè¡çãœãªã¥ãŒã·ã§ã³ã䜿çšããŠããããã人æ°ãé«ãŸã£ãŠããŸãã人æ°ã®å¯èŠåããŒã«ã§ããGrafanaã«ã€ããŠèããããšããããããããŸããããã®éçºè ã¯ãPrometheusã«è§ŠçºãããŠãæ°Žå¹³ã¹ã±ãŒã©ãã«ã§é«æ§èœãªãã°éçŽã·ã¹ãã ã§ããLokiãéçºããŸãããLokiã¯ãã°èªäœã§ã¯ãªãã¡ã¿ããŒã¿ã®ã¿ãã€ã³ããã¯ã¹åãããããæäœãç°¡åã§ã³ã¹ãå¹çã«åªããŠããŸãã
ããã ããŒã« â ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãã Loki ã¯ã©ã¹ã¿ãŒã«ãã°ãéä¿¡ãããšãŒãžã§ã³ãã ã°ã©ãã¡ã â Loki ã®ããŒã¿ã«åºã¥ããèŠèŠåããŒã«ã

Loki 㯠Prometheus ãšåãåçã«åºã¥ããŠæ§ç¯ãããŠãããããKubernetes ãã°ã®ä¿åãšåæã«é©ããŠããŸãã
ããã®å»ºç¯
Loki ã¯ãã·ã³ã°ã«ããã»ã¹ ã¢ãŒããŸãã¯ãã«ãããã»ã¹ ã¢ãŒãã®ããããã§å®è¡ã§ããæ°Žå¹³ã¹ã±ãŒãªã³ã°ãå¯èœã§ãã

ã¢ããªã·ãã¯ã¢ããªã±ãŒã·ã§ã³ãšããŠããã€ã¯ããµãŒãã¹ãšããŠãåäœå¯èœã§ããåäžããã»ã¹ãšããŠå®è¡ããããšã§ãããŒã«ã«éçºãå°èŠæš¡ãªç£èŠã«äŸ¿å©ã§ããç£æ¥çšéã§ã®å®è£ ãã¹ã±ãŒã©ãã«ãªè² è·ã«ã¯ããã€ã¯ããµãŒãã¹ãªãã·ã§ã³ã®äœ¿çšããå§ãããŸããããŒã¿ã®æžã蟌ã¿ãã¹ãšèªã¿åããã¹ãåé¢ãããŠãããããå¿ èŠã«å¿ããŠåŸ®èª¿æŽãã¹ã±ãŒãªã³ã°ãå¯èœã§ãã
ãã°åéã·ã¹ãã ã®ã¢ãŒããã¯ãã£ã詳现ãªãã§èŠãŠã¿ãŸãããã

説æã¯æ¬¡ã®ãšããã§ãïŒãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£ïŒïŒ

ã³ã³ããŒãã³ãïŒ
ããã ããŒã« â ããŒãã«ïŒãµãŒãã¹ã»ãããšããŠïŒã€ã³ã¹ããŒã«ããããšãŒãžã§ã³ããã¿ã¹ã¯ãããã°ãååŸããKubernetes APIãåŒã³åºããŠãã°ã®ã©ãã«ä»ãã«äœ¿çšããã¡ã¿ããŒã¿ãååŸããŸãããã®åŸããã°ãã¡ã€ã³ã®LokiãµãŒãã¹ã«éä¿¡ããŸããã¡ã¿ããŒã¿ã®ãããã³ã°ã«ã¯ãPrometheusãšåãã©ãã«ä»ãã«ãŒã«ããµããŒããããŠããŸãã
ãã£ã¹ããªãã¥ãŒã¿ãŒ â ãããã¡ãšããŠæ©èœããé ä¿¡ãµãŒãã¹ã§ããæ°çŸäžä»¶ãã®ã¬ã³ãŒããåŠçããããã«ãåä¿¡ããŒã¿ããããã¯ã«å§çž®ããŸããè€æ°ã®ããŒã¿ã¬ã·ãŒããŒãåæã«åäœããŸããã3ã€ã®åä¿¡ããŒã¿ã¹ããªãŒã ã«å±ãããã°ã¯ããã®ãã¹ãŠã®ãããã¯ã«ãããŠãããããã®ã¬ã·ãŒããŒã«ã®ã¿æ ŒçŽãããŸããããã¯ãã¬ã·ãŒããŒã®ãªã³ã°ãšã·ãŒã±ã³ã·ã£ã«ããã·ã¥ã«ãã£ãŠæ§æãããŸãããã©ãŒã«ããã¬ã©ã³ã¹ãšåé·æ§ã確ä¿ããããããã®åŠçã¯nåïŒæªèšå®ã®å Žåã¯XNUMXåïŒå®è¡ãããŸãã
ã€ã³ãžã§ã¹ã¿ãŒ â åä¿¡åŽãµãŒãã¹ãããŒã¿ãããã¯ã¯ãã°ã远å ãããå§çž®ç¶æ ã§å°çããŸãããããã¯ãååãªå€§ããã«ãªããšãããŒã¿ããŒã¹ã«ãã©ãã·ã¥ãããŸããã¡ã¿ããŒã¿ã¯ã€ã³ããã¯ã¹ã«ããã°ãå«ããããã¯ã®ããŒã¿ã¯ãã£ã³ã¯ïŒéåžžã¯ãªããžã§ã¯ãã¹ãã¬ãŒãžïŒã«éãããŸãããã©ãã·ã¥åŸãåä¿¡åŽã¯æ°ãããããã¯ãäœæããããã«æ°ããã¬ã³ãŒãã远å ããŸãã

ç®æ¬¡ â ããŒã¿ããŒã¹ãDynamoDBãCassandraãGoogle BigTable ãªã©ã
ãã£ã³ã¯ â å§çž®ããããã° ãããã¯ãé垞㯠S3 ãªã©ã®ãªããžã§ã¯ã ã¹ãã¬ãŒãžã«ä¿åãããŸãã
ã¯ãšãªã¢ â é¢åãªäœæ¥ããã¹ãŠè¡ãèªã¿åããã¹ã§ããæéç¯å²ãšã¿ã°ã確èªããã€ã³ããã¯ã¹ãåç §ããŠäžèŽãããã®ãæ¢ããŸãããããŠãããŒã¿ãããã¯ãèªã¿åãããã£ã«ã¿ãªã³ã°ããŠçµæãååŸããŸãã
ããã§ã¯ãå®éã«åäœãèŠãŠã¿ãŸãããã
ã€ã³ã¹ããŒã«
Kubernetesã«ã€ã³ã¹ããŒã«ããæãç°¡åãªæ¹æ³ã¯ãhelmã䜿ãããšã§ãããã§ã«ã€ã³ã¹ããŒã«ãšèšå®ãå®äºããŠããããšãåæãšããŠããŸãïŒ çŽã 翻蚳è )
ãªããžããªã远å ããŠã¹ã¿ãã¯ãèšå®ããŸãã
$ helm repo add loki https://grafana.github.io/loki/charts
$ helm repo update
$ helm upgrade --install loki loki/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false以äžã¯ãEtcd ã¡ããªã¯ã¹ã® Prometheus ãš Etcd ããã ãã°ã® Loki ããã®ããŒã¿ã衚瀺ããããã·ã¥ããŒãã®äŸã§ãã

ããã§ã¯ãäž¡ã·ã¹ãã ã®ã¢ãŒããã¯ãã£ã«ã€ããŠèª¬æããããããã®æ©èœãæ¯èŒããŠã¿ãŸãããã
æ¯èŒ
ã¯ãšãªèšèª
Elasticsearchã¯ãQuery DSLãšLuceneã¯ãšãªèšèªã䜿çšããŠå šææ€çŽ¢æ©èœãæäŸããŸããå¹ åºãæŒç®åããµããŒããããæçãã匷åãªæ€çŽ¢ãšã³ãžã³ã§ããã³ã³ããã¹ãæ€çŽ¢ãšé¢é£æ§ã«åºã¥ããœãŒããå¯èœã§ãã
ãªã³ã°ã®å察åŽã«ã¯ãPromQLïŒPrometheusã¯ãšãªèšèªïŒã®åŸç¶ã§ããLokiã§äœ¿çšãããŠããLogQLããããŸããLogQLã¯ãã°ã¿ã°ã䜿çšããŠãã°ããŒã¿ããã£ã«ã¿ãªã³ã°ããã³ååŸããŸããåè¿°ã®ããã«ãããã€ãã®æŒç®åãšç®è¡æŒç®ã䜿çšã§ããŸãã ããããæ©èœé¢ã§ã¯ Elastic èšèªã«é ãããšã£ãŠããŸãã
Loki ã®ã¯ãšãªã¯ã©ãã«ã«é¢é£ä»ããããŠãããããã¡ããªãã¯ãšç°¡åã«çžé¢é¢ä¿ããšãããšãã§ãããããã䜿çšããŠéçšç£èŠãæŽçãããããªããŸãã
ã¹ã±ãŒã©ããªãã£
ã©ã¡ãã®ã¹ã¿ãã¯ãæ°Žå¹³æ¹åã«ã¹ã±ãŒã©ãã«ã§ãããLoki ã¯èªã¿åããšæžã蟌ã¿ã®ãã¹ãåé¢ãããŠããããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãæ¡çšããŠããããããã容æã«æ¡åŒµã§ããŸããLoki ã¯ããŒãºã«åãããŠã«ã¹ã¿ãã€ãºã§ããéåžžã«å€§éã®ãã°ããŒã¿ãåŠçã§ããŸãã
ãã«ãããã³ã
ã¯ã©ã¹ã¿ãŒã®ãã«ãããã³ãã¯OPEXåæžã®å ±éã®ããŒãã§ãããã©ã¡ãã®ã¹ã¿ãã¯ããã«ãããã³ãæ©èœãæäŸããŸããElasticsearchã«ã¯ãããã€ãã® ã¯ã©ã€ã¢ã³ãåé¢ïŒã¯ã©ã€ã¢ã³ãããšã«åå¥ã®ã€ã³ããã¯ã¹ãã¯ã©ã€ã¢ã³ãããŒã¹ã®ã«ãŒãã£ã³ã°ãã¯ã©ã€ã¢ã³ãåºæã®ãã£ãŒã«ããæ€çŽ¢ãã£ã«ã¿ãŒãLoki㯠HTTP X-Scope-OrgID ããããŒã®åœ¢åŒã§ãã
ã®ã³ã¹ã
Lokiã¯ããŒã¿ãã€ã³ããã¯ã¹ããã®ã§ã¯ãªããã¡ã¿ããŒã¿ã®ã¿ãã€ã³ããã¯ã¹ãããããéåžžã«è²»çšå¯Ÿå¹æãé«ãã§ããããã«ããã ãªããžã§ã¯ã ã¹ãã¬ãŒãžã¯ãElasticsearch ã¯ã©ã¹ã¿ãŒã§äœ¿çšãããããã㯠ã¹ãã¬ãŒãžãããå®äŸ¡ã§ãããããã¡ã¢ãª (ãã£ãã·ã¥) ãç¯çŽã§ããŸãã
ãŸãšã
EFKã¹ã¿ãã¯ã¯ãåæãå¯èŠåãã¯ãšãªã®ããã®æå€§éã®æè»æ§ãšæ©èœè±å¯ãªKibanaã€ã³ã¿ãŒãã§ãŒã¹ãåããæ§ã ãªçšéã«äœ¿çšã§ããŸããæ©æ¢°åŠç¿æ©èœã远å ããããšã§ãããã«åŒ·åããããšãå¯èœã§ãã
Lokiã¹ã¿ãã¯ã¯ãã¡ã¿ããŒã¿æ€åºã¡ã«ããºã ãåããŠãããããKubernetesãšã³ã·ã¹ãã ã§åœ¹ç«ã¡ãŸããGrafanaãšãã°ã®æç³»åã«åºã¥ããŠãç£èŠçšã®ããŒã¿ãç°¡åã«çžé¢ãããããšãã§ããŸãã
ã³ã¹ããšé·æçãªãã°ä¿æã«é¢ããŠèšãã°ãLoki ã¯ã¯ã©ãŠã ãœãªã¥ãŒã·ã§ã³ãžã®åå ¥ã«æé©ãªéžæè¢ã§ãã
åžå Žã«ã¯ä»ã«ãå€ãã®ä»£æ¿ææ®µããããäžã«ã¯ããªãã«ãšã£ãŠããé©ãããã®ããããããããŸãããäŸãã°ãGKEåãã®Stackdriverçµ±åã¯åªããç£èŠãœãªã¥ãŒã·ã§ã³ãæäŸããŸãããã®èšäºã®åæã§ã¯ããããå«ããŠããŸããã
ãªã³ã¯ïŒ
ãã®èšäºã¯åŸæ¥å¡ã«ãã£ãŠç¿»èš³ãããHabr åãã«äœæãããŸããã â å®è·µçãªå°éå®¶ã«ããéäžã³ãŒã¹ããããªã³ãŒã¹ãäŒæ¥ç ä¿®ïŒKubernetesãDevOpsãDockerãAnsibleãCephãSREãAgileïŒ
åºæïŒ habr.com
