Veri Görselleştirme 4.0 — Grafana Rehberi

Mert Cobanov
6 min readNov 18, 2019

Zaman bazlı ve anlık verilerinizi sıkıcı görsellerden kurtararak projenizde fütürist bir yaklaşım sağlayabilirsiniz. Hem de bu zamana kadarki tüm rehberlerim gibi oldukça basit ve hızlı bir şekilde.

IoT projelerinizde sensörleriniz zaman bazlı olarak sizin için veri üretirler veya makine öğrenmesi uygulamalarınız için yeni bir model oluştururken birçok metrik değer elde edersiniz, belki de sadece elinizdeki bir veri setini görselleştirmek istiyorsunuzdur.

Sizin için hazırladığım bu rehberde aslında sürecin ne kadar kolay olduğunu göreceksiniz. Komut pencereleri ve SQL sorguları ne kadar heyecan verici gözükmese de bu sistem arka planda sizin için her şeyi hallediyor olacak. Dilerseniz hemen proje hakkında biraz ön bilgi verip çalışmaya başlayalım.

Bu frameworkler ile nasıl işler yapılabildiğini ve frameworkleri nerelerde kullanabileceğinizi daha iyi anlamak adına benim nerede kullandığımı anlatabilirim.

Bulunduğum şirkette veri mühendisi olarak çalışıyorum. Burada üretim ve test aşamalarında makinelerin ürettiği verileri Grafana’nın canlı panellerinde görselleştirerek olası problemleri erken safhalarda tespit etmeyi amaçlıyoruz. Grafana’nın kendi içerisinde bir alarm mekanizması olduğunu da şimdiden belirtmekte fayda var. Bu sayede olası problemleri izleyip kişileri haberdar eden ufak botlara sahip oluyoruz.

Grafana Logo

Grafana: Genel amaçlı bir görselleştirme arayüzüdür. Web uygulaması olması gerçekten harika. Paneller gerçekten güzel gözüküyor ve birçok farklı sistemle entegre olarak çalışabiliyor.

InfluxDB: IoT sensör verileri ve gerçek zamanlı veriler için optimize edilmiş bir veri tabanı formu, gerçekten de kendi sınıfında en hızlısı olması tercih edilme sebebi.

Veri Seti

Öncelikle çalışacağımız veri setine bir göz atalım, farklı dosya formatlarında çalışabilirsiniz. Bu çalışma özelinde popülerliği açısından “.CSV" uzantılı bir dosya kullanacağım.

Örnek Veri Seti

Kaggle üzerinden avokado fiyatlarını içeren örnek bir veri seti kullanacağım. Veri setine aşağıdaki link üzerinden ulaşabilirsiniz.

Avocado Prices

Gerekli Dosyalar

Telegraf

Telegraf Windows Link

InfluxDB

InfluxDB Windows Link

Grafanas

Grafana Standalone Windows Binaries Link

Başlayalım

Ben öncelikle indirdiğim tüm dosyaları bir klasör içerisine çıkartıyorum ve veri setini telegraf klasörünün içine atıyorum. Dosyaları çıkarttıktan sonra dosya isimlerini sadeleştirmek, komut penceresinden kolayca ulaşmak için yararlı olacaktır.

Not: İndirdiğiniz klasörleri çıkartırken klasöre çıkart yerine buraya çıkart derseniz, klasörlere daha hızlı erişebilirsiniz.

Yapılanları tamamladığımızda klasörün içerisi bu şekilde görünüyor.

Ayarlarımızı Yapalım

Burada biraz config dosyalarını editleyeceğiz, çalışmamıza uygun olması için bazı bilgileri vermemiz gerekiyor.

Telegraf Config

Telegrafın doğru şekilde mesajlaşması için çalışmamıza uygun yeni bir config dosyasını aşağıda verdiğim kod ile oluşturabilirsiniz. Telegraf klasörünün içerisinde komut satırı açarak bunu çalıştıralım.

telegraf -sample-config -input-filter file -output-filter influxdb > csv.conf

Bu adımdan sonra telegraf klasörünün içerisinde csv.conf adında yeni bir dosya oluşmuş olması gerekiyor. Şimdi içerisine veri setimizi okuyabilmesi için gerekli ayarları ekleyelim. Bunun için veri setimize ufak bir göz atmakta fayda var.

  • ilk kolon index numarası içeriyor bu bizim için önemli değil.
  • ikinci kolon tarih kolonu burayı özel olarak belirteceğiz.

Telegraf için yeni oluşturduğumuz csv.conf dosyasında 467. satırdan itibaren gelen komutları temizleyerek aşağıda verdiğim ayarları yapacağız. Siz kendi çalışmalarınızda burada yaptıklarımıza benzer olarak değişiklik yapabilirsiniz. Bu ayarlara nereden baktığımı merak ediyorsanız telegrafın github reposunda csv parser bölümüne buradan ulaşabilirsiniz.

