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 önemli işletme sistemine nasıl dağıtılabilir? Bu sorunlar, internet ölçeğindeki uygulamaların talepleriyle birlikte dağıtılmış bir mesajlaşma sistemine olan ihtiyacı doğurdu ve dayanıklı, gerçek zamanlı sistemler elde etmek için veri ardışık düzenlerini kullanmaya yönelik bir mimari kalıbına yol açtı. Bu nedenle, gerçek zamanlı verilerin dağıtılmış bir mesajlaşma sistemine nasıl yayınlanacağını ve ardından veri ardışık düzeninin nasıl oluşturulacağını anlamak hem geliştiriciler hem de mimarlar için önemli bir beceridir.
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ış halindeki 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 yararlanmayı ve Google Cloud Platform'a uzaktan erişim çağrılarını güvenli hale getirmeyi de öğreneceksiniz.
Gerekenler
- Google Cloud Platform hesabı. Google Cloud Platform'un yeni kullanıcıları 300 ABD doları değerindeki ücretsiz deneme sürümünden yararlanabilir.
Örnek verilerden ve komut dosyasından yararlanmak yerine bu kod laboratuvarının IoT sensör bölümünü oluşturmak istiyorsanız aşağıdakilere de ihtiyacınız olacak (buradan eksiksiz bir kit veya 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-dişi breadboard 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önetin 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. Kod laboratuvarının sonundaki Temizleme bölümünü inceleyin.
3. BigQuery tablosu oluşturma
BigQuery, sunucusuz, yüksek düzeyde ölçeklenebilir ve düşük maliyetli bir kurumsal veri ambarıdır. IoT cihazlarından aktarılan verileri depolamak için ideal bir seçenek olmasının yanı sıra analitik kontrol panelinin bilgileri sorgulamasına da olanak tanır.
Tüm IoT hava durumu verilerini barındıracak 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.
Veri kümesi için "weatherData" girin, verilerin saklanacağı bir konum seçin ve "Tamam"ı tıklayın.
Yeni bir tablo oluşturmak için Veri Kümenizin yanındaki " " işaretini tıklayı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 alacak bir veri ambarı oluşturdunuz.
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ı işlemek ve ardından bunları aşağı akış sistemlerinin işlemesi için izin vermek için mükemmeldir.
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 istemi görürseniz API'yi etkinleştir düğmesini tıklayın.
Create a topic (Konu oluştur) düğmesini tıklayın.
Konu adı olarak "weatherdata"yı girin ve Oluştur'u tıklayın.
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'da IAM ve Yönetici'yi, ardından Hizmet hesapları'nı seçin.
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. Yalnızca bir anahtar olduğundan kaybetmemeniz önemlidir. Kapat'ı tıklayın.
Bir hizmet hesabı oluşturulduğunu ve hesapla ilişkilendirilmiş bir anahtar kimliği olduğunu göreceksiniz.
Anahtarı daha sonra kolayca erişebilmek için Google Cloud Storage'da depolarız. Cloud Console'da Depolama'yı ve ardından Tarayıcı'yı seçin.
Paket Oluştur düğmesini tıklayın
Depolama alanı paketi için bir ad seçin (bu ad, Google Cloud'un tamamında küresel olarak benzersiz 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ünür.
Depolama paketi adını ve güvenlik anahtarı dosya adını daha sonra kullanmak üzere not edin.
5. Bir Cloud İşlevi oluşturun
Bulut bilişim, mantığın herhangi bir yerden gelen etkinliklere yanıt olarak isteğe bağlı olarak başlatılabileceği tamamen sunucusuz bilgi işlem modellerini mümkün kılmıştır. Bu laboratuvarda, hava durumu konusuna 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
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 kod 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" olarak ayarlanmışsa bunu "subscribe" olarak değiştirin. Oluştur düğmesini tıklayın
İşlevinizin dağıtıldığı gösterilmesi yaklaşık 2 dakika sürer.
Tebrikler! Pub/Sub'ı Functions üzerinden BigQuery'ye bağladınız.
6. IoT donanımını kurma (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 (New Out Of Box Software) yükleyicisini yükleyin. SD kartı Raspberry Pi'ye takın ve Raspberry Pi'yi kılıfına yerleştirin.
Sensörü Raspberry Pi'ye bağlamak için aşağıdaki şemaya göre breadboard kablolarını kullanın.
Raspberry Pi pin'i | Sensör bağlantısı |
1. pin (3,3 V) | VIN |
3. pin (CPIO2) | SDI |
PIN 5 (GPIO3) | SCK |
9. pin (Toprak) | GND |
Monitörü (mini HDMI konnektörünü kullanarak), klavyeyi/fareyi (USB hub'ı kullanarak) ve son olarak güç adaptörünü bağlayın.
Raspberry Pi ve sensörü yapılandırma
Raspberry Pi önyüklemeyi tamamladı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 kısmındaki sabit disk simgesi) tıklayın.
Kablosuz ağ simgesini (ekranın sağ üst kısmı) tıklayın ve bir ağ seçin. Ağ güvenliyse şifreyi (önceden paylaşılan anahtar) girin.
Ahududu simgesini (ekranın sol üst kısmı) tıklayın, Tercihler'i ve ardından Raspberry Pi Yapılandırması'nı seçin. Arayüzler sekmesinden I2C'yi etkinleştirin. Yerelleştirme sekmesinde 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 penceresi açmak için Terminal simgesini tıklayı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 değerini gördüğünüzden 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 gerekli araçları içerir ve çeşitli programlama dilleri için kullanılabilir.
Henüz açık değilse Raspberry Pi'de bir terminal penceresi açın ve Raspberry Pi'deki işletim sistemiyle SDK sürümünü eşleştirecek bir ortam değişkeni ayarlayın.
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
Ardından, yükleme araçlarının SDK'yı yüklemesi 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 yükleme sırasında güvenliği doğrulaması ve içeriğe güvenmesi için Google'ın paket deposundaki herkese açık anahtarı ekleyin.
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Raspberry Pi'deki 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ı kontrol etmek için kullanılır ve hava durumu komut dosyasına uygulanması için yüklenir.
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 kimliği doğrulanmış uzaktan erişim sağlar. 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 ister misiniz (E/H)?" sorusunu gördüğünüzde Enter tuşuna basın.
"Tarayıcınızda şu bağlantıya gidin:" ifadesini ve ardından https://accounts.google.com/o/oauth?... ile başlayan uzun bir URL'yi gördüğünüzde fareyle URL'nin üzerine gelin, sağ tıklayın ve "URL'yi kopyala"yı seçin. Ardından web tarayıcısını (ekranın sol üst köşesindeki mavi küre simgesi) açın, adres çubuğunu sağ tıklayın ve "Yapıştır"ı tıklayın.
Oturum açma 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 bildirilir. İzin Ver düğmesini tıklayın.
Doğrulama kodu size sunulur. Fareyi kullanarak vurguladıktan sonra sağ tıklayıp Kopyala'yı seçin. Terminal penceresine dönün, imlecin "Doğrulama kodunu girin:" ifadesinin sağında olduğundan emin olun, fareyle sağ tıklayın ve ardından Yapıştır'ı seçin. Enter tuşuna 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'a basın.
Compute API'yi etkinleştirmeniz istenirse etkinleştirmek için Enter tuşuna basın. Ardından, Google Compute Engine ayarlarını yapılandırmanız istenir. Enter tuşuna basın. Olası bölgelerin/bölgelerin listesi gösterilir. Size yakın bir bölge 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'sı yapılandırıldı. Artık ihtiyacınız olmadığı için web tarayıcısı penceresini kapatabilirsiniz.
Sensör yazılımını ve hava durumu komut dosyasını yükleme
Raspberry Pi'deki komut satırından, giriş/çıkış pinlerinden bilgi okumak için gereken paketleri klonlayın.
git clone https://github.com/adafruit/Adafruit_Python_GPIO
İndirilen paketleri yükleme
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).
sensorID, sensorZipCode, sensorLat ve sensorLong değerlerini istediğiniz değere 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 çıkmak 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 nedenle gsutil olarak adlandırılır ve dosyanın yolu 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 ardından işlemin tamamlandığını belirten bir mesaj görürsünüz.
Raspberry Pi'deki komut satırından güvenlik anahtarının yolunu dışa aktarın (dosya adını, sahip olduğunuz dosyayla 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 okuyup Google Cloud Pub/Sub'a gönderecek komut dosyasını başlatın. /home/pi/iot-data-pipeline dizininde değilseniz önce oraya gidin
cd /home/pi/iot-data-pipeline
Hava durumu komut dosyasını başlat
python checkWeather.py
Terminal penceresinde hava durumu veri sonuçlarının her dakika tekrarlandığını görürsünüz. 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 oluşturmadıysanız Google Cloud Storage'da depolanmış herkese açık bir veri kümesini kullanarak ve mevcut Pub/Sub konusuna besleyerek 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.
İşlem kapsamında Dataflow'un geçici bir depolama konumuna ihtiyacı olacaktır. Bu nedenle, bu amaç için bir depolama paketi oluşturalım.
Cloud Console'da Depolama'yı ve ardından Tarayıcı'yı seçin.
Paket Oluştur düğmesini tıklayın
Depolama alanı paketi için bir ad seçin (bu ad, Google Cloud'un tamamında küresel olarak benzersiz olmalıdır) ve Oluştur düğmesini tıklayın. Bu depolama alanı paketinin adını not edin. Kısa süre içinde bu ada ihtiyacınız olacak.
Cloud Console'dan Dataflow'u seçin.
Şablondan İş Oluştur'u (ekranın üst kısmı) tıklayın.
İş 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 adlı bir iş adı girin
- Bölgeniz, projenizin barındırıldığı yere göre otomatik olarak seçilir ve değiştirilmesi gerekmez.
- 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üklerde, işlevin çalıştığını, verilerin alındığını ve BigQuery'ye eklendiğini görebilirsiniz.
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, Sonraki 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ızı, 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 (timecollected ve sensorID hariç her şey sayı olmalıdır). timecollected değerinin yalnızca Tarih değil, Tarih Saat olarak ayarlandığını 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" yerine "Satır Sonları" olarak değiştirin. 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ıp yapıştırın (Ctrl-C/Ctrl-V). Grafikleri, her birinin düzenin ¼'ü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!
Tam bir veri ardışık düzeni oluşturdunuz. Bu süreçte Google Pub/Sub'u nasıl kullanacağınızı, sunucusuz işlevleri nasıl dağıtacağınızı, BigQuery'den nasıl yararlanacağınızı ve Data Studio'yu kullanarak nasıl analiz kontrol paneli oluşturacağınızı öğrendiniz. Ayrıca, Google Cloud SDK'sının Google Cloud Platform'a veri aktarmak için nasıl güvenli bir şekilde 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üzeni ile denemeleri tamamladığınızda ç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 işlevinin yanındaki onay kutusunu işaretleyin ve ardından Sil'i tıklayın.
Pub/Sub'a gidin, Konu'yu tıklayın, weatherdata konusunun yanındaki onay kutusunu işaretleyin 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, proje adınızın yanındaki aşağı oku, ardından weatherData veri kümesinin sağındaki aşağı oku ve son olarak 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.