ืœื•ืงื™ - ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ื’ื™ืฉืช ืคืจื•ืžืชืื•ืก

ืžืฆื“ื™ืขื™ื, ื—ื‘ืจื•ื‘ื™ื™ื! ืœืงืจืืช ืชื—ื™ืœืช ื”ืจืฉืžื” ื—ื“ืฉื” ืœืงื•ืจืก "ืฉื™ื˜ื•ืช ื•ื›ืœื™ื ืฉืœ DevOps" ื”ื›ื™ื ื• ืขื‘ื•ืจื›ื ืชืจื’ื•ื ืฉืœ ื—ื•ืžืจ ืžืขื ื™ื™ืŸ.

ืžืืžืจ ื–ื” ื”ื•ื ื”ืงื“ืžื” ืงืฆืจื” ืœืœื•ืงื™. ืคืจื•ื™ืงื˜ ืœื•ืงื™ ื ืชืžืš ืขืœ ื™ื“ื™ ื’ืจืคืื ื” ื•ืžื›ื•ื•ืŸ ืœืื™ืกื•ืฃ ืจื™ื›ื•ื–ื™ ืฉืœ ื™ื•ืžื ื™ื (ืžืฉืจืชื™ื ืื• ืงื•ื ื˜ื™ื™ื ืจื™ื).

ื”ื”ืฉืจืื” ื”ืขื™ืงืจื™ืช ืœืœื•ืงื™ ื”ื™ื™ืชื” ืคืจื•ืžืชืื•ืก ืขื ื”ืจืขื™ื•ืŸ ืœื™ื™ืฉื ืืช ื”ื’ื™ืฉื•ืช ืฉืœื• ืœื ื™ื”ื•ืœ ื™ื•ืžื ื™ื:

  • ืฉื™ืžื•ืฉ ื‘ืชื•ื•ื™ื•ืช ืœืื—ืกื•ืŸ ื ืชื•ื ื™ื
  • ืฆืจื™ื›ืช ืžืฉืื‘ื™ื ื ืžื•ื›ื”

ื ื—ื–ื•ืจ ืœืขืงืจื•ื ื•ืช ืฉืœ ืคืจื•ืžืชืื•ืก ื•ื ื™ืชืŸ ื›ืžื” ื“ื•ื’ืžืื•ืช ืœืฉื™ืžื•ืฉ ื‘ื• ื‘ื”ืงืฉืจ ืฉืœ Kubernetes.

ื›ืžื” ืžื™ืœื™ื ืขืœ ืคืจื•ืžืชืื•ืก

ื›ื“ื™ ืœื”ื‘ื™ืŸ ื”ื™ื˜ื‘ ืื™ืš ืœื•ืงื™ ืขื•ื‘ื“, ื—ืฉื•ื‘ ืœืงื—ืช ืฆืขื“ ืื—ื•ืจื” ื•ืœื‘ืงืจ ืงืฆืช ื‘ืคืจื•ืžืชืื•ืก.

ืื—ื“ ื”ืžืืคื™ื™ื ื™ื ื”ืžื•ื‘ื”ืงื™ื ืฉืœ ืคืจื•ืžืชืื•ืก ื”ื•ื ื—ื™ืœื•ืฅ ืฉืœ ืžื“ื“ื™ื ืžื ืงื•ื“ื•ืช ืื™ืกื•ืฃ (ื‘ืืžืฆืขื•ืช ื™ืฆื•ืื ื™ื) ื•ืฉืžื™ืจืชื ื‘-TSDB (Time Series Data Base, ืžืกื“ ื ืชื•ื ื™ื ืฉืœ ืกื“ืจื•ืช ื–ืžืŸ) ื‘ืชื•ืกืคืช ืžื˜ื ื ืชื•ื ื™ื ื‘ืฆื•ืจืช ืชื•ื•ื™ื•ืช.

ืžื“ื•ืข ื–ื” ื”ื›ืจื—ื™

