InfluxDB ve Grafana ile Monitoring [1] Veri Kaydı

Bu yazı serisinde zaman serisi verilerin InfluxDB üzerinde depolanması ve Grafana üzerinde görselleştirilerek izlenmesinden bahsedeceğim.

Başlamadan direkt Grafana üzerinde görselleştirme bölümüne geçmek için tıklayınız.

InfluxDB

Influxdb zaman serisi verilerini saklayabilmek ve işleyebilmek için özel hazırlanmış bir veritabanıdır.[1]

Genellikle iot cihazlardan, sensörlerden gelen veriler, sistem logları veya zaman serisi şeklinde olan verileri hızlıca kayıt edebilmek ve analizini yapabilmek için kullanılır.

Daha Fazla Bilgi İçin

Grafana

Grafana verileriniz için sorgulama, görselleştirme, uyarı verme ve analiz yapmanıza olanak sağlayan açık kaynak platformdur.[2]

Veritabanınızı bağladıktan sonra verileriniz ile grafikler ve tablolar oluşturabilir, analizler yapabilir ve bunları paylaşabilirsiniz.

Daha Fazla Bilgi İçin

Birazda Proje

Influxdb ve Grafana kullanımı daha iyi gösterebilmek için örnek bir senaryo hazırladım.

Senaryoya göre Avrupa Merkez Bankası[3] tarafından sağlanan ücretsiz ve açık kaynak bir api ile 2005 yılından bugüne kadar olan dolar kuru çekilerek influxdb üzerine kayıt edilecek. Daha sonra Grafana bağlantısı yapılarak dashboard hazırlanacak bu sayede veriler görselleştirilecek.

Verilerin Alınması

Aşağıdaki metod ile url’e istek atılır ve gelen cevap içinde bulunan rates dizisi geri döndürülür.

Döviz Verilerinin Çekilmesi

Verilerin Kayıt Edilmesi

InfluxDBClient kütüphanesini import ettikten sonra “client” adında bir değişken tanımlanıyor. InfluxDBClient parametreleri adres, port, kullanıcı adı, parola ve veritabanı adı.

Daha sonra client.create_database(‘example’) komutu ile veritabanı bağlantısı kurulur.

insert metodu kendisine parametre olarak gelen dizi tipindeki verileri veritabanına kayıt eder. Kayıt edeceği veriler “key” değeri olarak tarih bilgisi “value” değeri olarak o tarihdeki dolar kurunun bilgisi bulunmaktadır.

Ancak tarih bilgisi sadece yıl-ay-gün formatında olduğu için veritabanına kayıt etmeden önce yıl-ay-gün saat-dakika-saniye formatına dönüştürüldü.

Son olarak point içerisinde ilişkisel veritabanlarını ile benzerlik vardır. Measurement kısmını tablo adı , tag kısmını primary key gibi , time kayıtlarımızdaki tarih kısmı ve field ise tablodaki satırlar olarak düşünebilirsiniz.

Her veri döngü ile json_body dizisi içerisine atıldıktan sonra client.write_points(json_body) komutu ile veritabanına kayıt edilir ve sonuç olarak true veya false geri döner.

Verilerin Görüntülenmesi

Bu metod verilerin Influxdb üzerinden sorgu ile alınıp gösterilmesini sağlar.

Çıktı:

2020–11–23T00:00:00Z TRY : 7.8867
2020–11–30T00:00:00Z TRY : 7.8161
2020–12–07T00:00:00Z TRY : 7.8492
2020–12–14T00:00:00Z TRY : 7.7885
2020–12–21T00:00:00Z TRY : 7.6286
2020–12–28T00:00:00Z TRY : 7.401
2021–01–04T00:00:00Z TRY : 7.3784

Kayıt edilen verilerin Grafana üzerinde görselleştirmesi sonraki yazımda bulabilirsiniz.

Tüm proje dosyalarına Github üzerinen ulaşabilirsiniz.

Kaynaklar

--

--

https://ajiyba.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store