Grafana Loki'ye Başlarken
Yayınlanan: 2021-05-01Çok kiracılı bir günlük toplama sistemi olan Grafana Loki'nin temellerini öğrenelim.
Bir üretim ortamında, aksama süresi kabul edilemez. Ticari gelir ve itibarda büyük bir kayba yol açabilir. Ancak uygun bir günlük kaydı ve izleme sisteminiz varsa, kesinti süresine yol açan bu tür senaryolarda nasıl hata ayıklayacağınızı bileceksiniz.
Maliyet tasarrufuna ve gelecekte ortaya çıkabilecek sorunları belirlemeye yardımcı olur.
Günümüzde her büyüklükteki kuruluş DevOps ilkelerini ve araçlarını kullanıyor. Konteynerler ve Kubernet'ler en popüler olanlardır. Ve böyle bir sistemin izlenmesi Prometheus ile çok verimli bir şekilde yapılır. Ancak Prometheus'un geciktiği yer, kayıt kısmıdır. Merkezi bir kayıt sistemi sağlamaz ve işte burada Loki devreye giriyor.
Grafana Loki nedir?
Grafana Loki, Grafana tarafından 2018'de başlatılan ve Apache 2.0 lisansı altında yayınlanan çok kiracılı bir günlük toplama sistemidir. Bu sistem Prometheus'tan ilham alınarak geliştirilmiştir. Büyük ölçüde bulut sağlayıcılarla ve Prometheus ve Grafana gibi araçlarla kullanılır.
Loki, ELK/EFK yığınına benzer, ancak daha iyi işlevlerle kurulması ve çalıştırılması daha kolaydır. Loki, günlüğün içeriğini indekslemez, bunun yerine bir günlük akışı için zaman damgalarını ve bir dizi etiketi indeksler. Endeksi küçültür, bu da işlemleri basitleştirir ve sonunda maliyeti düşürür.
Loki'nin Faydaları
Yığınınızda Loki kullanmanın faydaları aşağıdadır:
- Yalnızca meta verileri dizine ekleyen Loki, çok uygun maliyetlidir. Tam metin işleme için çalışan dizinler, çok pahalı olan daha büyük RAM örnekleri gerektirir. Günlükleri S3 gibi nesnelerde saklamak da onu çok daha ucuza getirir.
- tenantID kullanarak çoklu kiracılığı destekler, böylece kiracıların verileri ayrı olarak depolanır.
- Loki'yi küçük ölçekli işlemler için yerel olarak çalıştırabilir veya büyük ölçekli işlemler için yatay olarak kolayca ölçekleyebilirsiniz.
- Okuma ve yazma işlemlerinde çekirdek tutarlılığını sağlamak için dinamo stilini kullanır.
- İşlem çökmeleri ve günlüklerin kaybolduğu ani çıkışlar riskini karşılamak için varsayılan olarak 3 günlük kopyasına sahip olacak şekilde yapılandırılmıştır. Evet, bazı ekstra masraflara neden olur ama o kadar yüksek değil, veri bütünlüğü daha kritiktir.
- Kubernetes, Prometheus ve Grafana'da görselleştirme gibi popüler araçlarla takılması kolaydır.
Loki Mimarlık

