Salam, warga Khabrovsk! Ing Kawa saka wiwitan enrollment anyar kanggo mesthi
Artikel iki minangka introduksi singkat kanggo Loki. Proyek Loki
Inspirasi utama kanggo Loki yaiku
- nggunakake label kanggo nyimpen data
- konsumsi sawetara sumber daya
Kita bakal bali menyang cara kerja Prometheus lan menehi sawetara conto panggunaan ing konteks Kubernetes.
Sawetara tembung babagan Prometheus
Kanggo ngerti kanthi lengkap babagan cara kerja Loki, penting kanggo mundur lan ngelingi babagan Prometheus.
Salah siji fitur khas Prometheus yaiku ekstraksi metrik saka titik koleksi (liwat eksportir) lan nyimpen ing TSDB (Time Series Data Base), kanthi tambahan metadata ing wangun label.
Napa perlu
Bubar, Prometheus wis dadi standar de facto ing donya kontaner lan Kubernetes: instalasi banget prasaja, lan kluster Kubernetes nerangake karo endpoint native kanggo Prometheus. Prometheus uga bisa ngekstrak metrik saka aplikasi sing dipasang ing wadhah nalika nyimpen label tartamtu. Mulane, ngawasi aplikasi gampang banget kanggo dileksanakake.
Sayange, isih ora ana solusi turnkey kanggo manajemen log, lan sampeyan kudu nemokake solusi dhewe:
- layanan awan sing ngatur kanggo log sentralisasi (AWS, Azure utawa Google)
- layanan ngawasi "monitoring minangka layanan" (contone, Datadog)
- nggawe layanan koleksi log dhewe.
Kanggo pilihan katelu, aku nggunakake tradisional Elasticsearch, senadyan kasunyatan sing aku ora tansah seneng karo (utamané abot lan kerumitan konfigurasi).
Loki dirancang kanggo nyederhanakake implementasine miturut prinsip ing ngisor iki:
- dadi prasaja kanggo miwiti
- nggunakake sawetara sumber daya
- makarya kanthi mandiri tanpa pangopènan khusus
- dadi tambahan kanggo Prometheus kanggo bantuan karo investigasi bug
Nanging, kesederhanaan iki nyebabake sawetara kompromi. Salah sijine yaiku ora ngindeks isi. Mulane, panelusuran teks ora banget efisien utawa sugih lan ora ngidini statistik babagan isi teks. Nanging amarga Loki pengin dadi padha karo grep lan nglengkapi Prometheus, iki ora dadi kerugian.
Investigasi kedadean
Kanggo luwih ngerti kenapa Loki ora mbutuhake indeksasi, ayo bali menyang metode investigasi kedadeyan sing digunakake para pangembang Loki:
1 Lansiran → 2 Dashboard → 3 Adhoc Query → 4 Log Aggregation → 5 Distributed Tracing → 6 Fix!
(1 Warning → 2 Dashboard → 3 Adhoc Query → 4 Log Aggregation → 5 Distributed Tracing → 6 Fixing!)
Ide kasebut yaiku yen kita nampa sawetara jinis tandha (Kabar Slack, SMS, lsp) lan sawise iku:
- katon ing dashboard Grafana
- deleng metrik layanan (contone, ing Prometheus)
- deleng entri log (contone, ing Elasticsearch)
- bisa uga ndeleng jejak sing disebarake (Jaeger, Zipkin, lsp.)
- lan pungkasanipun ndandani masalah asli.
Ing kene, ing kasus tumpukan Grafana + Prometheus + Elasticsearch + Zipkin, sampeyan kudu nggunakake papat alat sing beda. Kanggo nyuda wektu, luwih becik bisa nindakake kabeh langkah kasebut kanthi nggunakake siji alat: Grafana. Wigati dicathet menawa pendekatan riset iki wis dileksanakake ing Grafana wiwit versi 6. Mangkono, dadi bisa ngakses data Prometheus langsung saka Grafana.
Pamisah layar Explorer antarane Prometheus lan Loki
Saka layar iki sampeyan bisa ndeleng log Loki sing ana gandhengane karo metrik Prometheus nggunakake konsep layar pamisah. Wiwit versi 6.5, Grafana ngidini sampeyan ngurai id jejak ing entri log Loki kanggo ngetutake pranala menyang alat tracing sing disebarake (Jaeger).
Tes Loki lokal
Cara paling gampang kanggo nyoba Loki sacara lokal yaiku nggunakake docker-compose. File docker-compose dumunung ing repositori Loki. Sampeyan bisa entuk repositori nggunakake printah ing ngisor iki git
:
$ git clone https://github.com/grafana/loki.git
Banjur sampeyan kudu pindhah menyang direktori produksi:
$ cd production
Sawise iki, sampeyan bisa entuk versi paling anyar saka gambar Docker:
$ docker-compose pull
Pungkasan, tumpukan Loki diluncurake kanthi printah ing ngisor iki:
$ docker-compose up
arsitektur Loki
Punika diagram cilik kanthi arsitektur Loki:
Prinsip Arsitektur Loki
Klien web mbukak aplikasi ing server, Promtail ngumpulake log lan dikirim menyang Loki, klien web uga ngirim metadata menyang Loki. Loki aggregates kabeh lan ngirim menyang Grafana.
Loki diluncurake. Kanggo ndeleng komponen sing kasedhiya, jalanake printah ing ngisor iki:
$ docker ps
Ing kasus Docker sing anyar diinstal, printah kasebut kudu ngasilake asil ing ngisor iki:
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
Kita ndeleng komponen ing ngisor iki:
- Promtail: agen sing tanggung jawab kanggo log sentralisasi
- Grafana: alat dashboard sing misuwur
- Loki: Daemon Sentralisasi Data
Minangka bagéan saka infrastruktur klasik (contone, adhedhasar mesin virtual), agen Promtail kudu disebarake ing saben mesin. Grafana lan Loki bisa diinstal ing mesin sing padha.
Penyebaran menyang Kubernetes
Nginstal komponen Loki ing Kubernetes bakal kaya ing ngisor iki:
- daemonSet kanggo masang agen Promtail ing saben mesin ing kluster server
- Penyebaran Loki
- lan sing pungkasan yaiku penyebaran Grafana.
Untunge, Loki kasedhiya minangka paket Helm, supaya gampang disebarake.
Instalasi liwat Heml
Sampeyan kudu wis diinstal Heml. Bisa diundhuh saka repositori GitHub proyek. Iki diinstal kanthi mbongkar arsip sing cocog karo arsitektur sampeyan lan nambah setir $PATH
.
Wigati: versi 3.0.0 saka Helm dirilis bubar. Amarga ana akeh owah-owahan, sing maca disaranake ngenteni sawetara sadurunge nggunakake..
Nambahake sumber kanggo Helm
Langkah pisanan kanggo nambah repositori "loki" nggunakake printah ing ngisor iki:
$ helm add loki https://grafana.github.io/loki/charts
Sawise iki, sampeyan bisa nggoleki paket sing jenenge "loki":
$ helm search loki
Asil:
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...
Paket kasebut duwe fitur ing ngisor iki:
- paket loki/loki cocog server Loki mung
- paket loki / lancar-bit ngijini sampeyan kanggo masang DaemonSet nggunakake fluent-bin kanggo ngumpulake log tinimbang Promtail
- paket loki/promtail ngemot agen koleksi file log
- paket loki / loki-tumpukan, ngidini sampeyan langsung masang Loki bebarengan karo Promtail.
Nginstal Loki
Kanggo masang Loki menyang Kubernetes, jalanake printah ing ngisor iki ing ruang jeneng "monitoring":
$ helm upgrade --install loki loki/loki-stack --namespace monitoring
Kanggo nyimpen menyang disk, nambah parameter --set loki.persistence.enabled = true:
$ helm upgrade --install loki loki/loki-stack
--namespace monitoring
--set loki.persistence.enabled=true
Wigati: yen sampeyan pengin masang Grafana ing wektu sing padha, banjur tambahake parameter kasebut
--set grafana.enabled = true
Nalika sampeyan mbukak printah iki, sampeyan kudu entuk output ing ngisor iki:
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.
Deleng kahanan polong ing ruang jeneng "ngawasi", kita bisa ndeleng manawa kabeh wis dipasang:
$ kubectl -n monitoring get pods -l release=loki
Asil:
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
Kabeh polong mlaku. Saiki wektune kanggo nindakake sawetara tes!
Nyambung menyang Grafana
Kanggo nyambung menyang Grafana ing Kubernetes, sampeyan kudu mbukak trowongan menyang pod. Ing ngisor iki prentah kanggo mbukak port 3000 kanggo pod Grafana:
$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80
Titik penting liyane yaiku kudu mbalekake sandhi administrator Grafana. Sandi dirahasiakake loki-grafana
ing lapangan .data.admin-user
ing format base64.
Kanggo mulihake, sampeyan kudu mbukak printah ing ngisor iki:
$ kubectl -n monitoring get secret loki-grafana
--template '{{index .data "admin-password" | base64decode}}'; echo
Gunakake sandhi iki bebarengan karo akun administrator standar (admin).
Nemtokake sumber data Loki ing Grafana
Kaping pisanan, priksa manawa sumber data Loki wis digawe (Konfigurasi / Sumber Data).
Punika conto:
Conto nyetel sumber data kanggo Loki
Kanthi ngeklik "Test" sampeyan bisa mriksa sambungan karo Loki.
Nggawe panjalukan kanggo Loki
Saiki pindhah menyang Grafana menyang bagean "Jelajahi". Nalika nampa log saka wadhah, Loki nambah metadata saka Kubernetes. Mangkono, dadi bisa kanggo ndeleng log saka wadhah tartamtu.
Contone, kanggo milih log wadhah promtail, sampeyan bisa nggunakake pitakon ing ngisor iki: {container_name = "promtail"}
.
Kene uga elinga kanggo milih sumber data Loki.
Pitakonan iki bakal ngasilake aktivitas wadah kaya ing ngisor iki:
Asil pitakon ing Grafana
Tambah ing dashboard
Miwiti karo Grafana 6.4, sampeyan bisa nyelehake informasi log langsung ing dashboard. Sawise iki, pangguna bakal bisa kanthi cepet ngalih ing antarane jumlah panjalukan ing situs lan jejak aplikasi.
Ing ngisor iki conto dashboard sing ngetrapake interaksi iki:
Dasbor conto karo metrik Prometheus lan log Loki
Masa depan Loki
Aku miwiti nggunakake Loki bali ing Mei / Juni karo versi 0.1. Dina iki versi 1, malah 1.1 lan 1.2 wis dirilis.
Sampeyan kudu ngakoni manawa versi 0.1 ora cukup stabil. Nanging 0.3 wis nuduhake pratandha nyata kadewasan, lan versi sakteruse (0.4, banjur 1.0) mung nguatake kesan iki.
Sawise 1.0.0, ora ana sing bisa duwe alesan kanggo ora nggunakake alat sing apik iki.
Dandan luwih ora kudu babagan Loki, nanging integrasi karo Grafana sing apik banget. Nyatane, Grafana 6.4 wis duwe integrasi sing apik karo dasbor.
Grafana 6.5, sing dirilis bubar, nambah integrasi iki kanthi otomatis ngenali isi log ing format JSON.
Video ing ngisor iki nuduhake conto cilik mekanisme iki:
Nggunakake strings Loki kapapar ing Grafana
Sampeyan bisa nggunakake salah sawijining lapangan JSON, contone, kanggo:
- pranala menyang alat external
- nyaring isi log
Contone, sampeyan bisa ngeklik traceId kanggo pindhah menyang Zipkin utawa Jaeger.
Kaya biasane, kita ngarepake komentar lan ngajak sampeyan
Source: www.habr.com