Loki – ikojọpọ log ni lilo ọna Prometheus

Ẹ kí, awọn olugbe Khabrovsk! Ni aṣalẹ ti ibẹrẹ ti iforukọsilẹ titun fun iṣẹ-ẹkọ naa "Awọn iṣe DevOps ati awọn irinṣẹ" A ti pese itumọ awọn ohun elo ti o nifẹ si fun ọ.

Nkan yii jẹ ifihan kukuru si Loki. Project Loki atilẹyin nipasẹ Grafana ati pe o ni ifọkansi si gbigba ti aarin ti awọn akọọlẹ (lati awọn olupin tabi awọn apoti).

Awọn ifilelẹ ti awọn awokose fun Loki wà Ipolowo pẹlu imọran ti lilo awọn ọna rẹ si iṣakoso log:

  • lilo awọn akole lati fipamọ data
  • agbara ti diẹ oro

A yoo pada si bii Prometheus ṣe n ṣiṣẹ ati fun diẹ ninu awọn apẹẹrẹ ti lilo rẹ ni aaye ti Kubernetes.

Awọn ọrọ diẹ nipa Prometheus

Lati loye ni kikun bi Loki ṣe n ṣiṣẹ, o ṣe pataki lati gbe igbesẹ kan pada ki o ranti diẹ nipa Prometheus.

Ọkan ninu awọn ẹya iyasọtọ ti Prometheus ni isediwon ti awọn metiriki lati awọn aaye gbigba (nipasẹ awọn olutaja) ati fifipamọ wọn ni TSDB (Ipilẹ Data Series Time), pẹlu afikun ti metadata ni irisi awọn aami.

Kini idi ti o nilo

Laipe, Prometheus ti di boṣewa de facto ni agbaye ti awọn apoti ati Kubernetes: fifi sori rẹ rọrun pupọ, ati iṣupọ Kubernetes wa pẹlu aaye opin abinibi fun Prometheus. Prometheus tun le yọ awọn metiriki jade lati awọn ohun elo ti a fi ranṣẹ sinu apoti kan lakoko ti o tọju awọn aami kan pato. Nitorinaa, ibojuwo ohun elo jẹ rọrun pupọ lati ṣe.

Laanu, ko si ojutu turnkey fun iṣakoso log, ati pe o gbọdọ wa ojutu kan fun ararẹ:

  • Iṣẹ awọsanma ti iṣakoso fun awọn akọọlẹ aarin (AWS, Azure tabi Google)
  • iṣẹ ibojuwo “abojuto bi iṣẹ kan” (fun apẹẹrẹ, Datadog)
  • ṣiṣẹda ara rẹ log gbigba iṣẹ.

Fun aṣayan kẹta, Mo lo Elasticsearch ni aṣa, laibikita otitọ pe Emi ko ni idunnu nigbagbogbo pẹlu rẹ (paapaa iwuwo ati idiju ti iṣeto).

Loki jẹ apẹrẹ lati rọrun imuse ni ibamu si awọn ipilẹ wọnyi:

  • jẹ rọrun lati bẹrẹ
  • je diẹ oro
  • ṣiṣẹ ni ominira laisi eyikeyi itọju pataki
  • ṣiṣẹ bi afikun si Prometheus lati ṣe iranlọwọ pẹlu awọn iwadii kokoro

Sibẹsibẹ, ayedero yii wa ni laibikita fun diẹ ninu awọn adehun. Ọkan ninu wọn kii ṣe itọka akoonu naa. Nitorinaa, wiwa ọrọ kii ṣe daradara tabi ọlọrọ ati pe ko gba awọn iṣiro laaye lori akoonu ti ọrọ naa. Ṣugbọn niwọn igba ti Loki fẹ lati jẹ deede ti grep ati iranlowo si Prometheus, eyi kii ṣe alailanfani.

Iwadii Iṣẹlẹ

Lati loye diẹ sii idi ti Loki ko nilo itọka, jẹ ki a pada si ọna iwadii iṣẹlẹ ti awọn olupilẹṣẹ Loki lo:

Loki – ikojọpọ log ni lilo ọna Prometheus
1 Itaniji → 2 Dasibodu → 3 Adhoc Ibeere → 4 Akopọ Wọle → 5 Titan kaakiri → 6 Fix!
(1 Ikilọ → 2 Dasibodu → 3 Adhoc Query → 4 Aggregation Wọle → 5 Pinpin Titọ → 6 Ṣiṣeduro!)

Ero naa ni pe a gba iru itaniji kan (Iwifunni Slack, SMS, ati bẹbẹ lọ) ati lẹhin iyẹn:

  • wo Grafana dashboards
  • wo awọn metiriki iṣẹ (fun apẹẹrẹ, ni Prometheus)
  • wo awọn titẹ sii wọle (fun apẹẹrẹ, ni Elasticsearch)
  • boya wo awọn itọpa ti a pin (Jaeger, Zipkin, ati bẹbẹ lọ)
  • ati nipari ojoro awọn atilẹba isoro.

Nibi, ninu ọran ti Grafana + Prometheus + Elasticsearch + Zipkin akopọ, iwọ yoo ni lati lo awọn irinṣẹ oriṣiriṣi mẹrin. Lati dinku akoko, yoo dara lati ni anfani lati ṣe gbogbo awọn igbesẹ wọnyi nipa lilo ohun elo kan: Grafana. O ṣe akiyesi pe ọna yii si iwadii ti ni imuse ni Grafana lati ẹya 6. Nitorinaa, o ṣee ṣe lati wọle si data Prometheus taara lati Grafana.

Loki – ikojọpọ log ni lilo ọna Prometheus
Iboju Explorer pin laarin Prometheus ati Loki

Lati iboju yii o le wo awọn akọọlẹ Loki ti o ni ibatan si awọn metiriki Prometheus nipa lilo ero iboju pipin. Lati ẹya 6.5, Grafana ngbanilaaye lati ṣe itupalẹ id itọpa ninu awọn titẹ sii log Loki lati tẹle awọn ọna asopọ si awọn irinṣẹ wiwa kaakiri ayanfẹ rẹ (Jaeger).

Idanwo Loki agbegbe

Ọna to rọọrun lati ṣe idanwo Loki ni agbegbe ni lati lo docker-compose. Faili olupilẹṣẹ docker wa ni ibi ipamọ Loki. O le gba ibi ipamọ naa nipa lilo pipaṣẹ atẹle git:

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

Lẹhinna o nilo lati lọ si itọsọna iṣelọpọ:

$ cd production

Lẹhin eyi o le gba ẹya tuntun ti awọn aworan Docker:

$ docker-compose pull

Ni ipari, akopọ Loki ti ṣe ifilọlẹ pẹlu aṣẹ atẹle:

$ docker-compose up

Loki faaji

Eyi ni aworan kekere kan pẹlu faaji Loki:

Loki – ikojọpọ log ni lilo ọna Prometheus
Loki Architecture Ilana

Onibara wẹẹbu nṣiṣẹ awọn ohun elo lori olupin naa, Promtail gba awọn akọọlẹ ati firanṣẹ si Loki, alabara wẹẹbu tun firanṣẹ metadata si Loki. Loki ṣajọpọ ohun gbogbo ati gbejade si Grafana.
Loki ti ṣe ifilọlẹ. Lati wo awọn paati ti o wa, ṣiṣe aṣẹ wọnyi:

$ docker ps

Ninu ọran Docker tuntun ti a fi sori ẹrọ, aṣẹ yẹ ki o da abajade atẹle naa pada:

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

A ri awọn eroja wọnyi:

  • Promtail: oluranlowo lodidi fun centralizing àkọọlẹ
  • Grafana: irinṣẹ dasibodu olokiki kan
  • Loki: Data Centralization Daemon