Loki mimarisinin üç bileşeni vardır – Promtail , Loki ve Grafana .
Promtail, uygulamalarınızı veya hizmetlerinizi çalıştıran her düğüme yüklenmesi gereken bir aracıdır. Promtail'in birincil sorumluluğu hedefi keşfetmek, etiketleri podlardan gelen lo akışlarına eklemek ve bu günlükleri Loki örneklerine iletmektir. Aracı, yerel dosya sisteminden günlükleri kuyruklar ve günlükleri Loki'nin merkezi sunucusuna gönderir. Bundan sonra, günlüklerinizi Grafana kullanarak geri sorgulayabilirsiniz.
Loki Kullanım Durumları
Aşağıda Loki gibi bir kayıt sistemi kullanmanın popüler kullanım durumları verilmiştir.
- İş Zekası: Bu her zaman geçerli olan bir kullanım örneğidir, günlük verilerinden eyleme dönüştürülebilir içgörüler oluşturmak her zaman çok faydalı olabilir. Loki, günlük verilerini anlamanıza yardımcı olabilir ve işinizin büyümesi için yeni stratejiler oluşturmanıza yardımcı olabilir. Örneğin, bir kuruluşun günlük verileri aracılığıyla, bir reklam kanalından dönüşüm oranlarını bilmenize yardımcı olabilir.
- İzleme: Prometheus, izleme için endüstride çokça kullanılmaktadır. Ancak Loki gibi araçlarla günlüklerinizi izleyerek birçok şeyi tanımlayabilirsiniz. Günlükleri gözden geçirerek web sitenizdeki hata oranlarını izlemenize ve eşik aşıldığında uyarı göndermenize yardımcı olabilir.
- Hata Ayıklama ve Sorun Giderme: Loki, uygulama ne zaman çöktü, çökme nedeni, çökmeden önceki son durumu gibi bazı hızlı yanıtlarla DevOps ekibine yardımcı olabilir.
- Siber Güvenlik: Son birkaç yılda e-ticaret portallarına yönelik siber saldırılar katlanarak arttı. Loki'nin yardımıyla, kuruluşunuzun sisteminde meydana gelen herhangi bir tehdidi, sorunu veya kötü amaçlı etkinliği belirlemek için günlükleri kontrol edebilirsiniz. Hack başarılı olursa, Loki adli tıp ekibinin sistemde neler olduğunu ayrıntılı olarak anlaması için yine de yardımcı olabilir. Bilgisayar korsanlarını takip etmelerine yardımcı olacaktır.
- Uyumluluk: Sektör düzenlemelerine uymak için kuruluşların denetim günlüklerini 7 yıla kadar tutmaları gerekir. Yerel yetkililer, günlükleri her zaman denetleyebilir. Loki, denetim günlüklerinizi güvenle saklayabilir.
Loki ve Promtail Kurulumu
Grafana'da günlüklerin nasıl kurulacağını ve görselleştirileceğini hızlıca öğrenelim. Bu gösterimde, günlükleri /var/log/*log dosyasından sıyıracak genel yapılandırmayı kullanacağım.
Loki sürümleri sayfasına gidin, Varlıklar'a gidin, burada birden fazla Loki ve Promtail paketi bulacaksınız. Loki paketini kullandığınız sisteme göre indirin. Cli veya canary Loki paketlerini indirmeyin. Ubuntu sistemim için loki-linux-amd64.zip ve promtail- linux - amd64.zip'i indiriyorum .
İndirme işlemi bittikten sonra Loki ve Promtail dosyalarını çıkartın ve tek bir dizine koyun.
[email protected]:~$ mkdir loki [email protected]:~$ mv loki-linux-amd64 promtail-linux-amd64 loki [email protected]:~$ cd loki/ [email protected]:~/loki$ ls loki-linux-amd64 promtail-linux-amd64Şimdi, Loki ve Promtail'in genel yapılandırma dosyasını indirin.
[email protected]:~/loki$ wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml --2021-04-30 12:00:51-- https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ... Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1832 (1.8K) [text/plain] Saving to: 'loki-local-config.yaml' loki-local-config.yaml 100%[===============================================================================================>] 1.79K --.-KB/s in 0s 2021-04-30 12:00:51 (16.6 MB/s) - 'loki-local-config.yaml' saved [1832/1832] [email protected]:~/loki$ wget https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml --2021-04-30 12:05:07-- https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml Resolving github.com (github.com)... 13.234.210.38 Connecting to github.com (github.com)|13.234.210.38|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'promtail-local-config.yaml' promtail-local-config.yaml [ <=> ] 109.16K --.-KB/s in 0.002s 2021-04-30 12:05:08 (66.8 MB/s) - 'promtail-local-config.yaml' saved [111779] [email protected]:~/loki$ ls loki-linux-amd64 loki-local-config.yaml promtail-linux-amd64 promtail-local-config.yamlLoki'yi başlatmak için aşağıdaki komutu Loki yapılandırma dosyasıyla çalıştırın. Bu, Loki'yi başlatır ve terminalde Loki günlüklerini görüntüler.
[email protected]:~/loki$ ./loki-linux-amd64 -config.file=loki-local-config.yaml level=info ts=2021-04-30T16:08:37.990311491Z caller=main.go:130 msg="Starting Loki" version="(version=2.2.1, branch=HEAD, revision=babea82e)" level=info ts=2021-04-30T16:08:37.990856871Z caller=server.go:229 http=[::]:3100 grpc=[::]:9096 msg="server listening on addresses" level=info ts=2021-04-30T16:08:37.991613443Z caller=shipper_index_client.go:100 msg="starting boltdb shipper in 0 mode" level=info ts=2021-04-30T16:08:37.992568288Z caller=mapper.go:38 msg="cleaning up mapped rules directory" path=/tmp/loki/rules-temp level=error ts=2021-04-30T16:08:37.992623632Z caller=mapper.go:42 msg="unable to read rules directory" path=/tmp/loki/rules-temp err="open /tmp/loki/rules-temp: no such file or directory" level=info ts=2021-04-30T16:08:37.993520927Z caller=table_manager.go:171 msg="uploading tables" level=info ts=2021-04-30T16:08:37.993941099Z caller=module_service.go:59 msg=initialising module=store level=info ts=2021-04-30T16:08:37.994011839Z caller=module_service.go:59 msg=initialising module=memberlist-kv level=info ts=2021-04-30T16:08:37.99412775Z caller=module_service.go:59 msg=initialising module=server level=info ts=2021-04-30T16:08:37.994379648Z caller=module_service.go:59 msg=initialising module=ingester level=info ts=2021-04-30T16:08:37.994415984Z caller=ingester.go:241 msg="recovering from checkpoint"Promtail'i başlatmak için aşağıdaki komutu Promtail yapılandırma dosyası ile çalıştırın. Günlükleri Loki'ye almak için Promtail gereklidir.