ืœืื—ืจื•ื ื” ื”ืคื›ื” ืคืจื•ืžืชืื•ืก ืœืกื˜ื ื“ืจื˜ ื“ื” ืคืงื˜ื• ื‘ืขื•ืœื ื”ืงื•ื ื˜ื™ื™ื ืจื™ื ื•ื”-Kubernetes: ื”ื”ืชืงื ื” ืฉืœื• ืคืฉื•ื˜ื” ืžืื•ื“, ื•ื‘ืืฉื›ื•ืœ Kubernetes ื™ืฉ ื‘ืชื—ื™ืœื” ื ืงื•ื“ืช ืงืฆื” ืขื‘ื•ืจ Prometheus. ืคืจื•ืžืชืื•ืก ื™ื›ื•ืœื” ื’ื ืœื—ืœืฅ ืžื“ื“ื™ื ืžื™ื™ืฉื•ืžื™ื ื”ืคืจื•ืกื™ื ื‘ืžื™ื›ืœ ืชื•ืš ืฉืžื™ืจื” ืขืœ ืชื•ื•ื™ื•ืช ืกืคืฆื™ืคื™ื•ืช. ืœื›ืŸ, ื ื™ื˜ื•ืจ ื™ื™ืฉื•ืžื™ื ืงืœ ืžืื•ื“ ืœื™ื™ืฉื•ื.

ืœืžืจื‘ื” ื”ืฆืขืจ, ืขื“ื™ื™ืŸ ืื™ืŸ ืคืชืจื•ืŸ ืกื•ื”ืจ ืœื ื™ื”ื•ืœ ื™ื•ืžื ื™ื, ื•ืืชื” ืฆืจื™ืš ืœืžืฆื•ื ืคืชืจื•ืŸ ืขื‘ื•ืจ ืขืฆืžืš:

  • ืฉื™ืจื•ืช ืขื ืŸ ืžื ื•ื”ืœ ืœืจื™ื›ื•ื– ื™ื•ืžื ื™ื (AWS, Azure ืื• Google)
  • ืฉื™ืจื•ืช ื ื™ื˜ื•ืจ "ื ื™ื˜ื•ืจ ื›ืฉื™ืจื•ืช" (ืœื“ื•ื’ืžื”, Datadog)
  • ื™ืฆื™ืจืช ืฉื™ืจื•ืช ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ืžืฉืœืš.

ืขื‘ื•ืจ ื”ืืคืฉืจื•ืช ื”ืฉืœื™ืฉื™ืช, ื”ืฉืชืžืฉืชื™ ื‘ืื•ืคืŸ ืžืกื•ืจืชื™ ื‘- Elasticsearch, ืœืžืจื•ืช ื”ืขื•ื‘ื“ื” ืฉืœื ืชืžื™ื“ ื”ื™ื™ืชื™ ืžืจื•ืฆื” ืžืžื ื” (ื‘ืžื™ื•ื—ื“ ื›ื‘ื“ื•ืช ื•ืžื•ืจื›ื‘ื•ืช ื”ื”ื’ื“ืจื” ืฉืœื”).

ืœื•ืงื™ ืชื•ื›ื ืŸ ื›ืš ืฉื™ื”ื™ื” ืงืœ ืœื™ื™ืฉื•ื ืขืœ ืคื™ ื”ืขืงืจื•ื ื•ืช ื”ื‘ืื™ื:

  • ืœื”ื™ื•ืช ืงืœ ืœื”ืชื—ื™ืœ
  • ืฆื•ืจื›ื™ื ืžืขื˜ ืžืฉืื‘ื™ื
  • ืขื‘ื•ื“ื” ืขืฆืžืื™ืช ืœืœื ืชื—ื–ื•ืงื” ืžื™ื•ื—ื“ืช
  • ืœืฉืžืฉ ื›ืชื•ืกืคืช ืœ-Prometheus ื›ื“ื™ ืœืกื™ื™ืข ื‘ื—ืงื™ืจื•ืช ื‘ืื’ื™ื

