API ile Grafana’da Verileri Gösterme

Ömer Faruk Akyazan
Turk Telekom Bulut Teknolojileri
4 min readNov 15, 2023

Grafana, veri görselleştirme için popüler bir araçtır. Grafana’ya veri çekmek için çeşitli yöntemler mevcuttur, ancak en yaygın yöntemlerden biri API’yi kullanmaktır. API, Grafana’ya veri çekmenin hızlı ve kolay bir yoludur.

Bu yazımda gerekli bağlantıları sağlama, erişim durumları, grafanada yapılacak ekstra konfigürasyonlar üzerinden bilgiler vermeye çalışacağım. Sizler de bu şekilde size vendor yada farklı bir sağlayıcının sunduğu API kataloğundan verilerinizi görselleştirerek daha kolay takip ve yönetim sağlayabilirsiniz.

Api bağlantısını sağlayabilmek adına öncelikle Infinity Tool adı verilen bir eklenti kurmamız gerekiyor. Bu toolla beraber Datasource ekleyebiliyoruz ve kaynaktan verilerimizi çekebiliyoruz. Grafana üzerinden birden fazla Datasource ekleyebiliriz ve bu sadece Api olmak zorunda değildir.(Bir DB veya bir exporter üzerinden de datasource eklenebilir).

Infinity toolu internet üzerinden arayarak ve indirerek ücretsiz edinebiliyoruz. Kurulum sonrası eklentiyi Grafana üzerinde kurabilmemiz için çeşitli kurulum yöntemleri mevcut. Docker üzerinden ya da grafana-cli üzerinden kurulum yapabiliriz. Ekstra olarak manuel bir şekilde plugin dosyasını indirdikten sonra grafana dizini altındaki plugin dizinine dosyayı export edip grafana servisini yeniden başlatırsak eklentimizin plugins kısmına geldiğini görürüz.

Grafana-cli için kurulum komutu aşağıdaki şekildedir.

grafana-cli plugins install yesoreyeram-infinity-datasource

Kurulum tamamlandıktan sonra datasource yani bir veri kaynağı ekleyebilecek duruma gelmiş oluruz. Grafana menüsünden datasource kısmına geliriz ve buradan Infinity’i seçeriz. Datasource ekleyebilmemiz için grafana içerisinde admin yetkilerine sahip olmamız gerektiğini unutmamalıyız.

Connections — Datasource kısmından Infinity Tool seçilir

Daha sonra karşımıza konfigürasyon ekranı çıkacak.

Konfigürasyon ekranı

Burada istediğimiz ismi verdikten sonra:

Api için geçerli url adresimizi girip bir allowed host oluşturuyoruz. Plugin bu bağlantı üzerinden login olmaya çalışacak, bu yüzden authentication kısmına apiye nasıl login olacağımızın bilgilerini vereceğiz. Bu bir api key ya da basit bir kullanıcı adı-şifre olabilir.

Header kısmında ise api kataloğunu incelemekte fayda var. İlgili katalogda verilen örneklerde header var ise buraya ekleyebiliriz.

Security kısmında skip TLS seçeneğini aktif ediyoruz.

Son olarak save and test diyerek datasource eklemiş oluyoruz. Bir sonraki aşamada ilgili datasource ile verilerimizi görselleştirme kısmı var.

Sağ üst köşeden + işaretine tıklayıp yeni bir dashboard ekle diyoruz ve önümüze aşağıdaki şekilde bir ekran gelmesi gerekiyor. Burada öncelikle datasource kısmında bir önceki adımda eklediğimiz kaynağı yani infinity toolu eklememiz gerekiyor.

Verilerimiz api tarafından .json formatında alıyoruz ve parser kısmında backendi seçiyoruz. Source kısmı url olacak çünkü api kataloğumuzdan aldığımız filtrelenmiş url’i burada kullanacağız .

Dikkat: Method olarak sadece GET kullanmanızı öneriyorum aksi takdirde canlı sisteminizde istenmedik senaryolara yol açabilirsiniz.

URL kısmına url yapıştırdıktan sonra herhangi bir firewall ve erişim problemimiz yok ise dashboard kısmına switch to table seçeneği gelecektir. Bu seçeneği seçtikten sonra verilerimiz .json dosyasındaki şekilde bölüm bölüm karşımıza gelecektir fakat anlamlı bir sonuç gözükmeyebilir. API bize istediğimiz ve istemediğimiz tüm verileri beraber getirecektir.

Dilediğimiz verileri çekebilmemiz için öncelikle parsing kısmına gelerek filtreleme yapmamız gerekmektedir.

Örnek olarak benim api kataloğumdan çektiğim veri aşağıdaki .json formatında olsun:

{"fact":"The most expensive cat was an Asian Leopard cat (ALC)-Domestic Shorthair (DSH) hybrid named Zeus. Zeus, who is 90% ALC and 10% DSH, has an asking price of \u00a3100,000 ($154,000).","length":175}

Buradaki ham .json dosyam görüldüğü üzere iki bölümden oluşmaktadır.

fact ve length başlıklarının altındaki verilere ihtiyacımız var.

Burada .json dosyasındaki structure’ı parçalamak ve istediğimiz kısımları alabilmemiz için parsing işlemi gerçekleştirmemiz gerekecek. Tablomuzun altında yer alan parsing kısmından bu işlemi yapabiliriz.

facts nesnesinin altında yer alan bilgileri çekebilmek için .facts yazıyoruz ve facts altındaki bilgilerimiz tabloya yansıyor. Diğer bölümlerle bilgileri birleştirmek istersek query kısmında yeni bir sorgu oluşturacağız ve transform data bölümünden Concatenate Fields yani bölümleri birleştir seçeneği ile birleştirebiliriz.

İstemediğimiz kolonları ise Organize Fields kısmından seçerek ve hatta sıralamaları değiştirerek oluşturabiliriz.

Bu şekilde verilerimizi API aracılığı ile çekip Grafanaya yansıtmış olduk. Artık geriye verileri istediğimiz şekilde görselleştirme ve metrik birimlerini ayarlamak kalıyor.

--

--