Apache Nifi ve Slack kullanarak bir hava durumu uygulaması

Yusuf Gözübüyük
5 min readSep 19, 2022

--

Herkese merhaba ben Yusuf Gözübüyük bu yazımda sizlere bir api’den veri alıp apache Nifi ile düzenleyip slack kullanarak cep telefonumuza mesaj gönderen bir hava durumu uygulaması yaptım keyifli okumalar

Yazıya başlamadan önce bir

Google Cloud hesabınızın olması ve nifi nin kurulu olması gerekiyor eğer kurulu değilse nifi kurulumuna bu yazımdan ulaşabilirsiniz
www.weatherapi.com üzerinden bir api nizin
https://api.slack.com/messaging/webhooks üzerinden de slack bot ve kanalınızın olması gerekiyor

Önceki derste ki gibi ssh ile sanal bilgisayara gidip sırasıyla
./nifi.sh start
./nifi.sh status
yapın

Haydi başlayalım

Adım 1: Çalışma ortamını hazırlamak

İlk işimiz Process Group ‘u sürükleyip ekrana bırakmak ve ona bir isim vermek, ben WeatherApp yaptım isim verdikten sonra çift tıklayıp içine giriyoruz

Adım 2: Veriyi almak

Öncelikle apimizden veriyi almamız lazım bunun için Processor’ü sürükle bırak ile ekrana çekip arama kısmına InvokeHTTP yazalım ve seçelim daha sonra çift tıklayıp içine girelim

Settings te Response hariç hepsini işaretliyelim Response bizim veriyi gönderirken lazım olacak(Burada özellikle belirtmeliyim ki bir sonraki adımda gidecek olan yapı hangisiyse o/onlar hariç diğerlerini işaretlemeliyiz).

Scheduling kısmından Run Schedule’yi 10 Yapalım Sonuçta şuanda google’ın bize verdiği ücretsiz kredinin hızlı bitmesini istemeyiz :) ardından Property kısmında RemoteUrl kısmına aldığımız api’yi yapıştırıp apply diyip kayıt edelim artık veriyi alabileceğiz

Adım 3: Veriyi temizlemek

Aldığımız api ye baktıysanız çok fazla bilgi dönüşü yapıyor oysaki bizim bunların çoğuna ihtiyacımız yok bundan dolayı gelen veriden ihtiyacımız olanları almamız lazım.

Processor’ü çekip arama kısmına JoltTransformJSON yazalım seçelim aldığımız her processor’ün ortasında bi sonraki adıma veri göndermemiz için ok var(fareyi processor’ün üstüne götürdüğünüzde belli oluyor)

InvokeHTTP den JoltTransformJSON ok çekelim ve gelen ekrandan Response u işaretliyelim(Hatırlarsanız bir önceki adımda Response işaretlememiştik)

JoltTransformJSON çift tıklayıp içine girelim Settings te failure işaretliyelim.

Sol altta ise ADVENCED yazan bölüme tıklayalım bu bölüm bizim veri üzerinde işlem yapmamızı sağlıyor

Gelen bölüme aşağıdaki kodu yazalım ve SAVE diyip ana ekrana dönelim

[{
“operation”: “shift”,
“spec”: {
“*”: {
“name”: “name”,
“country”: “country”,
“localtime”: “localtime”,
“temp_c”: “temp_c”
}
}
}]

Adım 4: Değişken atamak

Artık veri istediğimiz ayarda şimdi ise bu veride istediğimiz değerleri seçip ona göre şart koşmamız gerekiyor ilerde

Processor’ü çekip arama kısmına EvaluateJsonPath yazalım seçelim

JoltTransformJSONdan EvaluateJsonPath’e bir ok çekip success seçelim ve apply diyip EvaluateJsonPath’e çift tıklayıp içine girelim

Settings te failure ve un matched işaretliyelim

Properties kısmında sağdaki + işaretine tıklayıp önce değişkenin adı sonra “$.” koyarak json daki değişkenin adı

json da belirlediğimiz değerleri tekrar burda değişkene atamamız lazım

Adım 5: Şartımızı belirtmek

Artık veriyi aldık düzenledik ve verilerin her birini bir değişkene atadık atık şartımızı belirtip belli bir sıcaklığın üstüne çıkarsa veri tabanına yazdırma işlemi kaldı bunun için gelen değerleri kontrol etmemiz lazım bu adımı kodlamadaki if bloğu olarak görebiliriz

Processor’ü çekip arama kısmına RouteOnAttribute yazalım seçelim

EvaluateJsonPath’den RouteOnAttribute’e bir ok çekip matched’i seçelim ve apply diyip RouteOnAttribute’e çift tıklayıp içine girelim ve Settings’te unmatched’ı seçelim

Properties kısmında sağdaki + işaretine tıklayıp yuksek_sicaklik ve ardından ${temp_c:ge(25.0)} yazalım ve apply diyip çıkalım

Not: Ben yazdığımda hava sıcaklığı daha düşük olduğu için 15 yaptım

Adım 6: Slack ile mesajı almak

Artık son adımımıza geldik artık json dosyasından aldığımız veriyi mesaj olarak Slack kanalımıza gönderebiliriz bunun için bir slack kanalınız olması lazım

özetle

https://api.slack.com/messaging/webhooks adresineden Create your Slack app butonuna basıp gelen ekrandan From scratch ismini ve kanalını seçip Create app demeniz yeterili size vereceği linki kopyalayın

Processor’ü çekip arama kısmına PutSlack yazalım seçelim

Son adım olduğu için Settings te failure ve success işaretliyelim(veri artık bi sonraki adıma gitmeyeceği için hepsini seçmemiz lazım)

Properties kısmında Webhook URL kısmına kopyaladığımız linki yapıştıralım

Webhook Text’e ise

Sehir: ${name}
Ulke: ${country}
Tarih: ${localtime}
Derece: ${temp_c}

yazıp apply diyelim

Evet Projenin son görünümü aşağıdaki gibidir

Şimdi Projeyi çalıştırmak için sol ortada bulunan play tuşuna tıklayarak çalıştıralım

Evet şimdi Slack kanalına bakalım

Harika istediğimiz gibi mesajımız gelmiş

Eğer bu yapıda sorununuz varsa size kendi yaptığım yapıyı nasıl yüklemeniz gerektiğini göstereyim.

Hazır bir yapı nasıl yüklenir ?

Yazının daha fazla uzamaması için size bu videoda belirtilen dk da gösterilen adımları uygulamanızı isticem
https://youtu.be/1RnQG7Fu6Ds?t=286
İndireceğiniz nifi dosyası ise
https://github.com/yusufgzb/Nifi-and-Slack-Weather-app adresinden weatherapp1.1.xml adlı dosyayı indirebilirsiniz

Eklemeniz gerekeler:
2.Adımda yaptığımız api ekleme kısmı
6.Adımda yaptığımız Slack api mizi eklememiz
Eğer apiler’i doğru yapıştırdıysanız sıkıntısız çalışacaktır

Evet arkadaşlar bu yazımda sizlere Nifi + Slack kullanarak bir hava durumu uygulaması yapmaya ve anlatmaya çalıştım umarım faydalı olmuştur yazı hakkında geri dönüşlerinizi bekliyorum

Benimle Linkedin üzerinden takip etmeyi unutmayın başarılar

--

--