ืขื ื–ืืช, ื”ืคืฉื˜ื•ืช ื”ื–ื• ื‘ืื” ืขืœ ื—ืฉื‘ื•ืŸ ื›ืžื” ืคืฉืจื•ืช. ืื—ื“ ืžื”ื ื”ื•ื ืœื ืœื”ื•ืกื™ืฃ ืืช ื”ืชื•ื›ืŸ ืœืื™ื ื“ืงืก. ืœื›ืŸ, ื—ื™ืคื•ืฉ ื˜ืงืกื˜ ืื™ื ื• ื™ืขื™ืœ ืื• ืขืฉื™ืจ ื‘ืžื™ื•ื—ื“ ื•ืื™ื ื• ืžืืคืฉืจ ืœืฉืžื•ืจ ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืขืœ ืชื•ื›ืŸ ื”ื˜ืงืกื˜. ืื‘ืœ ืžื›ื™ื•ื•ืŸ ืฉืœื•ืงื™ ืจื•ืฆื” ืœื”ื™ื•ืช ื”ืžืงื‘ื™ืœื” ื•ื”ื”ืฉืœืžื” ืœ-grep ืœ-Prometheus, ื–ื” ืœื ื—ื™ืกืจื•ืŸ.

ื—ืงื™ืจืช ืชืงืจื™ืช

ื›ื“ื™ ืœื”ื‘ื™ืŸ ื˜ื•ื‘ ื™ื•ืชืจ ืžื“ื•ืข ืœื•ืงื™ ืื™ื ื• ื–ืงื•ืง ืœืื™ื ื“ืงืก, ื”ื‘ื” ื ื—ื–ื•ืจ ืœืฉื™ื˜ืช ื—ืงื™ืจืช ื”ืื™ืจื•ืขื™ื ื‘ื” ื”ืฉืชืžืฉื• ืžืคืชื—ื™ ืœื•ืงื™:

ืœื•ืงื™ - ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ื’ื™ืฉืช ืคืจื•ืžืชืื•ืก
1 ื”ืชืจืื” โ†’ 2 ืœื•ื— ืžื—ื•ื•ื ื™ื โ†’ 3 ืฉืื™ืœืชืช ืื“-ื”ื•ืง โ†’ 4 ืฆื‘ื™ืจืช ื™ื•ืžืŸ โ†’ 5 ืžืขืงื‘ ืžื‘ื•ื–ืจ โ†’ 6 ืชื™ืงื•ืŸ!
(1 ืื–ื”ืจื” โ†’ 2 ืœื•ื— ืžื—ื•ื•ื ื™ื โ†’ 3 ืฉืื™ืœืชืช ืื“-ื”ื•ืง โ†’ 4 ืฆื‘ื™ืจื” ื™ื•ืžืŸ โ†’ 5 ืžืขืงื‘ ืžื‘ื•ื–ืจ โ†’ 6 ืชื™ืงื•ืŸ!)

