Apache Nifi ve Slack kullanarak bir hava durumu uygulaması
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