Gẹgẹbi apakan ti amayederun Ayebaye (fun apẹẹrẹ, da lori awọn ẹrọ foju), aṣoju Promtail gbọdọ wa ni ransogun lori ẹrọ kọọkan. Grafana ati Loki le fi sori ẹrọ lori ẹrọ kanna.

Gbigbe to Kubernetes

Fifi awọn paati Loki sori Kubernetes yoo jẹ atẹle:

  • daemonSet fun gbigbe aṣoju Promtail sori ọkọọkan awọn ero inu iṣupọ olupin
  • Loki imuṣiṣẹ
  • ati awọn ti o kẹhin ni imuṣiṣẹ ti Grafana.

Ni Oriire, Loki wa bi package Helm, ti o jẹ ki o rọrun lati fi ranṣẹ.

Fifi sori nipasẹ Heml

O yẹ ki o ti fi Heml sori ẹrọ tẹlẹ. O le ṣe igbasilẹ lati ibi ipamọ GitHub ti iṣẹ akanṣe naa. O ti fi sori ẹrọ nipasẹ ṣiṣii iwe-ipamọ ti o baamu si faaji rẹ ati fifi Helm kun si $PATH.

akiyesi: version 3.0.0 ti Helm a ti tu laipe. Niwọn bi ọpọlọpọ awọn ayipada ti wa, a gba oluka ni imọran lati duro diẹ ṣaaju lilo rẹ..

Fifi orisun kan fun Helm

Igbesẹ akọkọ ni lati ṣafikun ibi ipamọ “loki” ni lilo aṣẹ atẹle:

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

Lẹhin eyi, o le wa awọn idii ti a npè ni "loki":

$ helm search loki

Esi:

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...

Awọn akopọ wọnyi ni awọn ẹya wọnyi:

  • package loki/loki ibaamu Loki olupin nikan
  • package loki / fluent-bit faye gba o lati ran DaemonSet kan ni lilo fluent-bin lati gba awọn akọọlẹ dipo Promtail
  • package loki / promtail ni aṣoju gbigba faili log kan ninu
  • package loki / loki-akopọ, faye gba o lati lẹsẹkẹsẹ ran Loki pọ pẹlu Promtail.

Fifi Loki sori ẹrọ

Lati mu Loki lọ si Kubernetes, ṣiṣe aṣẹ wọnyi ni aaye orukọ “ibojuto”:

$ helm upgrade --install loki loki/loki-stack --namespace monitoring

Lati fipamọ sori disk, ṣafikun paramita naa --set loki.persistence.enabled = true:

$ helm upgrade --install loki loki/loki-stack 
              --namespace monitoring 
              --set loki.persistence.enabled=true

akiyesi: ti o ba fẹ mu Grafana ṣiṣẹ ni akoko kanna, lẹhinna ṣafikun paramita naa --set grafana.enabled = true

Nigbati o ba ṣiṣẹ aṣẹ yii o yẹ ki o gba abajade atẹle:

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.

Wiwo ipo awọn adarọ-ese ni aaye orukọ “ibojuto”, a le rii pe ohun gbogbo ti wa ni ransogun:

$ kubectl -n monitoring get pods -l release=loki

Esi:

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

Gbogbo awọn podu nṣiṣẹ. Bayi o to akoko lati ṣe diẹ ninu awọn idanwo!

Nsopọ si Grafana

Lati sopọ si Grafana labẹ Kubernetes, o nilo lati ṣii eefin kan si adarọ-ese rẹ. Ni isalẹ ni aṣẹ lati ṣii ibudo 3000 fun Podu Grafana:

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

Ojuami pataki miiran ni iwulo lati gba ọrọ igbaniwọle oluṣakoso Grafana pada. Ọrọigbaniwọle ti wa ni ipamọ loki-grafana ni aaye .data.admin-user ni base64 kika.

Lati mu pada, o nilo lati ṣiṣẹ aṣẹ wọnyi:

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

Lo ọrọ igbaniwọle yii ni apapo pẹlu akọọlẹ alabojuto aiyipada (abojuto).