ื”ืจืขื™ื•ืŸ ื”ื•ื ืฉื ืงื‘ืœ ืื™ื–ื•ืฉื”ื™ ื”ืชืจืื” (Slack Notification, SMS ื•ื›ื•') ื•ืื—ืจื™ ื–ื”:

  • ืชืกืชื›ืœ ืขืœ ืœื•ื—ื•ืช ื”ืžื—ื•ื•ื ื™ื ืฉืœ Grafana
  • ืชืกืชื›ืœ ืขืœ ืžื“ื“ื™ ืฉื™ืจื•ืช (ืœื“ื•ื’ืžื”, ื‘-Prometheus)
  • ื”ืกืชื›ืœ ืขืœ ืขืจื›ื™ ื™ื•ืžืŸ (ืœื“ื•ื’ืžื”, ื‘- Elasticsearch)
  • ืื•ืœื™ ืชืกืชื›ืœ ืขืœ ืขืงื‘ื•ืช ืžื‘ื•ื–ืจื•ืช (ื™ื™ื’ืจ, ื–ื™ืคืงื™ืŸ ื•ื›ื•')
  • ื•ืœื‘ืกื•ืฃ ืœืชืงืŸ ืืช ื”ื‘ืขื™ื” ื”ืžืงื•ืจื™ืช.

ื›ืืŸ, ื‘ืžืงืจื” ืฉืœ ืžื—ืกื ื™ืช Grafana + Prometheus + Elasticsearch + Zipkin, ืชืฆื˜ืจืš ืœื”ืฉืชืžืฉ ื‘ืืจื‘ืขื” ื›ืœื™ื ืฉื•ื ื™ื. ื›ื“ื™ ืœื—ืกื•ืš ื–ืžืŸ, ื–ื” ื™ื”ื™ื” ื ื—ืžื“ ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœืขืฉื•ืช ืืช ื›ืœ ื”ืฉืœื‘ื™ื ื”ืืœื” ืขื ื›ืœื™ ืื—ื“: Grafana. ืจืื•ื™ ืœืฆื™ื™ืŸ ื›ื™ ื’ื™ืฉื” ื–ื• ืœืžื—ืงืจ ืžื™ื•ืฉืžืช ื‘ื’ืจืคืื ื” ืžืื– ื’ืจืกื” 6. ื›ืš, ื ื™ืชืŸ ืœื’ืฉืช ืœื ืชื•ื ื™ ืคืจื•ืžืชืื•ืก ื™ืฉื™ืจื•ืช ืžื’ืจืคืื ื”.

ืœื•ืงื™ - ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ื’ื™ืฉืช ืคืจื•ืžืชืื•ืก
ืžืกืš Explorer ืžืคื•ืฆืœ ื‘ื™ืŸ ืคืจื•ืžืชืื•ืก ืœืœื•ืงื™

ืžืžืกืš ื–ื”, ืชื•ื›ืœื• ืœืฆืคื•ืช ื‘ื™ื•ืžื ื™ื ื‘ืœื•ืงื™ ื”ืงืฉื•ืจื™ื ืœืžื“ื“ื™ ืคืจื•ืžืชืื•ืก ื‘ืืžืฆืขื•ืช ืงื•ื ืกืคื˜ ื”ืžืกืš ื”ืžืคื•ืฆืœ. ืžืื– ื’ืจืกื” 6.5, Grafana ืžืืคืฉืจืช ืœืš ืœื ืชื— ืืช ืžื–ื”ื” ื”ืžืขืงื‘ ื‘ืขืจื›ื™ื ื‘ื™ื•ืžืŸ Loki ื›ื“ื™ ืœืขืงื•ื‘ ืื—ืจ ืงื™ืฉื•ืจื™ื ืœื›ืœื™ ื”ืžืขืงื‘ ื”ืžื‘ื•ื–ืจื™ื ื”ืžื•ืขื“ืคื™ื ืขืœื™ืš (Jaeger).

ืžื‘ื—ืŸ ืžืงื•ืžื™ ืฉืœ ืœื•ืงื™

ื”ื“ืจืš ื”ืงืœื” ื‘ื™ื•ืชืจ ืœื‘ื“ื•ืง ืืช Loki ื‘ืื•ืคืŸ ืžืงื•ืžื™ ื”ื™ื ืœื”ืฉืชืžืฉ ื‘-docer-compose. ื”ืงื•ื‘ืฅ docker-compose ื ืžืฆื ื‘ืžืื’ืจ Loki. ืืชื” ื™ื›ื•ืœ ืœืงื‘ืœ ืืช ื”ืžืื’ืจ ืขื ื”ืคืงื•ื“ื” ื”ื‘ืื” git:

$ git clone https://github.com/grafana/loki.git

ืื– ืืชื” ืฆืจื™ืš ืœืขื‘ื•ืจ ืœืกืคืจื™ื™ืช ื”ื™ื™ืฆื•ืจ:

$ cd production

ืœืื—ืจ ืžื›ืŸ, ืืชื” ื™ื›ื•ืœ ืœืงื‘ืœ ืืช ื”ืชืžื•ื ื•ืช ื”ืื—ืจื•ื ื•ืช ืฉืœ Docker:

$ docker-compose pull

ืœื‘ืกื•ืฃ, ืขืจื™ืžืช Loki ืžืชื—ื™ืœื” ืขื ื”ืคืงื•ื“ื” ื”ื‘ืื”:

$ docker-compose up

ืื“ืจื™ื›ืœื•ืช ืœื•ืงื™

ื”ื ื” ืชืจืฉื™ื ืงื˜ืŸ ืขื ืืจื›ื™ื˜ืงื˜ื•ืจืช ืœื•ืงื™:

ืœื•ืงื™ - ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ื’ื™ืฉืช ืคืจื•ืžืชืื•ืก
ืขืงืจื•ื ื•ืช ืื“ืจื™ื›ืœื•ืช ืœื•ืงื™

ืœืงื•ื— ื”ืื™ื ื˜ืจื ื˜ ืžืจื™ืฅ ื™ื™ืฉื•ืžื™ื ืขืœ ื”ืฉืจืช, Promtail ืื•ืกืฃ ืœื•ื’ื™ื ื•ืฉื•ืœื— ืื•ืชื ืœืœื•ืงื™, ืœืงื•ื— ื”ืื™ื ื˜ืจื ื˜ ื’ื ืฉื•ืœื— ืžื˜ื ื ืชื•ื ื™ื ืœืœื•ืงื™. ืœื•ืงื™ ืฆื•ื‘ืจ ื”ื›ืœ ื•ืžืขื‘ื™ืจ ืื•ืชื• ืœื’ืจืคืื ื”.
ืœื•ืงื™ ืจืฅ. ื›ื“ื™ ืœื”ืฆื™ื’ ืืช ื”ืจื›ื™ื‘ื™ื ื”ื–ืžื™ื ื™ื, ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

$ 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: ื›ืœื™ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื”ืžืคื•ืจืกื
  • ืœื•ืงื™: ื“ืžื•ืŸ ืจื™ื›ื•ื– ื”ื ืชื•ื ื™ื

ื›ื—ืœืง ืžืชืฉืชื™ืช ืงืœืืกื™ืช (ืœื“ื•ื’ืžื”, ื”ืžื‘ื•ืกืกืช ืขืœ ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช), ื™ืฉ ืœืคืจื•ืก ืืช ืกื•ื›ืŸ Promtail ื‘ื›ืœ ืžื—ืฉื‘. ื ื™ืชืŸ ืœื”ืชืงื™ืŸ ืืช Grafana ื•ืœื•ืงื™ ืขืœ ืื•ืชื” ืžื›ื•ื ื”.

ืคืจื™ืกื” ืœ-Kubernetes

ื”ืชืงื ืช ืจื›ื™ื‘ื™ Loki ื‘- Kubernetes ืชื”ื™ื” ื›ื“ืœืงืžืŸ:

  • daemonSet ืœืคืจื•ืก ืืช ืกื•ื›ืŸ Promtail ื‘ื›ืœ ืื—ืช ืžื”ืžื›ื•ื ื•ืช ื‘ืืฉื›ื•ืœ ื”ืฉืจืชื™ื
  • ืคืจื™ืกืช ืœื•ืงื™
  • ื•ื”ืื—ืจื•ืŸ ื”ื•ื ืคืจื™ืกืช ื’ืจืคืื ื”.

ืœืžืจื‘ื” ื”ืžื–ืœ, Loki ื–ืžื™ืŸ ื›ื—ื‘ื™ืœืช Helm, ืžื” ืฉืžืงืœ ืขืœ ื”ืคืจื™ืกื”.

ื”ืชืงื ื” ื“ืจืš ื”ืžืœ

ืืชื” ื›ื‘ืจ ืืžื•ืจ ืœื”ืชืงื™ืŸ ืืช Heml. ื ื™ืชืŸ ืœื”ื•ืจื™ื“ ืื•ืชื• ืžืžืื’ืจ GitHub ืฉืœ ื”ืคืจื•ื™ืงื˜. ื”ื•ื ืžื•ืชืงืŸ ืขืœ ื™ื“ื™ ื—ื™ืœื•ืฅ ื”ืืจื›ื™ื•ืŸ ื”ืžืชืื™ื ืœืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœืš ื•ื”ื•ืกืคืช ื”ื’ื” ืืœื™ื• $PATH.

ื”ืขืจื”: ื’ืจืกื” 3.0.0 ืฉืœ Helm ืฉื•ื—ืจืจื” ืœืื—ืจื•ื ื”. ืžื›ื™ื•ื•ืŸ ืฉื—ืœื• ื‘ื• ืฉื™ื ื•ื™ื™ื ืจื‘ื™ื, ืžื•ืžืœืฅ ืœืงื•ืจื ืœื”ืžืชื™ืŸ ืžืขื˜ ืœืคื ื™ ืชื—ื™ืœืช ื”ืฉื™ืžื•ืฉ ื‘ื•..

ื”ื•ืกืคืช ืžืงื•ืจ ืขื‘ื•ืจ Helm

ื”ืฆืขื“ ื”ืจืืฉื•ืŸ ื”ื•ื ื”ื•ืกืคืช ืžืื’ืจ "loki" ืขื ื”ืคืงื•ื“ื” ื”ื‘ืื”:

$ helm add loki https://grafana.github.io/loki/charts

ืœืื—ืจ ืžื›ืŸ, ืืชื” ื™ื›ื•ืœ ืœื—ืคืฉ ื—ื‘ื™ืœื•ืช ื‘ืฉื "ืœื•ืงื™":

$ 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
  • ื—ื‘ื™ืœื” ืœื•ืงื™/ืคืœื•ืื ื˜-ื‘ื™ื˜ ืžืืคืฉืจ ืœืš ืœืคืจื•ืก ืืช DaemonSet ื‘ืืžืฆืขื•ืช fluent-bin ืœืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ืžืงื•ื Promtail
  • ื—ื‘ื™ืœื” loki/promtail ืžื›ื™ืœ ืกื•ื›ืŸ ืื™ืกื•ืฃ ื™ื•ืžื ื™ื
  • ื—ื‘ื™ืœื” ืœื•ืงื™/ืœื•ืงื™-ืžื—ืกื ื™ืช, ืžืืคืฉืจ ืœืš ืœืคืจื•ืก ืžื™ื“ ืืช Loki ื™ื—ื“ ืขื Promtail.

ืžืชืงื™ืŸ ืืช ืœื•ืงื™

ื›ื“ื™ ืœืคืจื•ืก ืืช Loki ืœ-Kubernetes, ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื” ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช "ื ื™ื˜ื•ืจ":

$ 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

ื›ืœ ื”ืชืจืžื™ืœื™ื ืคื•ืขืœื™ื. ืขื›ืฉื™ื• ื”ื’ื™ืข ื”ื–ืžืŸ ืœืขืฉื•ืช ื›ืžื” ื‘ื“ื™ืงื•ืช!

ืžืชื—ื‘ืจ ืœื’ืจืคืื ื”

ื›ื“ื™ ืœื”ืชื—ื‘ืจ ืœื’ืจืคืื ื” ืžืชื—ืช ืœืงื•ื‘ืจื ื˜ืก, ืฆืจื™ืš ืœืคืชื•ื— ืžื ื”ืจื” ืœืชืจืžื™ืœ ืฉืœื”. ืœื”ืœืŸ ื”ืคืงื•ื“ื” ืœืคืชื™ื—ืช ื™ืฆื™ืื” 3000 ืขื‘ื•ืจ ืชืจืžื™ืœ Grafana:

$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80

ื ืงื•ื“ื” ื—ืฉื•ื‘ื” ื ื•ืกืคืช ื”ื™ื ื”ืฆื•ืจืš ืœืฉื—ื–ืจ ืืช ืกื™ืกืžืช ื”ืžื ื”ืœ ืฉืœ Grafana. ื”ืกื™ืกืžื” ื ืฉืžืจืช ื‘ืกื•ื“ loki-grafana ื‘ืชื—ื•ื .data.admin-user ื‘ืคื•ืจืžื˜ base64.

ื›ื“ื™ ืœืฉื—ื–ืจ ืื•ืชื•, ืขืœื™ืš ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

$ kubectl -n monitoring get secret loki-grafana 
 --template '{{index .data "admin-password" | base64decode}}'; echo

ื”ืฉืชืžืฉ ื‘ืกื™ืกืžื” ื–ื• ื‘ืฉื™ืœื•ื‘ ืขื ื—ืฉื‘ื•ืŸ ืžื ื”ืœ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ (ืื“ืžื™ืŸ).

ื”ื’ื“ืจืช ืžืงื•ืจ ื”ื ืชื•ื ื™ื ืฉืœ ืœื•ืงื™ ื‘ื’ืจืคืื ื”

ืงื•ื“ื ื›ืœ, ื•ื“ื ืฉืžืงื•ืจ ื”ื ืชื•ื ื™ื ืฉืœ Loki (Configuration / Datasource) ื ื•ืฆืจ.
ื”ื ื” ื“ื•ื’ืžื”:

ืœื•ืงื™ - ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ื’ื™ืฉืช ืคืจื•ืžืชืื•ืก
ื“ื•ื’ืžื” ืœื”ื’ื“ืจืช ืžืงื•ืจ ื ืชื•ื ื™ื ืขื‘ื•ืจ ืœื•ืงื™

ืขืœ ื™ื“ื™ ืœื—ื™ืฆื” ืขืœ "ื‘ื“ื™ืงื”" ืชื•ื›ืœ ืœื‘ื“ื•ืง ืืช ื”ืงืฉืจ ืขื ืœื•ืงื™.

ืžื’ื™ืฉ ื‘ืงืฉื•ืช ืœืœื•ืงื™

ื›ืขืช ืขื‘ื•ืจ ืœื’ืจืคืื ื” ื•ืขื‘ื•ืจ ืœืงื˜ืข "ื—ืงืจ". ื‘ืขืช ืงื‘ืœืช ื™ื•ืžื ื™ื ืžืžื›ื•ืœื•ืช, ืœื•ืงื™ ืžื•ืกื™ืฃ ืžื˜ื ื ืชื•ื ื™ื ืž-Kubernetes. ื›ืš, ื–ื” ื”ื•ืคืš ืœื”ื™ื•ืช ืืคืฉืจื™ ืœื”ืฆื™ื’ ืืช ื”ื™ื•ืžื ื™ื ืฉืœ ืžื™ื›ืœ ืžืกื•ื™ื.

ืœื“ื•ื’ืžื”, ืœื‘ื—ื™ืจืช ื™ื•ืžื ื™ ืžื™ื›ืœ ืฉืœ promtail, ืชื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ืฉืื™ืœืชื” ื”ื‘ืื”: {container_name = "promtail"}.
ืืœ ืชืฉื›ื— ืœื‘ื—ื•ืจ ืืช ืžืงื•ืจ ื”ื ืชื•ื ื™ื ืฉืœ Loki ื’ื ื›ืืŸ.

ืฉืื™ืœืชื” ื–ื• ืชื—ื–ื™ืจ ืคืขื™ืœื•ืช ืžื™ื›ืœ ื‘ืื•ืคืŸ ื”ื‘ื:

ืœื•ืงื™ - ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ื’ื™ืฉืช ืคืจื•ืžืชืื•ืก
ืชื•ืฆืืช ืฉืื™ืœืชื” ื‘ื’ืจืคืื ื”

ื”ื•ืกืคื” ืœืœื•ื— ื”ืžื—ื•ื•ื ื™ื

ื”ื—ืœ ืž-Grafana 6.4, ืืคืฉืจ ืœืฉื™ื ืคืจื˜ื™ ื™ื•ืžืŸ ื™ืฉื™ืจื•ืช ืขืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื. ืœืื—ืจ ืžื›ืŸ, ื”ืžืฉืชืžืฉ ื™ื•ื›ืœ ืœืขื‘ื•ืจ ื‘ืžื”ื™ืจื•ืช ื‘ื™ืŸ ืžืกืคืจ ื”ื‘ืงืฉื•ืช ื‘ืืชืจ ืฉืœื• ืœืขืงื‘ื•ืช ืืคืœื™ืงืฆื™ื•ืช.

ืœื”ืœืŸ ื“ื•ื’ืžื” ืœืœื•ื— ืžื—ื•ื•ื ื™ื ืฉืžื™ื™ืฉื ืืช ื”ืื™ื ื˜ืจืืงืฆื™ื” ื”ื–ื•:

ืœื•ืงื™ - ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ื’ื™ืฉืช ืคืจื•ืžืชืื•ืก
ืœื•ื— ืžื—ื•ื•ื ื™ื ืœื“ื•ื’ืžื ืขื ืžื“ื“ื™ Prometheus ื•ื™ื•ืžื ื™ ืœื•ืงื™

ื”ืขืชื™ื“ ืฉืœ ืœื•ืงื™

ื”ืชื—ืœืชื™ ืœื”ืฉืชืžืฉ ื‘ืœื•ืงื™ ื‘ืžืื™/ื™ื•ื ื™ ืขื ื’ืจืกื” 0.1. ื’ืจืกื” 1 ื›ื‘ืจ ืฉื•ื—ืจืจื” ื”ื™ื•ื, ื•ืืคื™ืœื• 1.1 ื•-1.2.

ื—ื™ื™ื‘ื™ื ืœื”ื•ื“ื•ืช ืฉื’ืจืกื” 0.1 ืœื ื”ื™ื™ืชื” ื™ืฆื™ื‘ื” ืžืกืคื™ืง. ืื‘ืœ 0.3 ื›ื‘ืจ ื”ืจืื” ืกื™ืžื ื™ื ืืžื™ืชื™ื™ื ืฉืœ ื‘ื’ืจื•ืช, ื•ื”ื’ืจืกืื•ืช ื”ื‘ืื•ืช (0.4, ื•ืื– 1.0) ืจืง ื—ื™ื–ืงื• ืืช ื”ืจื•ืฉื ื”ื–ื”.

ืื—ืจื™ 1.0.0, ืœืืฃ ืื—ื“ ืœื ื™ื›ื•ืœ ืœื”ื™ื•ืช ืชื™ืจื•ืฅ ืœื ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ ื”ื ืคืœื ื”ื–ื”.

ืฉื™ืคื•ืจื™ื ื ื•ืกืคื™ื ืœื ืฆืจื™ื›ื™ื ืœื”ืชื™ื™ื—ืก ืœ-Loki, ืืœื ืœืฉื™ืœื•ื‘ ืฉืœื• ืขื Grafana ื”ืžืขื•ืœื”. ืœืžืขืฉื”, ืœ-Grafana 6.4 ื›ื‘ืจ ื™ืฉ ืื™ื ื˜ื’ืจืฆื™ื” ื˜ื•ื‘ื” ืขื ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื.

Grafana 6.5, ืฉืฉื•ื—ืจืจ ืœืื—ืจื•ื ื”, ืžืฉืคืจ ืขื•ื“ ื™ื•ืชืจ ืื™ื ื˜ื’ืจืฆื™ื” ื–ื• ืขืœ ื™ื“ื™ ื–ื™ื”ื•ื™ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ื”ืชื•ื›ืŸ ืฉืœ ื™ื•ืžื ื™ื ื‘ืคื•ืจืžื˜ JSON.

ื”ืกืจื˜ื•ืŸ ืฉืœื”ืœืŸ ืžืฆื™ื’ ื“ื•ื’ืžื” ืงื˜ื ื” ืœืžื ื’ื ื•ืŸ ื–ื”:

ืœื•ืงื™ - ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ื’ื™ืฉืช ืคืจื•ืžืชืื•ืก
ืฉื™ืžื•ืฉ ื‘ืžื—ืจื•ื–ื•ืช ืœื•ืงื™ ืฉื ื™ืชื ื• ื‘ื’ืจืคืื ื”

ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืื—ื“ ืžืฉื“ื•ืช ื”-JSON, ืœืžืฉืœ, ื›ื“ื™:

  • ืงื™ืฉื•ืจื™ื ืœื›ืœื™ ื—ื™ืฆื•ื ื™
  • ืกื™ื ื•ืŸ ืชื•ื›ืŸ ื™ื•ืžืŸ

ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืœืœื—ื•ืฅ ืขืœ traceId ื›ื“ื™ ืœืขื‘ื•ืจ ืืœ Zipkin ืื• Jaeger.

ื›ืจื’ื™ืœ, ืื ื• ืžืฆืคื™ื ืœื”ืขืจื•ืชื™ื›ื ื•ืžื–ืžื™ื ื™ื ืืชื›ื ืกืžื™ื ืจ ืžืงื•ื•ืŸ ืคืชื•ื—, ืฉื ื ื“ื‘ืจ ืขืœ ื”ืื•ืคืŸ ืฉื‘ื• ืชืขืฉื™ื™ืช ื”-DevOps ื”ืชืคืชื—ื” ื‘ืžื”ืœืš 2019 ื•ื ื“ื•ืŸ ื‘ื ืชื™ื‘ื™ ืคื™ืชื•ื— ืืคืฉืจื™ื™ื ืœืฉื ืช 2020.

ืžืงื•ืจ: www.habr.com