1. Genel Bakış/Giriş
Web, uygulama sunucusu ve veritabanından oluşan çok katmanlı uygulamalar web geliştirmenin temelini oluşturur ve birçok web sitesi için başlangıç noktasıdır. Ancak başarı çoğu zaman ölçeklenebilirlik, entegrasyon ve çeviklik ile ilgili zorlukları da beraberinde getirir. Örneğin, veriler gerçek zamanlı olarak nasıl işlenebilir ve birden fazla temel işletme sistemine nasıl dağıtılabilir? Bu sorunlar, internet ölçeğindeki uygulamaların talepleriyle birleştiğinde, dağıtılmış mesajlaşma sistemine duyulan ihtiyacı da beraberinde getirdi ve dayanıklı, gerçek zamanlı sistemlere ulaşmak için veri ardışık düzenlerini kullanmaya yönelik mimari bir kalıbı ortaya çıkardı. Sonuç olarak, gerçek zamanlı verilerin dağıtılmış bir mesajlaşma sisteminde nasıl yayınlanacağını ve ardından bir veri ardışık düzeninin nasıl oluşturulacağını anlamak hem geliştirici hem de mimar için son derece önemli becerilerdir.
Oluşturacağınız nedir?
Bu codelab'de, Nesnelerin İnterneti (IoT) cihazıyla başlayıp veri almak ve teslim etmek için mesaj kuyruğunu kullanan, verileri bir veri ambarına taşımak için sunucusuz bir işlevden yararlanan ve ardından bilgilerin gösterildiği bir kontrol paneli oluşturan bir hava durumu veri ardışık düzeni derleyeceksiniz. IoT cihazı için hava durumu sensörlü bir Raspberry Pi kullanılacak ve Google Cloud Platform'un çeşitli bileşenleri veri ardışık düzenini oluşturacaktır. Raspberry Pi'yi oluşturmak, faydalı olsa da, bu codelab'in isteğe bağlı bir parçasıdır ve akışlı hava durumu verileri bir komut dosyasıyla değiştirilebilir.
Bu codelab'deki adımları tamamladıktan sonra sıcaklık, nem, çiy noktası ve hava basıncını gösteren bir kontrol panelini besleyen bir akış verisi ardışık düzeniniz olacak.
Neler öğreneceksiniz?
- Google Pub/Sub'ı kullanma
- Google Cloud Functions işlevi dağıtma
- Google BigQuery'den yararlanma
- Google Data Studio'yu kullanarak kontrol paneli oluşturma
- Ayrıca IoT sensörünü geliştirirken Google Cloud SDK'dan nasıl yararlanacağınızı ve Google Cloud Platform'a yapılan uzaktan erişim aramalarının güvenliğini nasıl sağlayacağınızı da öğreneceksiniz.
Gerekenler
- Google Cloud Platform hesabı. Yeni Google Cloud Platform kullanıcıları 300 ABD doları değerinde ücretsiz denemeden yararlanabilir.
Örnek veriler ve bir komut dosyası kullanmak yerine bu codelab'in IoT sensörü bölümünü oluşturmak istiyorsanız aşağıdakilere de ihtiyacınız olacaktır ( tüm bir set olarak veya buradan ayrı parçalar olarak sipariş edilebilir).
- Güç kaynağı, SD bellek kartı ve kılıflı Raspberry Pi Zero W
- USB kart okuyucu
- USB çoğaltıcı (Raspberry Pi'deki tek USB bağlantı noktasına klavye ve fare bağlamak için kullanılır)
- Dişi-kadın devre tahtası kabloları
- GPIO Çekiç Başlıkları
- BME280 sensör
- Lehimli havya
Ayrıca, HDMI girişli bir bilgisayar monitörü veya televizyona, HDMI kablosuna, klavyeye ve bir fareye erişiminiz olduğu varsayılır.
2. Kurulum
Kendi hızınızda ortam kurulumu
Google hesabınız (Gmail veya G Suite) yoksa hesap oluşturmanız gerekir. Google hesabınız olsun ya da olmasın 300 ABD doları değerindeki ücretsiz denemeden yararlanmayı unutmayın!
Google Cloud Platform konsolunda oturum açın ( console.cloud.google.com). Bu laboratuvar için varsayılan projeyi ("İlk Projem") kullanabilir veya yeni bir proje oluşturmayı seçebilirsiniz. Yeni bir proje oluşturmak isterseniz Kaynakları yönetme sayfasını kullanabilirsiniz. Proje kimliğinin tüm Google Cloud projelerinde benzersiz bir ad olması gerekir (aşağıda gösterilen kimlik daha önce alınmış ve işinize yaramayacaktır). Daha sonra gerekli olacağı için proje kimliğinizi not edin (proje kimliğiniz _____ olacaktır).
Bu codelab'i çalıştırmanın maliyeti birkaç dolardan fazla olmayacaktır. Ancak daha fazla kaynak kullanmaya karar verirseniz veya bunları çalışır durumda bırakırsanız daha yüksek ücret ödemeniz gerekebilir. Codelab'in sonundaki Temizleme bölümünü gözden geçirin.
3. BigQuery tablosu oluşturma
BigQuery, sunucusuz, yüksek düzeyde ölçeklenebilir ve düşük maliyetli bir kurumsal veri ambarıdır. Ayrıca, IoT cihazlarından aktarılan verileri depolamak için ideal bir seçenek olacak ve aynı zamanda analiz kontrol panelinin bilgileri sorgulamasına olanak tanıyacaktır.
Tüm IoT hava durumu verilerini içerecek bir tablo oluşturalım. Cloud konsolundan BigQuery'yi seçin. Bu işlem BigQuery'yi yeni bir pencerede açar (yeniden erişmeniz gerekeceğinden orijinal pencereyi kapatmayın).
Proje adınızın yanındaki aşağı ok simgesini tıklayıp "Yeni veri kümesi oluştur"u seçin.
"weatherData" yazın için, verilerin depolanacağı konumu seçin ve "Tamam"ı tıklayın
Videodaki yeni bir tablo oluşturmak için Veri Kümenizin yanında oturum açın
Kaynak Veriler için Boş tablo oluştur'u seçin. Hedef tablo adı için weatherDataTable yazın. Şema altında, toplam 9 alan oluşana kadar Alan Ekle düğmesini tıklayın. Alanları aşağıda gösterildiği gibi doldurun ve her alan için uygun Type'ı (Tür) seçtiğinizden emin olun. Adımları tamamladıktan sonra Tablo Oluştur düğmesini tıklayın.
Şuna benzer bir sonuç görmeniz gerekir:
Artık hava durumu verilerinizi alacağınız bir veri ambarı kurulumunuz var.
4. Pub/Sub konusu oluşturma
Cloud Pub/Sub, akış analizi ve olay odaklı bilgi işlem sistemleri için basit, güvenilir ve ölçeklenebilir bir temel sunar. Bu nedenle, gelen IoT mesajlarını ele almak ve aşağı akış sistemlerinin bunları işlemesini sağlamak için idealdir.
Hâlâ BigQuery penceresindeyseniz Cloud Console'a geri dönün. Cloud Console'u kapattıysanız https://console.cloud.google.com adresine gidin
Cloud Console'dan Pub/Sub'ı ve ardından Topics'i seçin.
"API'yi Etkinleştir" istemini görürseniz API'yi Etkinleştir düğmesini tıklayın.
Konu oluştur düğmesini tıklayın
"Hava durumu verileri" girin ve Oluştur'u tıklayarak
Yeni oluşturulan konuyu göreceksiniz
Artık hem IoT mesajları yayınlamak hem de diğer işlemlerin bu mesajlara erişmesine izin vermek için bir Pub/Sub konunuz var.
Konuda güvenli yayınlama
Google Cloud Console dışındaki kaynaklardan (ör. IoT sensörü) Pub/Sub konusuna mesaj yayınlamayı planlıyorsanız bir hizmet hesabı kullanarak erişimi daha sıkı bir şekilde kontrol etmeniz ve güven sertifikası oluşturarak bağlantının güvenliğini sağlamanız gerekir.
Cloud Console'dan IAM ve Yönetici ve ardından hizmet hesapları
Create Service account (Hizmet hesabı oluştur) düğmesini tıklayın
Rol açılır listesinde Pub/Sub Yayıncı rolünü seçin
Bir hizmet hesabı adı (iotWeatherPublisher) yazın, Furnish a new private key (Yeni bir özel anahtar hazırla) onay kutusunu işaretleyin, Key type (Anahtar türünün JSON) olarak ayarlandığından emin olun ve "Create" (Oluştur) seçeneğini tıklayın.
Güvenlik anahtarı otomatik olarak indirilir. Tek bir anahtar vardır. Bu yüzden anahtarı kaybetmemek önemlidir. Kapat'ı tıklayın.
Bir hizmet hesabı oluşturulduğunu ve hesapla ilişkilendirilmiş bir anahtar kimliği olduğunu göreceksiniz.
Anahtara daha sonra kolayca erişmek için anahtarı Google Cloud Storage'da saklayacağız. Cloud Console'dan Storage'ı ve ardından Tarayıcı'yı seçin.
Paket Oluştur düğmesini tıklayın
Depolama paketi için bir ad seçin (bu ad, tüm Google Cloud genelinde küresel olarak benzersiz bir ad olmalıdır) ve Oluştur düğmesini tıklayın
Otomatik olarak indirilen güvenlik anahtarını bulun ve depolama paketine sürükleyip bırakın veya yükleyin
Anahtar yükleme işlemi tamamlandıktan sonra Cloud Storage tarayıcısında görünecektir
Daha sonra kullanmak üzere depolama paketi adını ve güvenlik anahtarı dosya adını not edin.
5. Bir Cloud İşlevi oluşturun
Bulut bilişimi, kaynağı herhangi bir yerde olan olaylara göre mantığın isteğe bağlı olarak şekillendirilebileceği tamamen sunucusuz bilgi işlem modellerini mümkün kılmıştır. Bu laboratuvarda, hava durumu konusunda yayınlanan her mesaj için bir Cloud Functions işlevi başlatılacak, mesajı okuyacak ve BigQuery'de depolayacak.
Cloud Console'dan Cloud Functions'ı seçin.
Bir API mesajı görürseniz API'yi Etkinleştir düğmesini tıklayın
İşlev oluştur düğmesini tıklayın
Name (Ad) alanına, function-weatherPubSubToBQ yazın. Tetikleyici için Cloud Pub/Sub konusunu ve Konu açılır listesinden hava durumu verilerini seçin. Kaynak kodu için satır içi düzenleyiciyi seçin. index.js sekmesinde, başlamak için oraya aşağıdaki kodu yapıştırın. projectId, datasetId ve tableId için sabit değerleri ortamınıza uyacak şekilde değiştirdiğinizden emin olun.
/**
* Background Cloud Function to be triggered by PubSub.
*
* @param {object} event The Cloud Functions event.
* @param {function} callback The callback function.
*/
exports.subscribe = function (event, callback) {
const BigQuery = require('@google-cloud/bigquery');
const projectId = "myProject"; //Enter your project ID here
const datasetId = "myDataset"; //Enter your BigQuery dataset name here
const tableId = "myTable"; //Enter your BigQuery table name here -- make sure it is setup correctly
const PubSubMessage = event.data;
// Incoming data is in JSON format
const incomingData = PubSubMessage.data ? Buffer.from(PubSubMessage.data, 'base64').toString() : "{'sensorID':'na','timecollected':'1/1/1970 00:00:00','zipcode':'00000','latitude':'0.0','longitude':'0.0','temperature':'-273','humidity':'-1','dewpoint':'-273','pressure':'0'}";
const jsonData = JSON.parse(incomingData);
var rows = [jsonData];
console.log(`Uploading data: ${JSON.stringify(rows)}`);
// Instantiates a client
const bigquery = BigQuery({
projectId: projectId
});
// Inserts data into a table
bigquery
.dataset(datasetId)
.table(tableId)
.insert(rows)
.then((foundErrors) => {
rows.forEach((row) => console.log('Inserted: ', row));
if (foundErrors && foundErrors.insertErrors != undefined) {
foundErrors.forEach((err) => {
console.log('Error: ', err);
})
}
})
.catch((err) => {
console.error('ERROR:', err);
});
// [END bigquery_insert_stream]
callback();
};
package.json sekmesinde, aşağıdaki kodu mevcut yer tutucu kodunun üzerine yapıştırın
{
"name": "function-weatherPubSubToBQ",
"version": "0.0.1",
"private": true,
"license": "Apache-2.0",
"author": "Google Inc.",
"dependencies": {
"@google-cloud/bigquery": "^0.9.6"
}
}
Yürütülecek işlev "HelloWorld" değerine ayarlanmışsa bunu "subscribe" olarak değiştirin. Oluştur düğmesini tıklayın
İşlevinizin dağıtıldığını göstermesi yaklaşık 2 dakika sürer
Tebrikler! Pub/Sub'ı Functions üzerinden BigQuery'ye bağladınız.
6. IoT donanımını kurun (isteğe bağlı)
Raspberry Pi'yı ve sensörü monte etme
7'den fazla raptiye varsa başlığı yalnızca 7 pime gelecek şekilde kısaltın. Başlık pimlerini sensör kartına lehimleyin.
Raspberry Pi'ye çekiç başlık pimlerini dikkatlice takın.
SD kartı biçimlendirin ve buradaki adımları uygulayarak NOOBS (Yeni Kutu Dışı Yazılım) yükleyiciyi yükleyin. SD kartı Raspberry Pi'ye takın ve Raspberry Pi'yi kılıfına yerleştirin.
Devre tahtası kablolarını kullanarak sensörü Raspberry Pi'ye bağlayın.
Ahududu Pi PIN'i | Sensör bağlantısı |
Pin 1 (3,3 V) | VIN |
PIN 3 (CPIO2) | SDI |
PIN 5 (GPIO3) | SCK |
İğne 9 (Karayolu) | GND |
Monitörü (mini HDMI konnektörünü kullanarak), klavyeyi/fareyi (USB çoğaltıcıyla) ve son olarak güç adaptörünü bağlayın.
Raspberry Pi ve sensörü yapılandırma
Raspberry Pi başlatıldıktan sonra, istediğiniz işletim sistemi için Raspbian'ı seçin, istediğiniz dilin doğru olduğundan emin olun ve ardından Yükle'yi (pencerenin sol üst bölümündeki sabit disk simgesi) tıklayın.
Kablosuz simgesini (ekranın sağ üst kısmında) tıklayın ve bir ağ seçin. Ağ güvenliyse şifreyi girin (önceden paylaşılan anahtar).
Ahududu simgesini tıklayın (ekranın sol üst kısmında), Tercihler'i ve ardından Raspberry Pi Yapılandırması'nı seçin. Arayüzler sekmesinde I2C'yi etkinleştirin. Yerelleştirme sekmesinden Yerel Ayarı ve Saat Dilimini ayarlayın. Saat dilimini ayarladıktan sonra, Raspberry Pi'nin yeniden başlatılmasına izin verin.
Yeniden başlatma işlemi tamamlandıktan sonra Terminal simgesini tıklayarak bir terminal penceresi açın.
Sensörün doğru şekilde bağlandığından emin olmak için aşağıdaki komutu yazın.
sudo i2cdetect -y 1
Sonuç şu şekilde görünmelidir: 77 olduğundan emin olun.
Google Cloud SDK'yı yükleme
Google Cloud platformundaki araçlardan yararlanabilmek için Raspberry Pi'ye Google Cloud SDK'nın yüklenmiş olması gerekir. SDK, Google Cloud Platform'u yönetmek ve kullanmak için gereken araçları içerir ve çeşitli programlama dilleri için kullanılabilir.
Açık değilse Raspberry Pi'de bir terminal penceresi açın ve SDK sürümünü Raspberry Pi'deki işletim sistemiyle eşleştirecek bir ortam değişkeni ayarlayın.
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
Şimdi, yükleme araçlarının SDK'yı yüklemeniz istendiğinde nereye bakacağını bilmesi için Google Cloud SDK paketlerinin depolandığı konumu ekleyin.
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
Raspberry Pi'nin güvenliği doğrulaması ve yükleme sırasında içeriğe güvenmesi için Google'ın paket deposundan ortak anahtarı ekleyin.
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Raspberry Pi'daki tüm yazılımların güncel olduğundan emin olun ve temel Google Cloud SDK'yı yükleyin.
sudo apt-get update && sudo apt-get install google-cloud-sdk
"Devam etmek istiyor musunuz?" sorusu sorulduğunda Enter tuşuna basın.
Python paket yöneticisini kullanarak tendo paketini yükleyin. Bu paket, bir komut dosyasının birden fazla kez çalışıp çalışmadığını ve hava durumu komut dosyasına uygulaması için yüklenip yüklenmediğini kontrol etmek amacıyla kullanılır.
pip install tendo
Python paket yöneticisini kullanarak Python için Google Cloud PubSub ve OAuth2 paketlerinin yüklü ve güncel olduğundan emin olun
sudo pip install --upgrade google-cloud-pubsub
sudo pip install --upgrade oauth2client
Google Cloud SDK'yı ilk kullanıma hazırlama
SDK, Google Cloud'a uzaktan, kimliği doğrulanmış erişime olanak tanır. Bu codelab'de, güvenlik anahtarının Raspberry Pi'ye kolayca indirilebilmesi için depolama paketine erişmek amacıyla kullanılacaktır.
Raspberry Pi'daki komut satırından şunu girin:
gcloud init --console-only
"Giriş yapmak istiyor musunuz (E/n)?" sorusu sorulduğunda Enter tuşuna basın.
"Tarayıcınızda aşağıdaki bağlantıya gidin:" mesajını gördüğünüzde ve ardından https://accounts.google.com/o/oauth?... ile başlayan uzun bir URL gelir, fareyle URL'nin üzerine gelin, sağ tıklayın ve "URL'yi kopyala"yı seçin. Ardından web tarayıcısını açın (ekranın sol üst köşesindeki mavi yerküre simgesi), adres çubuğunu sağ tıklayın ve "Yapıştır"ı tıklayın.
Oturum Aç ekranını gördükten sonra Google Cloud hesabınızla ilişkili e-posta adresinizi girin ve Enter tuşuna basın. Ardından şifrenizi girin ve İleri düğmesini tıklayın.
Google Cloud SDK'nın Google Hesabınıza erişmek istediği sorulur. İzin Ver düğmesini tıklayın.
Doğrulama kodu size sunulur. Fareyi kullanarak öğeyi vurgulayın, ardından sağ tıklayıp Kopyala'yı seçin. Terminal penceresine dönün, imlecin "Doğrulama kodunu girin:" seçeneğinin sağ tarafında olduğundan emin olun, fareyi sağ tıklayın ve Yapıştır'ı seçin. Enter düğmesine basın.
"Kullanılacak bulut projesini seçin:" istemini alırsanız bu codelab için kullandığınız proje adına karşılık gelen numarayı girip Enter tuşuna basın.
Compute API'yi etkinleştirmeniz istenirse etkinleştirmek için Enter düğmesine basın. Ardından, Google Compute Engine ayarlarını yapılandırmanız istenir. Enter tuşuna basın. Potansiyel bölgelerin/alt bölgelerin listesi gösterilir. Size yakın olan bir bölgeyi seçin, ilgili numarayı girin ve Enter tuşuna basın.
Birazdan bazı ek bilgilerin görüntülendiğini göreceksiniz. Google Cloud SDK artık yapılandırılmış durumda. Artık ihtiyaç duymayacağınız için web tarayıcısı penceresini kapatabilirsiniz.
Sensör yazılımını ve hava durumu komut dosyasını yükleyin
Raspberry Pi'deki komut satırından, giriş/çıkış pinlerinden bilgi okumak için gerekli paketleri klonlayın.
git clone https://github.com/adafruit/Adafruit_Python_GPIO
İndirilen paketleri yükleyin
cd Adafruit_Python_GPIO
sudo python setup.py install
cd ..
Hava durumu sensörünü etkinleştiren proje kodunu klonlayın
git clone https://github.com/googlecodelabs/iot-data-pipeline
Sensör sürücüsünü, indirilen yazılımın geri kalanıyla aynı dizine kopyalayın.
cd iot-data-pipeline/third_party/Adafruit_BME280
mv Adafruit_BME280.py ../..
cd ../..
Yazarak komut dosyasını düzenleyin...
nano checkWeather.py
Projeyi proje kimliğinizle, konuyu Pub/Sub konunuzun adıyla değiştirin (bu bilgiler, codelab'in Kurulum ve Pub/Sub oluşturma konusu bölümlerinde belirtilmiştir).
SensörID, sensörZipCode, sensörler ve SensörLong değerlerini istediğiniz gibi değiştirin. Belirli bir konum veya adresin Enlem ve Boylam değerlerini burada bulabilirsiniz.
Gerekli değişiklikleri tamamladığınızda, nano düzenleyiciden çıkmaya başlamak için Ctrl-X tuşlarına basın. Onaylamak için Y tuşuna basın.
# constants - change to fit your project and location
SEND_INTERVAL = 10 #seconds
sensor = BME280(t_mode=BME280_OSAMPLE_8, p_mode=BME280_OSAMPLE_8, h_mode=BME280_OSAMPLE_8)
credentials = GoogleCredentials.get_application_default()
project="myProject" #change this to your Google Cloud project id
topic = "myTopic" #change this to your Google Cloud PubSub topic name
sensorID = "s-Googleplex"
sensorZipCode = "94043"
sensorLat = "37.421655"
sensorLong = "-122.085637"
Güvenlik anahtarını yükleme
Güvenlik anahtarını ("Bir konuya güvenli yayınlama" bölümünden) Raspberry Pi'ye kopyalayın.
Güvenlik anahtarını yerel makinenizden Raspberry Pi'nize (/home/pi dizinine) kopyalamak için SFTP veya SCP kullandıysanız sonraki adımı atlayıp yolu dışa aktarma aşamasına geçebilirsiniz.
Güvenlik anahtarını bir depolama paketine yerleştirdiyseniz depolama paketinin adını ve dosyanın adını hatırlamanız gerekir. Güvenlik anahtarını kopyalamak için gsutil komutunu kullanın. Bu komut, Google Storage'a erişebilir (bu komut neden gsutil olarak adlandırılır ve dosya yolu neden gs:// ile başlar?). Aşağıdaki komutu paketinizin adını ve dosya adını içerecek şekilde değiştirdiğinizden emin olun.
gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .
Dosyanın kopyalandığını ve işlemin tamamlandığını belirten bir mesaj görürsünüz.
Raspberry Pi'daki komut satırından güvenlik anahtarına giden bir yol dışa aktarın (dosya adını sahip olduğunuzla eşleşecek şekilde değiştirin)
export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json
Artık Google Cloud'a veri iletmeye hazır bir IoT hava durumu sensörünüz var.
7. Veri ardışık düzenini başlatma
Compute API'nin etkinleştirilmesi gerekebilir
Raspberry Pi'den veri akışı
Raspberry Pi IoT hava durumu sensörü oluşturduysanız hava durumu verilerini okuyacak komut dosyasını başlatın ve Google Cloud Pub/Sub'a aktarın. /home/pi/iot-data-pipeline dizininde değilseniz önce bu dizine gidin
cd /home/pi/iot-data-pipeline
Hava durumu komut dosyasını başlat
python checkWeather.py
Terminal penceresinin dakikada bir hava durumu veri sonuçlarını yansıttığını göreceksiniz. Veri akışı varken bir sonraki bölüme geçebilirsiniz (Verilerin Akışını Kontrol Edin).
Veri akışı simülasyonu
IoT hava durumu sensörünü siz geliştirmediyseniz Google Cloud Storage'da depolanan herkese açık bir veri kümesini mevcut Pub/Sub konusuna aktararak veri akışını simüle edebilirsiniz. Cloud Storage'dan okuma ve Pub/Sub'a yayınlama için Google tarafından sağlanan bir şablonla birlikte Google Dataflow kullanılacak.
Bu işlemin bir parçası olarak Dataflow'un geçici bir depolama konumuna ihtiyacı olacaktır. Bu nedenle, bu amaca yönelik bir depolama paketi oluşturalım.
Cloud Console'dan Storage'ı ve ardından Tarayıcı'yı seçin.
Paket Oluştur düğmesini tıklayın
Depolama paketi için bir ad seçin (bu adın, tüm Google Cloud genelinde küresel olarak benzersiz bir ad olması gerektiğini unutmayın) ve Oluştur düğmesini tıklayın. Kısa süre içinde gerekli olacağı için bu depolama paketinin adını unutmayın.
Cloud Console'dan Dataflow'u seçin.
Şablondan İş Oluştur'u tıklayın (ekranın üst kısmı)
İş ayrıntılarını aşağıda gösterildiği şekilde doldurun ve aşağıdaki hususları göz önünde bulundurun:
- dataflow-gcs-to-pubsub iş adı girin
- Bölgeniz, projenizin barındırıldığı yere göre otomatik olarak seçilmeli ve değiştirilmesi gerekmemelidir.
- Cloud Pub/Sub'a GCS Metni içeren bir Cloud Dataflow şablonu seçin
- Giriş Cloud Storage Dosyaları için gs://codelab-iot-data-pipeline-sampleweatherdata/*.json yazın (bu, herkese açık bir veri kümesidir)
- Çıktı Pub/Sub konusu için tam yol projenizin adına bağlıdır ve "projects/yourProjectName/topics/weatherdata" şeklinde görünür.
- Geçici Konum'u, "tmp" dosya adı önekiyle birlikte yeni oluşturduğunuz Google Cloud Storage paketinin adına ayarlayın. "gs://myStorageBucketName/tmp" şeklinde görünmelidir.
Tüm bilgileri doldurduktan sonra (aşağıya bakın), İşi çalıştır düğmesini tıklayın
Dataflow işi çalışmaya başlar.
Dataflow işinin tamamlanması yaklaşık bir dakika sürer.
8. Veri akışını kontrol etme
Cloud Functions işlevi günlükleri
Cloud Functions işlevinin Pub/Sub tarafından tetiklendiğinden emin olun
gcloud beta functions logs read function-weatherPubSubToBQ
Günlükler, işlevin çalıştığını, verilerin alındığını ve BigQuery'ye eklendiğini göstermelidir
BigQuery verileri
Verilerin BigQuery tablosuna aktığından emin olun. Cloud Console'dan BigQuery'ye (bigquery.cloud.google.com) gidin.
Proje adının altında (pencerenin sol tarafında), Veri Kümesini (weatherData), ardından tabloyu (weatherDataTable) ve ardından Query Table (Tablo Tablosu) düğmesini tıklayın.
SQL deyimine aşağıda gösterildiği gibi SELECT * FROM... yazması için yıldız işareti ekleyin, ardından SORGUYU ÇALIŞTIR düğmesini tıklayın
İstenirse, Sorguyu çalıştır düğmesini tıklayın
Sonuç görürseniz veri akışı düzgün çalışıyor demektir.
Veri akışı olduğuna göre, artık bir analiz kontrol paneli oluşturmaya hazırsınız demektir.
9. Data Studio kontrol paneli oluşturma
Google Data Studio, verilerinizi okuması ve paylaşması kolay, tamamen özelleştirilebilir bilgilendirici gösterge tablolarına ve raporlara dönüştürür.
Web tarayıcınızda https://datastudio.google.com adresine gidin.
"Yeni bir rapor başlatın" bölümünde Boş'u ve ardından Başlayın düğmesini tıklayın
Şartları kabul etmek için onay kutusunu işaretleyin, İleri düğmesini tıklayın, almak istediğiniz e-postaları seçin ve Bitti düğmesini tıklayın. Tekrar, "Yeni bir rapor başlatın" bölümünde Boş'u tıklayın.
Yeni Veri Kaynağı Oluştur düğmesini tıklayın
BigQuery'yi, ardından Yetkilendir düğmesini tıklayın ve Data Studio ile kullanmak istediğiniz Google Hesabı'nı seçin (Codelab için kullandığınız hesapla aynı olmalıdır).
İzin Ver düğmesini tıklayın.
Proje adını, veri kümenizi ve tablonuzu seçin. Ardından Bağlan düğmesini tıklayın.
Tür alanlarını aşağıda gösterildiği gibi değiştirin (zaman toplama ve sensör kimliği dışında her şey bir sayı olmalıdır). Toplanan zaman değerinin Tarih Saat olarak ayarlandığını (yalnızca Tarih değil) unutmayın. Toplama alanlarını aşağıda gösterildiği gibi değiştirin (çiy noktası, sıcaklık, nem ve basınç ortalama değerler olmalı, diğer tüm değerler "Yok" olarak ayarlanmalıdır). Rapor Oluştur düğmesini tıklayın.
Rapora ekle düğmesini tıklayarak onaylayın
Google hesabınızı seçmeniz istenirse bunu yapın ve ardından Data Studio'nun raporlarını Google Drive'da depolamasına izin vermek için İzin ver düğmesini tıklayın.
Kontrol panelinizi oluşturmak için kullanabileceğiniz boş bir tuval sunulur. Simgelerin üst sırasından Zaman Serisi'ni seçin.
Boş sayfanın sol üst köşesine bir dikdörtgen çizin. Toplam boş sayfanın yaklaşık 1⁄4'ünü kaplamalıdır.
Pencerenin sağ tarafındaki Stil sekmesini seçin. Eksik Verileri "Satırdan Sıfıra" Yap yeni bir satır öğesi oluşturabilirsiniz. Sol Y Ekseni bölümünde, (Otomatik) şeklinde değiştirmek için Min. Eksen'den 0'ı silin.
Sayfadaki grafiği tıklayın ve 3 kez kopyalayın/yapıştırın (Ctrl-C/Ctrl-V). Grafikleri, her biri düzenin 1⁄4'üne sahip olacak şekilde hizalayın.
Her bir grafiği tıklayın ve Zaman Serisi Özellikleri ve Veriler bölümünde mevcut metriği (çiy noktası) tıklayın. Dört hava durumu ölçümünün de (çiy noktası, sıcaklık, nem ve basınç) kendi grafiği olana kadar görüntülenecek farklı bir metrik seçin.
Artık temel bir kontrol paneline sahipsiniz!
10. Tebrikler!
Eksiksiz bir veri ardışık düzeni oluşturdunuz. Bu sayede Google Pub/Sub'ı kullanmayı, sunucusuz bir işlev dağıtmayı, BigQuery'den yararlanmayı ve Data Studio kullanarak analiz kontrol paneli oluşturmayı öğrendiniz. Buna ek olarak, Google Cloud SDK'nın Google Cloud Platform'a veri aktarmak için güvenli bir şekilde nasıl kullanılabileceğini gördünüz. Son olarak, kullanılabilirliği korurken yüksek hacimleri işleyebilen önemli bir mimari kalıpla ilgili uygulamalı bir deneyime sahipsiniz.
Temizleme
Hava durumu verileri ve analiz ardışık düzeniyle ilgili denemeleri tamamladıktan sonra çalışan kaynakları kaldırabilirsiniz.
IoT sensörünü siz oluşturduysanız kapatın. Komut dosyasını durdurmak için terminal penceresinde Ctrl-C tuşlarına basın ve ardından Raspberry Pi'yi kapatmak için aşağıdaki komutu yazın
shutdown -h now
Cloud Functions'a gidin, function-weatherPubSubToBQ öğesinin yanındaki onay kutusunu işaretleyip Sil'i tıklayın
Pub/Sub'a gidin, Konu'yu tıklayın, hava durumu verileri konusunun yanındaki onay kutusunu ve ardından Sil'i tıklayın
Storage'a gidin, depolama paketlerinin yanındaki onay kutularını işaretleyin ve ardından Delete'i (Sil) tıklayın.
bigquery.cloud.google.com adresine gidin, projenizin adının yanındaki aşağı oku, hava durumu veri kümesinin sağındaki aşağı oku ve ardından Veri kümesini sil'i tıklayın.
İstendiğinde, verileri silme işlemini tamamlamak için veri kümesi kimliğini (weatherData) yazın.