[email protected]:~/loki$ ./promtail-linux-amd64 -config.file=promtail-local-config.yaml level=info ts=2021-04-30T16:35:52.775998059Z caller=server.go:229 http=[::]:9080 grpc=[::]:42557 msg="server listening on addresses" level=info ts=2021-04-30T16:35:52.776283661Z caller=main.go:112 msg="Starting Promtail" version="(version=2.2.1, branch=HEAD, revision=babea82e)" level=info ts=2021-04-30T16:35:57.776226323Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}" ts=2021-04-30T16:35:57.776902427Z caller=log.go:124 level=info msg="Seeked /var/log/fontconfig.log - &{Offset:11055 Whence:0}" level=info ts=2021-04-30T16:35:57.776983546Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/auth.log level=info ts=2021-04-30T16:35:57.777009023Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/fontconfig.log ts=2021-04-30T16:35:57.777094698Z caller=log.go:124 level=info msg="Seeked /var/log/lastlog - &{Offset:0 Whence:0}" ts=2021-04-30T16:35:57.777712594Z caller=log.go:124 level=info msg="Seeked /var/log/apport.log - &{Offset:0 Whence:0}" ts=2021-04-30T16:35:57.778200383Z caller=log.go:124 level=info msg="Seeked /var/log/alternatives.log - &{Offset:456 Whence:0}" ts=2021-04-30T16:35:57.780467419Z caller=log.go:124 level=info msg="Seeked /var/log/syslog - &{Offset:56911 Whence:0}" level=info ts=2021-04-30T16:35:57.780646032Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/kern.log level=info ts=2021-04-30T16:35:57.781289004Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}" level=info ts=2021-04-30T16:35:57.787770104Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/grafana/grafana.log ts=2021-04-30T16:35:57.782276009Z caller=log.go:124 level=info msg="Seeked /var/log/grafana/grafana.log - &{Offset:0 Whence:0}"Loki ve Grafana kullanarak Günlüğü Görselleştirin
Grafana, Loki için yerleşik destek sağlar. Loki, Grafana'nın veri kaynaklarında zaten mevcut.
Adım 1: Grafana Konfigürasyonlarına gidin ve “Veri Kaynakları”na tıklayın.

Adım 2: Veri Kaynakları'nda kaynağı ada veya türe göre arayabilirsiniz.

Adım 3: Loki adına göre arayın. Bu veri kaynağının Grafana'da zaten mevcut olduğunu görebilirsiniz. Seç'e tıklayın.

Adım 4: Veri kaynağına vermek istediğiniz adı girin ve URL'ye http://localhost:3100 (Loki Grafana'dan farklı bir sunucuda çalışıyorsa bunu sunucu IP'si olarak değiştirin) yazın çünkü Loki'yi portta başlattık 3100.

En alttaki Test Et ve Kaydet düğmesine tıklayın. Loki kurulumunu doğru yaptıysanız, yeşil bir kutuda gösterilen aşağıdaki mesajı alacaksınız.

Adım 5: Sol taraftaki Keşfet sekmesine tıklayın. Veri kaynağı seçiminin açılır menüsünden Loki'yi seçin. Şimdi, Grafana günlüklerinin etkinliğini görselleştirmek istiyorum. Bunu yapmak için Günlük Tarayıcıya {filename=”/var/log/grafana/grafana.log”} sorgusunu eklemeniz gerekir. Aşağıdaki yeşil çubuklar, günlük dosyasındaki olayların girişleridir.

Gösterge tablosunda görselleştirmenin gelmesini istediğiniz zaman aralığını seçebilir ve ayrıca sorgunun yenileme aralığını ayarlayabilir, ardından sorgunun yeniden çalışacağını belirleyebilirsiniz. Günlüklerin daha fazla ayrıntısını görmek için aşağı kaydırın ve günlük girişlerinden birine tıklayın, günlükle ilgili her türlü bilgiyi verecektir.

Güzel görünüyor, değil mi?
Yani, hepsi başlamakla ilgiliydi. Loki ile gözlemlenebilirliği açıklayan aşağıdaki web semineri videosunu daha fazla kontrol etmenizi şiddetle tavsiye ederim.
Çözüm
Dağıtılmış bir sistem, her biri tonlarca günlüğe sahip birçok uygulama veya mikro hizmetten oluşur. Günlükleri toplamak, depolamak ve sonra kullanmak için uygun maliyetli bir yola ihtiyacınız olacaktır. Loki, bu gibi durumlar için mükemmel bir çözümdür. Aslında, Loki'yi üretim ortamınıza entegre ederek günlük kaydı ve izleme maliyetlerinizi yaklaşık %75 oranında azaltabilirsiniz.
Loki, Grafana Cloud aracılığıyla da mevcuttur, kurulum sürecinden geçmek istemiyorsanız denemek iyi olur.
Ardından, Grafana Tempo'yu tanıyın.
