Salam, warga Khabrovsk! Dina wengi mimiti enrollment anyar pikeun kursus
Artikel ieu mangrupa bubuka pondok pikeun Loki. Proyék Loki
Inspirasi utama pikeun Loki éta
- ngagunakeun labél pikeun nyimpen data
- konsumsi sababaraha sumberdaya
Urang bakal balik deui ka kumaha Prometheus jalan sareng masihan sababaraha conto panggunaanana dina konteks Kubernetes.
Sababaraha kecap ngeunaan Prometheus
Pikeun pinuh ngartos kumaha Loki jalan, hal anu penting pikeun nyandak undak mundur tur inget saeutik ngeunaan Prometheus.
Salah sahiji ciri has Prometheus nyaéta ékstraksi métrik tina titik kempelan (via eksportir) sareng nyimpenna dina TSDB (Time Series Data Base), ditambah metadata dina bentuk labél.
Naha kunaon diperyogikeun
Anyar-anyar ieu, Prometheus parantos janten standar de facto di dunya wadah sareng Kubernetes: pamasanganna saderhana pisan, sareng klaster Kubernetes hadir sareng titik akhir asli pikeun Prometheus. Prometheus ogé tiasa ékstrak métrik tina aplikasi anu dipasang dina wadah bari nyimpen labél khusus. Ku alatan éta, ngawaskeun aplikasi gampang pisan pikeun dilaksanakeun.
Hanjakalna, masih teu aya solusi turnkey pikeun manajemén log, sareng anjeun kedah milarian solusi pikeun diri anjeun:
- jasa awan junun pikeun log sentralisasi (AWS, Azure atanapi Google)
- jasa ngawaskeun "monitoring salaku jasa" (contona, Datadog)
- nyieun jasa ngumpulkeun log anjeun sorangan.
Pikeun pilihan katilu, kuring tradisional dipaké Elasticsearch, sanajan kanyataan yén kuring teu salawasna senang jeung eta (utamana heaviness sarta pajeulitna konfigurasi).
Loki dirancang pikeun nyederhanakeun palaksanaan dumasar kana prinsip-prinsip ieu:
- janten basajan pikeun ngamimitian
- meakeun sababaraha sumber
- dianggo sacara mandiri tanpa pangropéa khusus
- ngawula salaku tambahan pikeun Prometheus pikeun mantuan kalawan investigations bug
Sanajan kitu, kesederhanaan ieu asalna di expense sababaraha compromises. Salah sahijina nyaéta henteu indéks eusi. Ku alatan éta, pilarian téks teu pisan efisien atawa euyeub tur teu ngidinan statistik dina eusi téks. Tapi saprak Loki hayang jadi sarua grep sarta pelengkap Prometheus, ieu teu disadvantage a.
Investigation Kajadian
Pikeun langkung ngartos naha Loki henteu peryogi indéks, hayu urang balik deui ka metode panyelidikan kajadian anu dianggo ku pamekar Loki:
1 Waspada → 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!)
Gagasanna nyaéta yén kami nampi sababaraha jinis waspada (Slack Notification, SMS, jsb) sareng saatosna:
- tingali dina dasbor Grafana
- tingali metrik jasa (contona, dina Prometheus)
- tingali éntri log (contona, dina Elasticsearch)
- meureun nyandak katingal dina ngambah disebarkeun (Jaeger, Zipkin, jsb)
- sarta tungtungna ngalereskeun masalah aslina.
Di dieu, dina kasus tumpukan Grafana + Prometheus + Elasticsearch + Zipkin, anjeun kedah nganggo opat alat anu béda. Pikeun ngirangan waktos, langkung saé tiasa ngalaksanakeun sagala léngkah ieu nganggo hiji alat: Grafana. Eta sia noting yén pendekatan ieu panalungtikan geus dilaksanakeun dina Grafana saprak versi 6. Ku kituna, éta mungkin pikeun ngakses data Prometheus langsung ti Grafana.
Pamisah layar Explorer antara Prometheus sareng Loki
Tina layar ieu anjeun tiasa ningali log Loki anu aya hubunganana sareng métrik Prometheus nganggo konsép layar pamisah. Kusabab vérsi 6.5, Grafana ngamungkinkeun anjeun nga-parse id jejak dina éntri log Loki pikeun nuturkeun tautan kana alat palacak anu disebarkeun karesep anjeun (Jaeger).
tés Loki lokal
Cara panggampangna pikeun nguji Loki sacara lokal nyaéta ngagunakeun docker-compose. Docker-compose file aya dina gudang Loki. Anjeun tiasa kéngingkeun gudang nganggo paréntah di handap ieu git
:
$ git clone https://github.com/grafana/loki.git
Teras anjeun kedah angkat ka diréktori produksi:
$ cd production
Saatos ieu anjeun tiasa nampi versi panganyarna tina gambar Docker:
$ docker-compose pull
Tungtungna, tumpukan Loki diluncurkeun ku paréntah di handap ieu:
$ docker-compose up
Arsitéktur Loki
Ieu diagram leutik sareng arsitéktur Loki:
Prinsip Arsitéktur Loki
Klién wéb ngajalankeun aplikasi dina server, Promtail ngumpulkeun log sareng ngirim ka Loki, klien wéb ogé ngirim metadata ka Loki. Loki aggregates sagalana jeung transmits ka Grafana.
Loki dibuka. Pikeun ningali komponén anu sayogi, jalankeun paréntah di handap ieu:
$ docker ps
Dina kasus Docker anu nembé dipasang, paréntahna kedah uih deui hasil ieu:
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
Urang ningali komponén di handap ieu:
- Promtail: agén jawab centralizing log
- Grafana: alat dasbor anu kasohor
- Loki: Daemon Sentralisasi Data
Salaku bagian tina infrastruktur Palasik (Contona, dumasar kana mesin virtual), agén Promtail kudu deployed on unggal mesin. Grafana sareng Loki tiasa dipasang dina mesin anu sami.
Panyebaran ka Kubernetes
Masang komponén Loki dina Kubernetes bakal kieu:
- daemonSet pikeun nyebarkeun agén Promtail dina unggal mesin dina kluster server
- Panyebaran Loki
- sareng anu terakhir nyaéta panyebaran Grafana.
Kabeneran, Loki sayogi salaku pakét Helm, sahingga gampang disebarkeun.
Pamasangan via Heml
Anjeun kedahna parantos dipasang Heml. Éta tiasa diunduh tina gudang GitHub proyék. Éta dipasang ku ngabongkar arsip anu cocog sareng arsitéktur anjeun sareng nambihan helm $PATH
.
Catetan: Vérsi 3.0.0 Helm dirilis anyar. Kusabab aya seueur parobihan kana éta, pamaca disarankan pikeun ngantosan sakedik sateuacan dianggo..
Nambahkeun sumber pikeun Helm
Léngkah munggaran nyaéta nambihan gudang "loki" nganggo paréntah di handap ieu:
$ helm add loki https://grafana.github.io/loki/charts
Saatos ieu, anjeun tiasa milarian bungkusan anu namina "loki":
$ helm search loki
Hasil:
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 ieu ngagaduhan fitur ieu:
- bungkusan loki/loki cocog server Loki wungkul
- bungkusan loki / béntés-bit ngidinan Anjeun pikeun nyebarkeun DaemonSet maké béntés-bin pikeun ngumpulkeun log tinimbang Promtail
- bungkusan loki / promtail ngandung agén kumpulan file log
- bungkusan loki / loki-tumpukan, ngamungkinkeun anjeun langsung nyebarkeun Loki sareng Promtail.
Masang Loki
Pikeun nyebarkeun Loki ka Kubernetes, jalankeun paréntah di handap ieu dina ruang ngaran "monitoring":
$ helm upgrade --install loki loki/loki-stack --namespace monitoring
Pikeun nyimpen kana disk, tambahkeun parameter --set loki.persistence.enabled = true:
$ helm upgrade --install loki loki/loki-stack
--namespace monitoring
--set loki.persistence.enabled=true
Catetan: upami anjeun hoyong nyebarkeun Grafana dina waktos anu sami, teras tambahkeun parameter
--set grafana.enabled = true
Nalika anjeun ngajalankeun paréntah ieu anjeun kedah nampi kaluaran ieu:
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.
Ningali kaayaan pods dina "monitoring" namespace, urang tiasa ningali yén sadayana disebarkeun:
$ kubectl -n monitoring get pods -l release=loki
Hasil:
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
Kabéh pods ngajalankeun. Ayeuna waktuna pikeun ngalakukeun sababaraha tés!
Nyambung ka Grafana
Pikeun nyambung ka Grafana handapeun Kubernetes, anjeun kedah muka torowongan kana pod na. Di handap ieu paréntah pikeun muka port 3000 pikeun pod Grafana:
$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80
Titik penting anu sanés nyaéta kabutuhan pikeun ngabalikeun sandi administrator Grafana. Sandi dirahasiakeun loki-grafana
di sawah .data.admin-user
dina format base64.
Pikeun mulangkeunana, anjeun kedah ngajalankeun paréntah di handap ieu:
$ kubectl -n monitoring get secret loki-grafana
--template '{{index .data "admin-password" | base64decode}}'; echo
Anggo sandi ieu babarengan sareng akun administrator standar (admin).
Nangtukeun sumber data Loki di Grafana
Anu mimiti, pastikeun yén sumber data Loki geus dijieun (Konfigurasi / Sumber Data).
Ieu conto:
Conto nyetel sumber data pikeun Loki
Ku ngaklik "Test" anjeun tiasa pariksa sambungan sareng Loki.
Nyieun requests ka Loki
Ayeuna angkat ka Grafana ka bagian "Jelajah". Nalika nampi log tina wadahna, Loki nambihan metadata ti Kubernetes. Ku kituna, janten mungkin pikeun nempo log tina wadahna husus.
Contona, pikeun milih log wadah promtail, anjeun tiasa nganggo pamundut ieu: {container_name = "promtail"}
.
Di dieu ogé émut pikeun milih sumber data Loki.
Paménta ieu bakal mulangkeun kagiatan wadah sapertos kieu:
Hasil pamundut di Grafana
Tambahkeun ka dasbor
Dimimitian ku Grafana 6.4, anjeun tiasa nempatkeun inpormasi log langsung dina dasbor. Saatos ieu, pangguna bakal tiasa gancang ngalih antara jumlah pamundut dina situs sareng ngambah aplikasi na.
Di handap ieu conto dasbor anu ngalaksanakeun interaksi ieu:
Sampel dasbor sareng métrik Prometheus sareng log Loki
Kahareup Loki
Kuring mimiti ngagunakeun Loki deui dina Méi / Juni kalawan versi 0.1. Dinten ayeuna versi 1, komo 1.1 sareng 1.2 parantos dileupaskeun.
Ieu kudu ngaku yen versi 0.1 teu cukup stabil. Tapi 0.3 geus némbongkeun tanda nyata kematangan, sarta versi saterusna (0.4, lajeng 1.0) ngan strengthened gambaran ieu.
Saatos 1.0.0, teu aya anu tiasa gaduh alesan pikeun henteu nganggo alat anu saé ieu.
Perbaikan salajengna henteu kedah ngeunaan Loki, tapi integrasina sareng Grafana anu saé. Nyatana, Grafana 6.4 parantos ngagaduhan integrasi anu saé sareng dasbor.
Grafana 6.5, anu dileupaskeun anyar-anyar ieu, ningkatkeun integrasi ieu ku cara otomatis ngenalkeun eusi log dina format JSON.
Video di handap ieu nunjukkeun conto leutik mékanisme ieu:
Ngagunakeun string Loki kakeunaan dina Grafana
Janten mungkin ngagunakeun salah sahiji widang JSON, contona, pikeun:
- Tumbu ka alat éksternal
- nyaring eusi log
Contona, anjeun tiasa klik traceId pikeun muka Zipkin atanapi Jaeger.
Sakumaha biasa, kami ngarepkeun koméntar anjeun sareng ngajak anjeun
sumber: www.habr.com