Saludo, mga residente sa Khabrovsk! Sa bisperas sa pagsugod sa usa ka bag-ong enrolment alang sa kurso
Kini nga artikulo usa ka mubo nga pasiuna sa Loki. Proyekto Loki
Ang nag-unang inspirasyon alang kang Loki mao
- gamit ang mga label sa pagtipig sa datos
- konsumo sa pipila ka mga kapanguhaan
Mobalik kami kung giunsa ang Prometheus molihok ug maghatag pipila ka mga pananglitan sa paggamit niini sa konteksto sa Kubernetes.
Pipila ka mga pulong mahitungod sa Prometheus
Aron hingpit nga masabtan kung giunsa ang paglihok ni Loki, hinungdanon ang pag-atras ug paghinumdom gamay bahin sa Prometheus.
Usa sa mga lahi nga bahin sa Prometheus mao ang pagkuha sa mga sukatan gikan sa mga punto sa pagkolekta (pinaagi sa mga eksporter) ug pagtipig niini sa TSDB (Time Series Data Base), uban ang pagdugang sa metadata sa porma sa mga label.
Ngano nga kinahanglan kini
Bag-ohay lang, ang Prometheus nahimong de facto nga sumbanan sa kalibutan sa mga sudlanan ug Kubernetes: ang pag-instalar niini yano ra kaayo, ug ang Kubernetes cluster adunay usa ka lumad nga endpoint alang sa Prometheus. Mahimo usab nga makuha sa Prometheus ang mga sukatan gikan sa mga aplikasyon nga gipakatap sa usa ka sudlanan samtang gitipigan ang piho nga mga label. Busa, ang pag-monitor sa aplikasyon dali ra kaayo ipatuman.
Ikasubo, wala pa'y solusyon sa turnkey alang sa pagdumala sa log, ug kinahanglan nimo nga mangita usa ka solusyon alang sa imong kaugalingon:
- gidumala nga serbisyo sa panganod alang sa pagsentro sa mga troso (AWS, Azure o Google)
- serbisyo sa pagmonitor "pagmonitor isip usa ka serbisyo" (pananglitan, Datadog)
- paghimo sa imong kaugalingon nga serbisyo sa pagkolekta sa log.
Alang sa ikatulo nga kapilian, tradisyonal nakong gigamit ang Elasticsearch, bisan pa sa kamatuoran nga dili ako kanunay nga malipayon niini (ilabi na ang kabug-at ug pagkakomplikado sa pagsumpo).
Gidisenyo ang Loki aron pasimplehon ang pagpatuman sumala sa mosunod nga mga prinsipyo:
- mahimong yano sa pagsugod
- konsumo sa pipila ka mga kapanguhaan
- pagtrabaho nga independente nga wala’y espesyal nga pagmentinar
- nagsilbing dugang sa Prometheus aron makatabang sa mga imbestigasyon sa bug
Bisan pa, kini nga kayano moabut sa gasto sa pipila nga mga pagkompromiso. Usa niini mao ang dili pag-indeks sa sulod. Busa, ang pagpangita sa teksto dili kaayo episyente o adunahan ug wala magtugot sa mga estadistika sa sulod sa teksto. Apan tungod kay gusto ni Loki nga mahimong katumbas sa grep ug usa ka komplemento sa Prometheus, dili kini usa ka disbentaha.
Imbestigasyon sa Insidente
Aron mas masabtan kung nganong wala magkinahanglan og pag-indeks si Loki, balikan nato ang pamaagi sa imbestigasyon sa insidente nga gigamit sa mga developer sa Loki:
1 Alert → 2 Dashboard → 3 Adhoc Query → 4 Log Aggregation → 5 Distributed Tracing → 6 Ayuhon!
(1 Warning → 2 Dashboard → 3 Adhoc Query → 4 Log Aggregation → 5 Distributed Tracing → 6 Fixing!)
Ang ideya mao nga makadawat kami usa ka matang sa alerto (Slack Notification, SMS, ug uban pa) ug pagkahuman:
- tan-awa ang mga dashboard sa Grafana
- tan-awa ang mga sukatan sa serbisyo (pananglitan, sa Prometheus)
- tan-awa ang mga entry sa log (pananglitan, sa Elasticsearch)
- tingali tan-awa ang gipang-apod-apod nga mga pagsubay (Jaeger, Zipkin, ug uban pa)
- ug sa katapusan ayuhon ang orihinal nga problema.
Dinhi, sa kaso sa Grafana + Prometheus + Elasticsearch + Zipkin stack, kinahanglan nimong gamiton ang upat ka lainlaing mga himan. Aron makunhuran ang oras, maayo nga mahimo kining tanan nga mga lakang gamit ang usa ka himan: Grafana. Angay nga matikdan nga kini nga pamaagi sa panukiduki gipatuman sa Grafana sukad sa bersyon 6. Busa, nahimong posible nga ma-access ang datos sa Prometheus direkta gikan sa Grafana.
Ang screen sa Explorer gibahin tali sa Prometheus ug Loki
Gikan niini nga screen mahimo nimong tan-awon ang mga Loki log nga may kalabutan sa Prometheus metrics gamit ang split screen concept. Sukad sa bersyon 6.5, gitugotan ka sa Grafana nga ma-parse ang trace id sa mga entry sa Loki log aron masundan ang mga link sa imong paborito nga gipang-apod-apod nga mga himan sa pagsubay (Jaeger).
Lokal nga pagsulay sa Loki
Ang labing kadali nga paagi sa pagsulay sa Loki sa lokal mao ang paggamit sa docker-compose. Ang docker-compose file nahimutang sa Loki repository. Makuha nimo ang repository gamit ang mosunod nga sugo git
:
$ git clone https://github.com/grafana/loki.git
Unya kinahanglan nimo nga moadto sa direktoryo sa produksiyon:
$ cd production
Pagkahuman niini makuha nimo ang pinakabag-o nga bersyon sa mga imahe sa Docker:
$ docker-compose pull
Sa katapusan, ang stack sa Loki gilunsad uban ang mosunod nga sugo:
$ docker-compose up
Ang arkitektura sa Loki
Ania ang usa ka gamay nga diagram nga adunay arkitektura sa Loki:
Mga Prinsipyo sa Arkitektura sa Loki
Ang kliyente sa web nagpadagan sa mga aplikasyon sa server, ang Promtail nangolekta og mga troso ug gipadala kini sa Loki, ang kliyente sa web nagpadala usab og metadata sa Loki. Gihiusa ni Loki ang tanan ug gipasa kini sa Grafana.
Gilunsad ang Loki. Aron matan-aw ang magamit nga mga sangkap, pagdagan ang mosunud nga mando:
$ docker ps
Sa kaso sa usa ka bag-ong na-install nga Docker, ang mando kinahanglan nga ibalik ang mosunod nga resulta:
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
Atong makita ang mosunod nga mga sangkap:
- Promtail: ahente nga responsable sa pagsentro sa mga troso
- Grafana: usa ka bantog nga himan sa dashboard
- Loki: Data Centralization Daemon
Isip kabahin sa usa ka klasiko nga imprastraktura (pananglitan, base sa mga virtual machine), ang ahente sa Promtail kinahanglan nga i-deploy sa matag makina. Ang Grafana ug Loki mahimong ma-install sa parehas nga makina.
Deployment sa Kubernetes
Ang pag-instalar sa mga sangkap sa Loki sa Kubernetes mao ang mosunod:
- daemonSet alang sa pag-deploy sa ahente sa Promtail sa matag usa sa mga makina sa cluster sa server
- Deployment Loki
- ug ang katapusan mao ang pagpadala sa Grafana.
Suwerte, ang Loki magamit ingon usa ka pakete sa Helm, nga dali nga i-deploy.
Pag-instalar pinaagi sa Heml
Kinahanglan nga na-install na nimo ang Heml. Mahimo kini ma-download gikan sa GitHub repository sa proyekto. Gi-install kini pinaagi sa pag-unpack sa archive nga katumbas sa imong arkitektura ug pagdugang sa timon sa $PATH
.
Mubo nga sulat: Ang bersyon 3.0.0 sa Helm gipagawas bag-o lang. Tungod kay adunay daghang mga pagbag-o niini, ang magbabasa gitambagan nga maghulat gamay sa dili pa kini gamiton..
Pagdugang og tinubdan alang sa Helm
Ang unang lakang mao ang pagdugang sa "loki" repository gamit ang mosunod nga sugo:
$ helm add loki https://grafana.github.io/loki/charts
Pagkahuman niini, mahimo nimong pangitaon ang mga pakete nga ginganlag "loki":
$ helm search loki
Resulta:
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...
Kini nga mga pakete adunay mga mosunod nga mga bahin:
- ang package loki/loki katumbas sa server sa Loki lamang
- ang package loki/fluent-bit nagtugot kanimo sa pag-deploy sa usa ka DaemonSet gamit ang fluent-bin aron mangolekta og mga troso imbes sa Promtail
- ang package loki/promtail adunay usa ka ahente sa pagkolekta sa log file
- ang package loki/loki-stack, nagtugot kanimo sa pag-deploy dayon sa Loki kauban ang Promtail.
Pag-instalar sa Loki
Aron i-deploy si Loki sa Kubernetes, padagana ang mosunod nga command sa "monitoring" namespace:
$ helm upgrade --install loki loki/loki-stack --namespace monitoring
Aron makatipig sa disk, idugang ang parameter --set loki.persistence.enabled = true:
$ helm upgrade --install loki loki/loki-stack
--namespace monitoring
--set loki.persistence.enabled=true
Mubo nga sulat: kung gusto nimo i-deploy ang Grafana sa parehas nga oras, unya idugang ang parameter
--set grafana.enabled = true
Kung gipadagan nimo kini nga mando kinahanglan nimo makuha ang mosunud nga output:
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.
Sa pagtan-aw sa kahimtang sa mga pod sa "monitoring" namespace, atong makita nga ang tanan na-deploy:
$ kubectl -n monitoring get pods -l release=loki
Resulta:
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
Ang tanan nga mga pod nagdagan. Karon na ang panahon sa pagbuhat sa pipila ka mga pagsulay!
Pagkonektar sa Grafana
Aron makonektar sa Grafana sa ilawom sa Kubernetes, kinahanglan nimo nga ablihan ang usa ka tunel sa pod niini. Sa ubos mao ang sugo sa pag-abli sa port 3000 alang sa Grafana pod:
$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80
Ang laing importante nga punto mao ang panginahanglan sa pagbawi sa Grafana administrator password. Ang password gitago nga sekreto loki-grafana
sa uma .data.admin-user
sa base64 nga pormat.
Aron mapasig-uli kini, kinahanglan nimo nga ipadagan ang mosunud nga mando:
$ kubectl -n monitoring get secret loki-grafana
--template '{{index .data "admin-password" | base64decode}}'; echo
Gamita kini nga password kauban ang default administrator account (admin).
Paghubit sa usa ka tinubdan sa datos sa Loki sa Grafana
Una sa tanan, siguroha nga ang Loki data source nahimo na (Configuration/Datasource).
Ania ang usa ka pananglitan:
Pananglitan sa pag-set up sa usa ka tinubdan sa datos alang sa Loki
Pinaagi sa pag-klik sa "Pagsulay" mahimo nimong susihon ang koneksyon sa Loki.
Naghangyo kang Loki
Karon adto sa Grafana sa seksyon nga "Pag-usisa". Kung nakadawat mga troso gikan sa mga sudlanan, gidugang ni Loki ang metadata gikan sa Kubernetes. Sa ingon, nahimong posible ang pagtan-aw sa mga troso sa usa ka piho nga sudlanan.
Pananglitan, aron mapili ang promtail container logs, mahimo nimong gamiton ang mosunod nga pangutana: {container_name = "promtail"}
.
Dinhi usab hinumdomi ang pagpili sa tinubdan sa datos sa Loki.
Kini nga pangutana magbalik sa kalihokan sa sudlanan sama sa mosunod:
Resulta sa pangutana sa Grafana
Idugang sa dashboard
Sugod sa Grafana 6.4, mahimo nimong ibutang ang impormasyon sa log direkta sa dashboard. Pagkahuman niini, ang tiggamit makahimo sa dali nga pagbalhin tali sa gidaghanon sa mga hangyo sa iyang site ug mga pagsubay sa aplikasyon.
Sa ubos usa ka pananglitan sa usa ka dashboard nga nagpatuman niini nga interaksyon:
Sample dashboard nga adunay Prometheus metrics ug Loki logs
Kaugmaon ni Loki
Nagsugod ko sa paggamit sa Loki balik sa Mayo / Hunyo nga adunay bersyon 0.1. Karon nga bersyon 1, ug bisan ang 1.1 ug 1.2 gipagawas na.
Kinahanglan nga dawaton nga ang bersyon 0.1 dili igo nga lig-on. Apan ang 0.3 nagpakita na sa tinuod nga mga timailhan sa pagkahamtong, ug ang misunod nga mga bersyon (0.4, unya 1.0) nagpalig-on lamang niini nga impresyon.
Pagkahuman sa 1.0.0, wala’y bisan kinsa nga adunay bisan unsang pasangil nga dili gamiton kining talagsaon nga himan.
Ang dugang nga mga pag-uswag dili kinahanglan bahin sa Loki, apan ang panagsama niini sa maayo kaayo nga Grafana. Sa tinuud, ang Grafana 6.4 adunay maayo nga panagsama sa mga dashboard.
Ang Grafana 6.5, nga gipagawas bag-o lang, dugang nga nagpauswag sa kini nga panagsama pinaagi sa awtomatikong pag-ila sa mga sulud sa log sa format nga JSON.
Ang video sa ubos nagpakita sa usa ka gamay nga pananglitan niini nga mekanismo:
Gigamit ang mga string sa Loki nga gibutyag sa Grafana
Mahimong posible nga gamiton ang usa sa mga natad sa JSON, pananglitan, alang sa:
- mga link sa eksternal nga himan
- pagsala sa mga sulod sa log
Pananglitan, mahimo nimong i-klik ang traceId aron makaadto sa Zipkin o Jaeger.
Sama sa naandan, kami nagpaabut sa imong mga komento ug nagdapit kanimo sa
Source: www.habr.com