Ti n ṣalaye orisun data Loki kan ni Grafana

Ni akọkọ, rii daju pe orisun data Loki ti ṣẹda (Iṣeto / Orisun Data).
Eyi jẹ apẹẹrẹ:

Loki – ikojọpọ log ni lilo ọna Prometheus
Apẹẹrẹ ti iṣeto orisun data kan fun Loki

Nipa tite lori "Idanwo" o le ṣayẹwo asopọ pẹlu Loki.

Ṣiṣe awọn ibeere si Loki

Bayi lọ si Grafana si apakan "Ṣawari". Nigbati o ba ngba awọn igbasilẹ lati awọn apoti, Loki ṣafikun metadata lati Kubernetes. Nitorinaa, o ṣee ṣe lati wo awọn akọọlẹ ti eiyan kan pato.

Fun apẹẹrẹ, lati yan awọn iwe ipamọ apoti promtail, o le lo ibeere atẹle: {container_name = "promtail"}.
Nibi tun ranti lati yan orisun data Loki.

Ibeere yii yoo da iṣẹ ṣiṣe apoti pada bi atẹle:

Loki – ikojọpọ log ni lilo ọna Prometheus
Abajade ibeere ni Grafana

Fi si Dasibodu

Bibẹrẹ pẹlu Grafana 6.4, o le gbe alaye log taara sori dasibodu naa. Lẹhin eyi, olumulo yoo ni anfani lati yipada ni iyara laarin nọmba awọn ibeere lori aaye rẹ ati awọn itọpa ohun elo.

Ni isalẹ jẹ apẹẹrẹ ti dasibodu ti o ṣe imuse ibaraenisepo yii:

Loki – ikojọpọ log ni lilo ọna Prometheus
Dasibodu apẹẹrẹ pẹlu awọn metiriki Prometheus ati awọn akọọlẹ Loki

Ojo iwaju ti Loki

Mo bẹrẹ lilo Loki pada ni May/Okudu pẹlu ẹya 0.1. Loni version 1, ati paapa 1.1 ati 1.2 ti tẹlẹ a ti tu.

O gbọdọ jẹwọ pe ẹya 0.1 ko ni iduroṣinṣin to. Ṣugbọn 0.3 tẹlẹ fihan awọn ami gidi ti idagbasoke, ati awọn ẹya ti o tẹle (0.4, lẹhinna 1.0) nikan ni o lagbara samisi yii.

Lẹhin 1.0.0, ko si ẹnikan ti o le ni awawi eyikeyi lati ma lo irinṣẹ iyanu yii.

Awọn ilọsiwaju siwaju ko yẹ ki o jẹ nipa Loki, ṣugbọn dipo iṣọpọ rẹ pẹlu Grafana ti o dara julọ. Ni otitọ, Grafana 6.4 ti ni isọpọ ti o dara pẹlu awọn dasibodu.

Grafana 6.5, eyiti o ti tu silẹ laipẹ, ṣe ilọsiwaju isọpọ yii siwaju sii nipa didamọ awọn akoonu log laifọwọyi ni ọna kika JSON.

Fidio ti o wa ni isalẹ fihan apẹẹrẹ kekere ti ẹrọ yii:

Loki – ikojọpọ log ni lilo ọna Prometheus
Lilo awọn gbolohun ọrọ Loki ti o han ni Grafana

O ṣee ṣe lati lo ọkan ninu awọn aaye JSON, fun apẹẹrẹ, fun:

  • ìjápọ si ita ọpa
  • sisẹ log akoonu

Fun apẹẹrẹ, o le tẹ traceId lati lọ si Zipkin tabi Jaeger.

Gẹgẹbi igbagbogbo, a nireti awọn asọye rẹ ati pe o si ṣii webinar, Nibi ti a yoo sọrọ nipa bii ile-iṣẹ DevOps ṣe dagbasoke lakoko 2019 ati jiroro awọn ọna idagbasoke ti o ṣeeṣe fun 2020.

orisun: www.habr.com