ããããã¹ã¯äœæ°ã®çãããæ¬ç€ŒïŒ ã³ãŒã¹ã®æ°èŠç»é²éå§åå€
ãã®èšäºã¯ Loki ã«ã€ããŠã®ç°¡åãªçŽ¹ä»ã§ãã ãããžã§ã¯ãã»ãã
ããã®äž»ãªã€ã³ã¹ãã¬ãŒã·ã§ã³ã¯æ¬¡ã®ãšããã§ãã
- ã©ãã«ã䜿çšããŠããŒã¿ãä¿åãã
- è³æºã®æ¶è²»ãå°ãªã
Prometheus ãã©ã®ããã«æ©èœãããã«æ»ããKubernetes ã®ã³ã³ããã¹ãã§ã® Prometheus ã®äœ¿çšäŸãããã€ã瀺ããŸãã
ããã¡ããŠã¹ã«ã€ããŠäžèš
Loki ãã©ã®ããã«æ©èœããããå®å šã«ç解ããã«ã¯ãäžæ©äžãã£ãŠ Prometheus ã«ã€ããŠå°ãæãåºãããšãéèŠã§ãã
Prometheus ã®ç¹åŸŽçãªæ©èœã® XNUMX ã€ã¯ãåéãã€ã³ããã (ãšã¯ã¹ããŒã¿ãŒçµç±ã§) ã¡ããªã¯ã¹ãæœåºããããããã©ãã«ã®åœ¢åŒã§ã¡ã¿ããŒã¿ãè¿œå ã㊠TSDB (æç³»åããŒã¿ããŒã¹) ã«ä¿åããããšã§ãã
ãªãããªãã¯ãããå¿ èŠã§ãã
æè¿ãPrometheus ã¯ã³ã³ãããŒãš Kubernetes ã®äžçã«ãããäºå®äžã®æšæºã«ãªããŸããããã®ã€ã³ã¹ããŒã«ã¯éåžžã«ç°¡åã§ãKubernetes ã¯ã©ã¹ã¿ãŒã«ã¯ Prometheus ã®ãã€ãã£ã ãšã³ããã€ã³ããä»å±ããŠããŸãã Prometheus ã¯ãç¹å®ã®ã©ãã«ãä¿åããªãããã³ã³ãããŒã«ãããã€ãããã¢ããªã±ãŒã·ã§ã³ããã¡ããªã¯ã¹ãæœåºããããšãã§ããŸãã ãããã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®ç£èŠã¯éåžžã«ç°¡åã«å®è£ ã§ããŸãã
æ®å¿µãªããããã°ç®¡çã®ããã®ã¿ãŒã³ã㌠ãœãªã¥ãŒã·ã§ã³ã¯ãŸã ååšãããèªåã§ãœãªã¥ãŒã·ã§ã³ãèŠã€ããå¿ èŠããããŸãã
- ãã°ãäžå 管çããããã®ãããŒãžã ã¯ã©ãŠã ãµãŒãã¹ (AWSãAzureããŸã㯠Google)
- ç£èŠãµãŒãã¹ããµãŒãã¹ãšããŠã®ç£èŠãïŒDatadog ãªã©ïŒ
- ç¬èªã®ãã°åéãµãŒãã¹ãäœæããŸãã
XNUMX çªç®ã®ãªãã·ã§ã³ã«ã€ããŠã¯ãå¿ ããã Elasticsearch ã«æºè¶³ããŠããããã§ã¯ãããŸããã§ããã (ç¹ã«æ§æã®éããšè€éã)ãç§ã¯åŸæ¥ Elasticsearch ã䜿çšããŠããŸããã
Loki ã¯ã次ã®ååã«åŸã£ãŠå®è£ ãç°¡çŽ åããããã«èšèšãããŸããã
- ç°¡åã«å§ããããããš
- ã»ãšãã©ãªãœãŒã¹ãæ¶è²»ããªã
- ç¹å¥ãªã¡ã³ããã³ã¹ãªãã§ç¬ç«ããŠåäœããŸã
- ãã°èª¿æ»ãæ¯æŽããããã® Prometheus ãžã®è¿œå æ©èœãšããŠæ©èœããŸã
ãã ãããã®ã·ã³ãã«ãã«ã¯ããã€ãã®åŠ¥åã䌎ããŸãã ãã®ãã¡ã® XNUMX ã€ã¯ãã³ã³ãã³ãã®ã€ã³ããã¯ã¹ãäœæããªãããšã§ãã ãããã£ãŠãããã¹ãæ€çŽ¢ã¯ããŸãå¹ççã§ãæ©èœçã§ããªããããã¹ãã®å 容ã«é¢ããçµ±èšãååŸã§ããŸããã ããããLoki 㯠grep ãšåçã§ãããPrometheus ãè£å®ãããã®ã§ããããšãæãã§ãããããã¯æ¬ ç¹ã§ã¯ãããŸããã
äºä»¶èª¿æ»
Loki ã«ã€ã³ããã¯ã¹äœæãå¿ èŠãªãçç±ãããããç解ããããã«ãLoki éçºè ã䜿çšããã€ã³ã·ãã³ã調æ»æ¹æ³ã«æ»ã£ãŠã¿ãŸãããã
1 ã¢ã©ãŒã â 2 ããã·ã¥ããŒã â 3 ã¢ããã㯠ã¯ãšãª â 4 ãã°éçŽ â 5 åæ£ãã¬ãŒã¹ â 6 ä¿®æ£!
(1 èŠå â 2 ããã·ã¥ããŒã â 3 ã¢ããã㯠ã¯ãšãª â 4 ãã°éçŽ â 5 åæ£ãã¬ãŒã¹ â 6 ä¿®æ£!)
èãæ¹ãšããŠã¯ãäœããã®ã¢ã©ãŒã (Slack éç¥ãSMS ãªã©) ãåä¿¡ããåŸã次ã®ããã«ãªããŸãã
- Grafana ããã·ã¥ããŒããèŠãŠãã ãã
- ãµãŒãã¹ã¡ããªã¯ã¹ã確èªãã (Prometheus ãªã©)
- ãã°ãšã³ããªã確èªããŸãïŒããšãã°ãElasticsearchïŒ
- åæ£ãã¬ãŒã¹ (JaegerãZipkin ãªã©) ãèŠãŠã¿ãŸãããã
- ãããŠæçµçã«å ã®åé¡ãä¿®æ£ããŸãã
ããã§ãGrafana + Prometheus + Elasticsearch + Zipkin ã¹ã¿ãã¯ã®å Žåã6 ã€ã®ç°ãªãããŒã«ã䜿çšããå¿ èŠããããŸãã æéãççž®ããã«ã¯ãGrafana ãšãã XNUMX ã€ã®ããŒã«ã䜿çšããŠããããã¹ãŠã®æé ãå®è¡ã§ããã°äŸ¿å©ã§ãã 泚ç®ã«å€ããã®ã¯ããã®ç 究ã¢ãããŒãã Grafana ã®ããŒãžã§ã³ XNUMX 以éã«å®è£ ãããŠãããšããããšã§ããããã«ãããGrafana ãã Prometheus ããŒã¿ã«çŽæ¥ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã
ãšã¯ã¹ãããŒã©ãŒç»é¢ãããã¡ããŠã¹ãšããã«åå²
ãã®ç»é¢ãããåå²ç»é¢ã®æŠå¿µã䜿çšããŠãPrometheus ã¡ããªã¯ã¹ã«é¢é£ãã Loki ãã°ã衚瀺ã§ããŸãã ããŒãžã§ã³ 6.5 以éãGrafana ã§ã¯ãLoki ãã° ãšã³ããªã®ãã¬ãŒã¹ ID ã解æããŠããæ°ã«å ¥ãã®åæ£ãã¬ãŒã¹ ããŒã« (Jaeger) ãžã®ãªã³ã¯ããã©ãããšãã§ããŸãã
ããŒã«ã«ã® Loki ãã¹ã
Loki ãããŒã«ã«ã§ãã¹ãããæãç°¡åãªæ¹æ³ã¯ãdocker-compose ã䜿çšããããšã§ãã docker-compose ãã¡ã€ã«ã¯ Loki ãªããžããªã«ãããŸãã 次ã®ã³ãã³ãã䜿çšããŠãªããžããªãååŸã§ããŸã git
:
$ git clone https://github.com/grafana/loki.git
次ã«ãæ¬çªãã£ã¬ã¯ããªã«ç§»åããå¿ èŠããããŸãã
$ cd production
ããã«ãããææ°ããŒãžã§ã³ã® Docker ã€ã¡ãŒãžãååŸã§ããããã«ãªããŸãã
$ docker-compose pull
æåŸã«ã次ã®ã³ãã³ãã䜿çšã㊠Loki ã¹ã¿ãã¯ãèµ·åããŸãã
$ docker-compose up
ããã®å»ºç¯
以äžã«ãLoki ã¢ãŒããã¯ãã£ã®å°ããªå³ã瀺ããŸãã
Loki ã¢ãŒããã¯ãã£ã®åå
Web ã¯ã©ã€ã¢ã³ãã¯ãµãŒããŒäžã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããPromtail ã¯ãã°ãåéã㊠Loki ã«éä¿¡ããWeb ã¯ã©ã€ã¢ã³ãã¯ã¡ã¿ããŒã¿ã Loki ã«éä¿¡ããŸãã Loki ã¯ãã¹ãŠãéçŽã㊠Grafana ã«éä¿¡ããŸãã
ãããèµ·åããŸãã å©çšå¯èœãªã³ã³ããŒãã³ãã衚瀺ããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã
$ docker ps
æ°ããã€ã³ã¹ããŒã«ããã Docker ã®å Žåãã³ãã³ãã¯æ¬¡ã®çµæãè¿ãã¯ãã§ãã
IMAGE PORTS NAMES
grafana/promtail: production_promtail_1
grafana/grafana: m 0.0.0.0:3000->3000/tcp production_grafana_1
grafana/loki: late 80/tcp,0.0.0.0:3100... production_loki_1
次ã®ã³ã³ããŒãã³ãã衚瀺ãããŸãã
- Promtail: ãã°ã®äžå 管çãæ åœãããšãŒãžã§ã³ã
- Grafana: æåãªããã·ã¥ããŒã ããŒã«
- Loki: ããŒã¿éäžåããŒã¢ã³
ã¯ã©ã·ã㯠ã€ã³ãã©ã¹ãã©ã¯ã㣠(ããšãã°ãä»®æ³ãã·ã³ã«åºã¥ã) ã®äžéšãšããŠãPromtail ãšãŒãžã§ã³ããåãã·ã³ã«ãããã€ããå¿ èŠããããŸãã Grafana ãš Loki ã¯åããã·ã³ã«ã€ã³ã¹ããŒã«ã§ããŸãã
Kubernetes ãžã®ãããã€ã¡ã³ã
Kubernetes ãžã® Loki ã³ã³ããŒãã³ãã®ã€ã³ã¹ããŒã«ã¯æ¬¡ã®ããã«ãªããŸãã
- ãµãŒã㌠ã¯ã©ã¹ã¿ãŒå ã®åãã·ã³ã« Promtail ãšãŒãžã§ã³ãããããã€ããããã® daemonSet
- å±éãã
- æåŸã¯ Grafana ã®ãããã€ã¡ã³ãã§ãã
幞ããªããšã«ãLoki 㯠Helm ããã±ãŒãžãšããŠå ¥æã§ãããããç°¡åã«ãããã€ã§ããŸãã
Hemlã«ããã€ã³ã¹ããŒã«
Heml ã¯ãã§ã«ã€ã³ã¹ããŒã«ãããŠããã¯ãã§ãã ãããžã§ã¯ãã® GitHub ãªããžããªããããŠã³ããŒãã§ããŸãã ããã¯ãã¢ãŒããã¯ãã£ã«å¯Ÿå¿ããã¢ãŒã«ã€ãã解åããhelm ãè¿œå ããããšã§ã€ã³ã¹ããŒã«ãããŸãã $PATH
.
泚æïŒ Helm ã®ããŒãžã§ã³ 3.0.0 ãæè¿ãªãªãŒã¹ãããŸããã å€ãã®å€æŽãå ããããŠããããã䜿çšããåã«å°ãåŸ ã€ããšããå§ãããŸãã.
Helm ã®ãœãŒã¹ãè¿œå ãã
æåã®ã¹ãããã¯ã次ã®ã³ãã³ãã䜿çšããŠãlokiããªããžããªãè¿œå ããããšã§ãã
$ helm add loki https://grafana.github.io/loki/charts
ãã®åŸããlokiããšããååã®ããã±ãŒãžãæ€çŽ¢ã§ããŸãã
$ helm search loki
çµæïŒ
loki/loki 0.17.2 v0.4.0 Loki: like Prometheus, but for logs.
loki/loki-stack 0.19.1 v0.4.0 Loki: like Prometheus, but for logs.
loki/fluent-bit 0.0.2 v0.0.1 Uses fluent-bit Loki go plugin for...
loki/promtail 0.13.1 v0.4.0 Responsible for gathering logs and...
ãããã®ããã±ãŒãžã«ã¯æ¬¡ã®æ©èœããããŸãã
- ããã±ãŒãž ãã/ãã Loki ãµãŒããŒã®ã¿ã«äžèŽããŸã
- ããã±ãŒãž ãã/ãã«ãŒãšã³ãããã Promtail ã®ä»£ããã«ãfluent-bin ã䜿çšããŠãã°ãåéãã DaemonSet ããããã€ã§ããŸãã
- ããã±ãŒãž ãã/ããã ããŒã« ãã° ãã¡ã€ã«åéãšãŒãžã§ã³ããå«ãŸããŠããŸã
- ããã±ãŒãž ãã/ããã¹ã¿ãã¯ã䜿çšãããšãLoki ã Promtail ãšäžç·ã«ããã«ãããã€ã§ããŸãã
Loki ã®ã€ã³ã¹ããŒã«
Loki ã Kubernetes ã«ãããã€ããã«ã¯ããmonitoringãåå空éã§æ¬¡ã®ã³ãã³ããå®è¡ããŸãã
$ helm upgrade --install loki loki/loki-stack --namespace monitoring
ãã£ã¹ã¯ã«ä¿åããã«ã¯ããã©ã¡ãŒã¿ãè¿œå ããŸã --set loki.persistence.enabled = true:
$ helm upgrade --install loki loki/loki-stack
--namespace monitoring
--set loki.persistence.enabled=true
泚æïŒ Grafana ãåæã«ãããã€ããå Žåã¯ããã©ã¡ãŒã¿ãŒãè¿œå ããŸã
--set grafana.enabled = true
ãã®ã³ãã³ããå®è¡ãããšã次ã®åºåãåŸãããã¯ãã§ãã
LAST DEPLOYED: Tue Nov 19 15:56:54 2019
NAMESPACE: monitoring
STATUS: DEPLOYED
RESOURCES:
==> v1/ClusterRole
NAME AGE
loki-promtail-clusterrole 189d
âŠ
NOTES:
The Loki stack has been deployed to your cluster. Loki can now be added as a datasource in Grafana.
See <a href="http://docs.grafana.org/features/datasources/loki/">http://docs.grafana.org/features/datasources/loki/</a> for more details.
ãã¢ãã¿ãªã³ã°ãåå空éå ã®ãããã®ç¶æ ãèŠããšããã¹ãŠããããã€ãããŠããããšãããããŸãã
$ kubectl -n monitoring get pods -l release=loki
çµæïŒ
NAME READY STATUS RESTARTS AGE
loki-0 1/1 Running 0 147m
loki-promtail-9zjvc 1/1 Running 0 3h25m
loki-promtail-f6brf 1/1 Running 0 11h
loki-promtail-hdcj7 1/1 Running 0 3h23m
loki-promtail-jbqhc 1/1 Running 0 11h
loki-promtail-mj642 1/1 Running 0 62m
loki-promtail-nm64g 1/1 Running 0 24m
ãã¹ãŠã®ããããå®è¡ãããŠããŸãã ä»åºŠã¯ããã€ãã®ãã¹ããè¡ã£ãŠã¿ãŸãããã
ã°ã©ãã¡ããžã®æ¥ç¶
Kubernetes 㧠Grafana ã«æ¥ç¶ããã«ã¯ããã®ããããžã®ãã³ãã«ãéãå¿ èŠããããŸãã 以äžã¯ãGrafana ãããã®ããŒã 3000 ãéãã³ãã³ãã§ãã
$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80
ãã XNUMX ã€ã®éèŠãªç¹ã¯ãGrafana 管çè
ãã¹ã¯ãŒããå埩ããå¿
èŠãããããšã§ãã ãã¹ã¯ãŒãã¯ç§å¯ã«ãããŸã loki-grafana
ãã£ãŒã«ã㧠.data.admin-user
Base64圢åŒã§ã
埩å ããã«ã¯ã次ã®ã³ãã³ããå®è¡ããå¿ èŠããããŸãã
$ kubectl -n monitoring get secret loki-grafana
--template '{{index .data "admin-password" | base64decode}}'; echo
ãã®ãã¹ã¯ãŒãã¯ãããã©ã«ãã®ç®¡çè ã¢ã«ãŠã³ã (admin) ãšçµã¿åãããŠäœ¿çšââããŸãã
Grafana ã§ã® Loki ããŒã¿ ãœãŒã¹ã®å®çŸ©
ãŸããLoki ããŒã¿ ãœãŒã¹ãäœæãããŠããããšã確èªããŸã (æ§æ/ããŒã¿ãœãŒã¹)ã
次ã«äŸã瀺ããŸãïŒ
Loki ã®ããŒã¿ ãœãŒã¹ã®ã»ããã¢ããäŸ
ããã¹ãããã¯ãªãã¯ãããšãLoki ãšã®æ¥ç¶ã確èªã§ããŸãã
ããã«ãªã¯ãšã¹ãããã
次ã«ãGrafana ã®ãExploreãã»ã¯ã·ã§ã³ã«ç§»åããŸãã ã³ã³ãããããã°ãåä¿¡ãããšãLoki 㯠Kubernetes ããã¡ã¿ããŒã¿ãè¿œå ããŸãã ããã«ãããç¹å®ã®ã³ã³ããã®ãã°ãåç §ããããšãå¯èœã«ãªããŸãã
ããšãã°ãpromtail ã³ã³ãããŒã®ãã°ãéžæããã«ã¯ã次ã®ã¯ãšãªã䜿çšã§ããŸãã {container_name = "promtail"}
.
ããã§ããå¿ããã« Loki ããŒã¿ ãœãŒã¹ãéžæããŠãã ããã
ãã®ã¯ãšãªã¯æ¬¡ã®ããã«ã³ã³ãã ã¢ã¯ãã£ããã£ãè¿ããŸãã
Grafana ã§ã®ã¯ãšãªçµæ
ããã·ã¥ããŒãã«è¿œå
Grafana 6.4 以éã§ã¯ããã°æ å ±ãããã·ã¥ââããŒãã«çŽæ¥é 眮ã§ããããã«ãªããŸããã ãã®åŸããŠãŒã¶ãŒã¯ãµã€ãäžã®ãªã¯ãšã¹ãæ°ãšã¢ããªã±ãŒã·ã§ã³ ãã¬ãŒã¹ããã°ããåãæ¿ããããšãã§ããããã«ãªããŸãã
以äžã¯ããã®å¯Ÿè©±ãå®è£ ããããã·ã¥ããŒãã®äŸã§ãã
Prometheus ã¡ããªã¯ã¹ãš Loki ãã°ãå«ããµã³ãã« ããã·ã¥ããŒã
ããã®æªæ¥
ç§ã¯ 0.1 æã 1 æã«ããŒãžã§ã³ 1.1 㧠Loki ã䜿ãå§ããŸããã çŸåšãããŒãžã§ã³ 1.2ãããã«ã¯ XNUMX ãš XNUMX ããã§ã«ãªãªãŒã¹ãããŠããŸãã
ããŒãžã§ã³ 0.1 ãååã«å®å®ããŠããªãã£ãããšãèªããªããã°ãªããŸããã ãããã0.3 ã¯ãã§ã«æçã®å ããèŠããŠããããã®åŸã®ããŒãžã§ã³ (0.4ããã®åŸ 1.0) ã¯ãã®å°è±¡ãããã«åŒ·ããã ãã§ããã
1.0.0 以éããã®çŽ æŽãããããŒã«ã䜿ããªãèšãèš³ã¯èª°ã«ãã§ããªããªããŸãã
ãããªãæ¹å㯠Loki ã«é¢ãããã®ã§ã¯ãªããåªãã Grafana ãšã®çµ±åã«é¢ãããã®ã§ããã¹ãã§ãã å®éãGrafana 6.4 ã¯ãã§ã«ããã·ã¥ããŒããšé©åã«çµ±åãããŠããŸãã
æè¿ãªãªãŒã¹ããã Grafana 6.5 ã§ã¯ãJSON 圢åŒã®ãã°å 容ãèªåçã«èªèããããšã§ããã®çµ±åãããã«æ¹åãããŸããã
以äžã®ãããªã¯ããã®ã¡ã«ããºã ã®å°ããªäŸã瀺ããŠããŸãã
Grafana ã§å
¬éãããŠãã Loki æååã®äœ¿çš
ããšãã°ãJSON ãã£ãŒã«ãã® XNUMX ã€ã次ã®ç®çã§äœ¿çšã§ããããã«ãªããŸãã
- å€éšããŒã«ãžã®ãªã³ã¯
- ãã°å 容ã®ãã£ã«ã¿ãªã³ã°
ããšãã°ãtraceId ãã¯ãªãã¯ãããšãZipkin ãŸã㯠Yeter ã«ç§»åã§ããŸãã
ãã€ãã®ããã«ãçæ§ããã®ã³ã¡ã³ãããåŸ
ã¡ããŠãããŸãã
åºæïŒ habr.com