EN: Read in English
Dunia O4: Diari & Satu Pesanan
Asas Loki dan LogQL
Anda akan belajar: pilih diari ikut labelnya dan tapis barisnya dengan LogQL.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Prometheus 3 pada 1 Nov 2026
Masalahnya
Lima servis simpan lima diari, di lima mesin. Satu bayaran tamat masa entah di mana. Nak mula dari mana?
Pilih satu jawapan.
Tengok
Loki: Stor log Grafana. Ia indeks label setiap diari sahaja, bukan setiap perkataan, jadi ia kekal kecil dan murah. simpan setiap diari di satu rak. Ia indeks label sahaja, contohnya app. Bukan setiap perkataan.
Cuba
Minta baris kedai-api yang ada “timeout”. Ketik kepingan mengikut urutan.
Ketik kepingan ikut turutan yang betul.
Petunjuk
Kurungan kerinting dulu: ia pilih diari. Kemudian penapis.Teka
Baris mana yang {app="kedai-api"} | json | level="error" pulangkan?
0 daripada 1 dijumpai
LogQL: Bahasa query Loki. Pilih diari ikut label dalam kurungan, kemudian tapis baris: {app="kedai-api"} |= "timeout". dibaca macam paip. | json tukar medan jadi label. Kemudian anda boleh tapis padanya.
Semak
Loki 3.7 sebenar setuju: satu baris, dua cara bertanya. Perhatikan trace_idnya. Anda akan perlukannya nanti.
Semak
parse error : queries require at least one regexp or equality matcher that does not have an empty-compatible value. For instance, app=~".*" does not meet this requirement, but app=~".+" willAnda minta {app=~".*"}: “semua diari”. Loki tolak. Pembetulan mana yang berfungsi?
Pilih satu jawapan.
Anda berjaya!
Kini anda boleh pilih diari ikut label dan tapis barisnya dengan LogQL.
Nak tahu lebih (pilihan)
LogQL boleh mengira juga: sum by (app) (count_over_time({app=~"kedai-.*"} | json | level=~"error|warn" [10m])) kira baris bermasalah setiap app. Kekalkan label sedikit dan tetap, contohnya app. Jangan letak order_id dalam label: setiap nilai buat log stream: Satu diari dalam Loki: semua baris dengan set label yang sama. Terlalu banyak nilai label buat terlalu banyak diari. baharu.
Misi sebenar
docker network create logs-trydocker run -d --name loki-try --network logs-try -p 3100:3100 grafana/loki:3.7.9curl -s -H "Content-Type: application/json" -X POST http://localhost:3100/loki/api/v1/push --data-raw "{\"streams\":[{\"stream\":{\"app\":\"try\"},\"values\":[[\"$(date +%s)000000000\",\"hello loki\"]]}]}"docker run --rm --network logs-try grafana/logcli:3.7.9 --addr=http://loki-try:3100 query --quiet '{app="try"}'docker rm -f loki-try && docker network rm logs-try
0 daripada 5 langkah siap · Tanda anda disimpan.
English
Five services keep five diaries, on five machines. A payment timed out somewhere. Where do you start?
Loki keeps every diary on one shelf. It indexes only the labels, like app. Not every word.
Ask for kedai-api’s lines that contain “timeout”. Tap the pieces in order.
LogQL reads like a pipe. | json turns fields into labels. Then you can filter on them.
Real Loki 3.7 agrees: one line, two ways to ask. Notice its trace_id. You will need it soon.
parse error : queries require at least one regexp or equality matcher that does not have an empty-compatible value. For instance, app=~".*" does not meet this requirement, but app=~".+" willYou asked for {app=~".*"}: “every diary”. Loki refused. Which fix works?
You can now pick diaries by label and filter their lines with LogQL.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Loki overview · LogQL: log queries · LogQL: metric queries · logcli
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?