[[inputs.file]]
files = ["avocado.csv"]
data_format = "csv"
csv_header_row_count = 1
csv_column_names = []
csv_column_types = []
csv_skip_rows = 0
csv_skip_columns = 1
csv_delimiter = ","
csv_comment = ""
csv_trim_space = false
csv_tag_columns = []
csv_measurement_column = ""
csv_timestamp_column = "Date"
csv_timestamp_format = "2006-01-02"

Grafana ve InfluxDB Config

Grafana ve InfluxDB config dosyalarında bir şey yapmamıza gerek yok. Burada config dosyalarının içerisine bakarak servislerin hangi portta çalıştığına veya kullanıcı ismi, parola gibi bilgileri değiştirmek isteyenler için gerekli satırları inceleyebilirsiniz.

Çalıştıralım

Her biri kuruluma ihtiyaç duymadan standalone olarak çalışabiliyor, bu sayede bir servis kullanmak zorunda kalmayacaksınız.

Telegraf servisi, adresini verdiğiniz CSV dosyasını satır satır okumaya başlayacak ve bunu Influx database’ine yazacak.

  • Grafana klasörüne girin ve bin klasörü altındaki grafana-server.exe dosyasını çalıştırın.
  • InfluxDB klasörü altındaki influxd.exe dosyasını çalıştırın.

Son olarak telegraf klasörüne giderek bir komut ekranı açın ve aşağıda verdiğim kodu çalıştırarak başlatın.

telegraf --config csv.conf

Database Bağlantısını Yapalım

Grafana servisi localhost:3000 üzerinde çalışmaya başlayacak, tarayıcımızı açalım ve adrese gidelim.

Harikulade, eğer ayarlarda değişiklik yapmadıysanız default olarak “username: admin, password: admin” olarak oturum açabilirsiniz.

Şimdi ilk canlı dashboard’umuzu oluşturmak için Grafana bizden bir şeyler istiyor hızlıca tamamlayabiliriz.

“Add data source” diyerek InfluxDB’i bağlıyoruz.

## HTTP Basic Auth

#URL = http://localhost:8086

#Database = telegraf
# username = “telegraf”
# password = “metricsmetricsmetricsmetrics

Aşağıdaki görüntüyü elde ettiyseniz her şey olmuş demektir.

Görselleştirelim

İşin eğlenceli kısmında geldik.

Şu anda verimiz servislere bağlanmış oldu. Veri setinin içerisine bakacak olursak veriler 2015 tarihine ait bu tarz zaman bazlı servisleri incelerken zaman aralıklarına dikkat etmemiz gerekiyor.

New dashboard sekmesine tıklayalım ve sonrasında add query butonuna basalım.

Şimdi SQL sorgumuzu verelim ve veriyi görselleştirelim. Bunun için “select measurement” yazan bölüme tıklayarak seçim yapıyoruz. Hemen altındaki SELECT alanındaki field bölümünden parametremizi seçiyoruz. Ben örnek olması açısından şöyle bir görsel oluşturuyorum, siz verinize göre ayarları değiştirerek en uygun olanı seçebilirsiniz.

Veriniz görünmediyse öncesinde anlattığım gibi tarihi ayarlamadığınız için olabilir. Ekranın sol üst tarafındaki zaman çubuğuna verinizin zaman aralığını girin, şu anda kullandığımız veri 2015 yılındandı.

Tarihi ayarlıyorum ve işlemlerim tamamlandı. Kaydet butonuna basarak ilk panelimi eklemiş oluyorum. Grafana içerisinde birçok farklı panel içeriyor. Bunları deneyerek istediğiniz panelleri dashboard’a ekleyebilirsiniz.

Birkaç dakika içerisinde örnek amaçlı bir dashboard hazırlamış oluyorum.

Gitmeden size birkaç püf nokta bırakayım, telegraf için oluşturduğumuz csv dosyasındaki parametreleri ayarlayarak oluşturduğunuz veritabanını projenize uygun özelleştirin. Parametreleri, tarihi, başlıkları ve tabloları tanımlayarak daha efektif çalışabilirsiniz. Grafana gerçekten çok fazla özelleştirilebilir, eklenti içeren ve birçok ayar bulunan bir arayüz. Ne kadar deneme yaparsanız o kadar güçlü bir şekilde kullanabilirsiniz. Ayrıca Grafana’nın alert kısımlarını, canlı akışlarını ve diğer özelliklerini kesinlikle incelemenizi öneririm.

Her türlü sorunuzu LinkedIn ve mail ile bana iletebilirsiniz. Projeyi GitHub’a ekliyorum oradan da ilgili dosyaları bulabilirsiniz.

Proje Reposu

https://github.com/cobanov/Data-Visualization

--

--