Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bazı uygulamalar bir akış işleme yaklaşımı gerektirir (örneğin, Azure Stream Analytics aracılığıyla) ancak sürekli çalışması kesinlikle gerekmez. Bunun nedenleri şunlardır:
- Bir zamanlamaya göre gelen giriş verileri (örneğin, saatin başı)
- Seyrek veya düşük hacimli gelen veriler (dakikada birkaç kayıt)
- Zaman penceresi oluşturma özelliklerinden yararlanan ancak öze göre toplu olarak çalışan iş süreçleri (örneğin, finans veya İk)
- Düşük ölçekte uzun süre çalışan işleri içeren tanıtımlar, prototipler veya testler
Stream Analytics işleri zaman içinde Akış Birimi başına faturalandırıldığından, bu işleri sürekli çalıştırmama avantajı maliyet tasarrufudur.
Bu makalede, Azure Stream Analytics işi için otomatik duraklatma özelliğinin nasıl ayarlanacağı açıklanmaktadır. Bir işi zamanlamaya göre otomatik olarak duraklatan ve sürdüren bir görev yapılandırırsınız. Duraklatma terimi, herhangi bir faturalamayı önlemek için iş durumunun Durduruldu olduğu anlamına gelir.
Bu makalede genel tasarım, gerekli bileşenler ve bazı uygulama ayrıntıları ele alınmaktadır.
Not
Bir işi otomatik olarak duraklatmak için dezavantajlar vardır. Ana dezavantajları, düşük gecikme süresi/gerçek zamanlı özelliklerin kaybı ve bir iş duraklatılırken giriş olayı kapsamına denetimsiz bir şekilde büyüme izni vermenin olası riskleridir. Kuruluşlar, büyük ölçekte çalışan çoğu üretim senaryosu için otomatik duraklatmayı düşünmemelidir.
Tasarlama
Bu makaledeki örnekte, işiniziN M dakika duraklatmadan önce N dakika boyunca çalışmasını istiyorsunuz. İş duraklatıldığında, giriş verileri kullanılmaz ve yukarı akış birikir. İş başladıktan sonra, bu kapsamı yakalar ve yeniden kapatılmadan önce verileri içeri doğru işler.
İş çalışırken, ölçümleri iyi duruma gelene kadar görev işi durdurmamalıdır. İlgi çekici ölçümler giriş kapsamı ve filigrandır. Her ikisinin de en az N dakika boyunca taban çizgisinde olup olmadığını kontrol edersiniz. Bu davranış iki eyleme dönüşür:
- Durdurulan bir iş M dakika sonra yeniden başlatılır.
- Çalışan bir iş, kapsam ve filigran ölçümleri iyi durumda olduğunda N dakika sonra her zaman durdurulur.
Örneğin, N = 5 dakika ve M = 10 dakika olduğunu düşünün. Bu ayarlarla, bir işin 15'te alınan tüm verileri işlemek için en az 5 dakikası vardır. Olası maliyet tasarrufu %66'ya kadardır.
İşi yeniden başlatmak için Son Durdurulduğunda başlat seçeneğini kullanın. Bu seçenek Stream Analytics'e iş durdurulduktan sonra yukarı akışa geri alınan tüm olayları işlemesini bildirir.
Bu durumda iki uyarı vardır. İlk olarak, iş giriş akışının bekletme süresinden daha uzun süre durdurulamaz. İşi günde yalnızca bir kez çalıştırıyorsanız, olaylar için bekletme süresinin bir günden fazla olduğundan emin olmanız gerekir. İkincisi, Son Durdurulduğunda modunun kabul edilmesi için işin en az bir kez başlatılmış olması gerekir (aksi halde daha önce hiç durdurulmamıştır). Bu nedenle, bir işin ilk çalıştırmasının el ile yapılması veya betiği bu durumu kapsayacak şekilde genişletmeniz gerekir.
Dikkat edilmesi gereken son nokta, bu eylemlerin bir kez etkili olmasıdır. Daha sonra bunları hem kullanım kolaylığı hem de dayanıklılık için yan etkisi olmadan istediğiniz zaman tekrarlayabilirsiniz.
Bileşenler
API çağrıları
Bu makalede Stream Analytics ile aşağıdaki açılardan etkileşim kurma gereksinimi öngörülmektedir:
- Geçerli iş durumunu alın (Stream Analytics kaynak yönetimi):
- İş çalışıyorsa:
- İş başladıktan (günlükler) sonrasını alma.
- Geçerli ölçüm değerlerini (ölçümler) alın.
- Varsa, işi durdurun (Stream Analytics kaynak yönetimi).
- İş durdurulursa:
- İş durdurulduktan sonra (günlükler) süreyi alın.
- Varsa, işi başlatın (Stream Analytics kaynak yönetimi).
- İş çalışıyorsa:
Stream Analytics kaynak yönetimi için REST API'yi, .NET SDK'sını veya CLI kitaplıklarından birini (Azure CLI veya PowerShell) kullanabilirsiniz.
Ölçümler ve günlükler için Azure'daki her şey Azure İzleyici'nin altında merkezi hale getirilir ve benzer API yüzeyleri seçeneği sunulur. API'leri sorgularken günlükler ve ölçümler her zaman 1-3 dakika geride kalır. Bu nedenle N değerinin 5 olarak ayarlanması genellikle işin gerçekte 6-8 dakika çalıştığı anlamına gelir.
Dikkat edilmesi gereken bir diğer nokta da ölçümlerin her zaman yayılıyor olmasıdır. İş durdurulduğunda API boş kayıtlar döndürür. İlgili değerlere odaklanmak için API çağrılarınızın çıkışını temizlemeniz gerekir.
Betik dili
Bu makalede PowerShell'de otomatik duraklatma gerçekleştirilir. Bu seçimin ilk nedeni PowerShell'in artık platformlar arası olmasıdır. Herhangi bir işletim sisteminde çalıştırılabilir ve bu da dağıtımları kolaylaştırır. İkinci neden, dizeler yerine nesneleri alıp döndürmesidir. Nesneler, otomasyon görevleri için ayrıştırma ve işlemeyi kolaylaştırır.
PowerShell'de, ihtiyacınız olan her şey için Az PowerShell modülünü (Az.Monitor ve Az.StreamAnalytics'e bindiren) kullanın:
- Geçerli iş durumu için Get-AzStreamAnalyticsJob
- Start-AzStreamAnalyticsJob veya Stop-AzStreamAnalyticsJob
-
ile Get-AzMetric (Stream Analytics ölçümlerinden
InputEventsSourcesBacklogged) -
Ile başlayan olay adları için Get-AzActivityLog
Stop Job
Barındırma hizmeti
PowerShell görevinizi barındırmak için zamanlanmış çalıştırmalar sunan bir hizmete ihtiyacınız vardır. Birçok seçenek vardır, ancak iki sunucusuz seçenek vardır:
- Azure İşlevleri, neredeyse her kod parçasını çalıştırabilen bir işlem altyapısıdır. Her saniye çalıştırabilen bir zamanlayıcı tetikleyicisi sunar.
- Azure Otomasyonu, bulut iş yüklerini ve kaynaklarını çalıştırmaya yönelik yönetilen bir hizmettir. Amacı uygundur, ancak minimum zamanlama aralığı 1 saattir (geçici çözümlerle daha azdır).
Geçici çözümler sizin için sorun değilse, Azure Otomasyonu görevi dağıtmanın daha kolay bir yoludur. Ancak bu makalede, karşılaştırmak için önce yerel bir betik yazacaksınız. İşlevsel bir betiğiniz olduktan sonra hem İşlevler'de hem de otomasyon hesabında dağıtırsınız.
Geliştirici araçları
Hem İşlevlerhem de Stream Analytics için Visual Studio Code aracılığıyla yerel geliştirmeyi kesinlikle öneririz. Yerel bir geliştirme ortamı kullanmak, kaynak denetimini kullanmanıza olanak tanır ve dağıtımları kolayca yinelemenize yardımcı olur. Ancak kısa bir süre için bu makalede Azure portalındaki süreç gösterilmektedir.
PowerShell betiğini yerel olarak yazma
Betiği geliştirmenin en iyi yolu yerel olarak kullanmaktır. PowerShell platformlar arası olduğundan betiği yazabilir ve herhangi bir işletim sisteminde test edebilirsiniz. Windows'da Windows Terminali'ni PowerShell 7 ve Azure PowerShell ile kullanabilirsiniz.
Bu makalede kullanılan son betik Azure İşlevleri ve Azure Otomasyonu için kullanılabilir. Barındırma ortamına (İşlevler veya Otomasyon) bağlı olması aşağıdaki betikten farklıdır. Bu makalede bu özellik daha sonra ele alınmaktadır. İlk olarak, betiğin yalnızca yerel olarak çalışan bir sürümünde adım adım ilerleyin.
Bu betik bilerek basit bir biçimde yazılmıştır, böylece herkes bunu anlayabilir.
En üstte gerekli parametreleri ayarlar ve ilk iş durumunu denetlersiniz:
# Setting variables
$restartThresholdMinute = 10 # This is M
$stopThresholdMinute = 5 # This is N
$maxInputBacklog = 0 # The amount of backlog you tolerate when stopping the job (in event count, 0 is a good starting point)
$maxWatermark = 10 # The amount of watermark you tolerate when stopping the job (in seconds, 10 is a good starting point at low Streaming Units)
$subscriptionId = "<Replace with your Subscription Id - not the name>"
$resourceGroupName = "<Replace with your Resource Group Name>"
$asaJobName = "<Replace with your Stream Analytics job name>"
$resourceId = "/subscriptions/$($subscriptionId )/resourceGroups/$($resourceGroupName )/providers/Microsoft.StreamAnalytics/streamingjobs/$($asaJobName)"
# If not already logged, uncomment and run the two following commands:
# Connect-AzAccount
# Set-AzContext -SubscriptionId $subscriptionId
# Check current Stream Analytics job status
$currentJobState = Get-AzStreamAnalyticsJob -ResourceGroupName $resourceGroupName -Name $asaJobName | Foreach-Object {$_.JobState}
Write-Output "asaRobotPause - Job $($asaJobName) is $($currentJobState)."
İş çalışıyorsa, işin en az N dakika çalışıp çalışmadığını denetlersiniz. Ayrıca kapsamı ve filigranını da denetlersiniz.
# Switch state
if ($currentJobState -eq "Running")
{
# First, look up the job start time with Get-AzActivityLog
## Get-AzActivityLog issues warnings about deprecation coming in future releases. Here you ignore them via -WarningAction Ignore.
## You check in 1,000 records of history, to make sure you're not missing what you're looking for. It might need adjustment for a job that has a lot of logging happening.
## There's a bug in Get-AzActivityLog that triggers an error when Select-Object First is in the same pipeline (on the same line). So you move it down.
$startTimeStamp = Get-AzActivityLog -ResourceId $resourceId -MaxRecord 1000 -WarningAction Ignore | Where-Object {$_.EventName.Value -like "Start Job*"}
$startTimeStamp = $startTimeStamp | Select-Object -First 1 | Foreach-Object {$_.EventTimeStamp}
# Then gather the current metric values
## Get-AzMetric issues warnings about deprecation coming in future releases. Here you ignore them via -WarningAction Ignore.
$currentBacklog = Get-AzMetric -ResourceId $resourceId -TimeGrain 00:01:00 -MetricName "InputEventsSourcesBacklogged" -DetailedOutput -WarningAction Ignore
$currentWatermark = Get-AzMetric -ResourceId $resourceId -TimeGrain 00:01:00 -MetricName "OutputWatermarkDelaySeconds" -DetailedOutput -WarningAction Ignore
# Metrics are always lagging 1-3 minutes behind, so grabbing the last N minutes actually means checking N+3. This might be overly safe and can be fine-tuned down per job.
$Backlog = $currentBacklog.Data |
Where-Object {$_.Maximum -ge 0} | # Remove the empty records (when the job is stopped or starting)
Sort-Object -Property Timestamp -Descending |
Where-Object {$_.Timestamp -ge $startTimeStamp} | # Keep only the records of the latest run
Select-Object -First $stopThresholdMinute | # Take the last N records
Measure-Object -Sum Maximum # Sum over those N records
$BacklogSum = $Backlog.Sum
$Watermark = $currentWatermark.Data |
Where-Object {$_.Maximum -ge 0} |
Sort-Object -Property Timestamp -Descending |
Where-Object {$_.Timestamp -ge $startTimeStamp} |
Select-Object -First $stopThresholdMinute |
Measure-Object -Average Maximum # Here you average
$WatermarkAvg = [int]$Watermark.Average # Rounding the decimal value and casting it to integer
# Because you called Get-AzMetric with a TimeGrain of a minute, counting the number of records gives you the duration in minutes
Write-Output "asaRobotPause - Job $($asaJobName) is running since $($startTimeStamp) with a sum of $($BacklogSum) backlogged events, and an average watermark of $($WatermarkAvg) sec, for $($Watermark.Count) minutes."
# -le for lesser or equal, -ge for greater or equal
if (
($BacklogSum -ge 0) -and ($BacklogSum -le $maxInputBacklog) -and ` # is not null and is under the threshold
($WatermarkAvg -ge 0) -and ($WatermarkAvg -le $maxWatermark) -and ` # is not null and is under the threshold
($Watermark.Count -ge $stopThresholdMinute) # at least N values
)
{
Write-Output "asaRobotPause - Job $($asaJobName) is stopping..."
Stop-AzStreamAnalyticsJob -ResourceGroupName $resourceGroupName -Name $asaJobName
}
else {
Write-Output "asaRobotPause - Job $($asaJobName) is not stopping yet, it needs to have less than $($maxInputBacklog) backlogged events and under $($maxWatermark) sec watermark for at least $($stopThresholdMinute) minutes."
}
}
İş durdurulursa, son Stop Job eylemin ne zaman gerçekleştiğini bulmak için günlüğü denetleyin:
elseif ($currentJobState -eq "Stopped")
{
# First, look up the job start time with Get-AzActivityLog
## Get-AzActivityLog issues warnings about deprecation coming in future releases. Here you ignore them via -WarningAction Ignore.
## You check in 1,000 records of history, to make sure you're not missing what you're looking for. It might need adjustment for a job that has a lot of logging happening.
## There's a bug in Get-AzActivityLog that triggers an error when Select-Object First is in the same pipeline (on the same line). So you move it down.
$stopTimeStamp = Get-AzActivityLog -ResourceId $resourceId -MaxRecord 1000 -WarningAction Ignore | Where-Object {$_.EventName.Value -like "Stop Job*"}
$stopTimeStamp = $stopTimeStamp | Select-Object -First 1 | Foreach-Object {$_.EventTimeStamp}
# Get-Date returns a local time. You project it to the same time zone (universal) as the result of Get-AzActivityLog that you extracted earlier.
$minutesSinceStopped = ((Get-Date).ToUniversalTime()- $stopTimeStamp).TotalMinutes
# -ge for greater or equal
if ($minutesSinceStopped -ge $restartThresholdMinute)
{
Write-Output "asaRobotPause - Job $($jobName) was paused $([int]$minutesSinceStopped) minutes ago, set interval is $($restartThresholdMinute), it is now starting..."
Start-AzStreamAnalyticsJob -ResourceGroupName $resourceGroupName -Name $asaJobName -OutputStartMode LastOutputEventTime
}
else{
Write-Output "asaRobotPause - Job $($jobName) was paused $([int]$minutesSinceStopped) minutes ago, set interval is $($restartThresholdMinute), it will not be restarted yet."
}
}
else {
Write-Output "asaRobotPause - Job $($jobName) is not in a state I can manage: $($currentJobState). Let's wait a bit, but consider helping is that doesn't go away!"
}
Sonunda, işin tamamlanmasını günlüğe yazın:
# Final Stream Analytics job status check
$newJobState = Get-AzStreamAnalyticsJob -ResourceGroupName $resourceGroupName -Name $asaJobName | Foreach-Object {$_.JobState}
Write-Output "asaRobotPause - Job $($asaJobName) was $($currentJobState), is now $($newJobState). Job completed."
1. Seçenek: Görevi Azure İşlevleri'da barındırma
Başvuru için, Azure İşlevleri ekibi kapsamlı bir PowerShell geliştirici kılavuzu tutar.
İlk olarak yeni bir işlev uygulamasına ihtiyacınız vardır. İşlev uygulaması, birden çok işlevi barındırabilen bir çözüme benzer.
Tüm yordamı alabilirsiniz, ancak azure portalına gidip aşağıdakilerle yeni bir işlev uygulaması oluşturmanız gerekir:
- Yayımla: Kod
- Çalışma Zamanı: PowerShell Core
- Sürüm: 7+
İşlev uygulamasını sağladıktan sonra genel yapılandırmasıyla başlayın.
Azure İşlevleri için yönetilen kimlik
İşlevin Stream Analytics işini başlatmak ve durdurmak için izinlere ihtiyacı vardır. Yönetilen kimlik kullanarak bu izinleri atarsınız.
İlk adım, bu yordamı izleyerek işlev için sistem tarafından atanan yönetilen kimliği etkinleştirmektir.
Artık otomatik olarak duraklatmak istediğiniz Stream Analytics işinde bu kimliğe doğru izinleri vekleyebilirsiniz. Bu görev için, Stream Analytics işinin portal alanında (işlev olanın değil), Erişim denetiminde (IAM) Yönetilen Kimlik türündeki bir üye için rol Katkıda Bulunanı'na rol ataması ekleyin. İşlevin adını daha önce seçin.
PowerShell betiğinde, yönetilen kimliğin düzgün ayarlandığından emin olmak için bir denetim ekleyebilirsiniz. (Son betik GitHub.)
# Check if a managed identity has been enabled and granted access to a subscription, resource group, or resource
$AzContext = Get-AzContext -ErrorAction SilentlyContinue
if (-not $AzContext.Subscription.Id)
{
Throw ("Managed identity is not enabled for this app or it has not been granted access to any Azure resources. Please see /azure/app-service/overview-managed-identity for additional details.")
}
İşlevin tetiklendiğinden emin olmak için bazı günlük bilgileri ekleyin:
$currentUTCtime = (Get-Date).ToUniversalTime()
# Write an information log with the current time.
Write-Host "asaRobotPause - PowerShell timer trigger function is starting at time: $currentUTCtime"
Azure İşlevleri parametreleri
İşlevler'de parametrelerinizi betike geçirmenin en iyi yolu, işlev uygulamasının uygulama ayarlarını ortam değişkenleri olarak kullanmaktır.
İlk adım, parametrelerinizi işlev uygulamasının sayfasında Uygulama Ayarları olarak tanımlamak için yordamı izlemektir. Şunlara sahip olmanız gerekir:
| Veri Akışı Adı | Değer |
|---|---|
maxInputBacklog |
İşi durdururken tolere ettiğiniz kapsam miktarı. Olay sayımında iyi 0 bir başlangıç noktasıdır. |
maxWatermark |
İşi durdururken tolere ettiğiniz filigran miktarı. Saniye cinsinden, 10 düşük Akış Birimlerinde iyi bir başlangıç noktasıdır. |
restartThresholdMinute |
M: Durdurulan bir işin yeniden başlatılmasına kadar olan süre (dakika cinsinden). |
stopThresholdMinute |
N: Çalışan bir iş durdurulana kadar bekleme süresinin (dakika cinsinden) süresi. Giriş kapsamlarının bu süre boyunca kalması 0 gerekir. |
subscriptionId |
Stream Analytics işinin abonelik kimliği (adı değil) otomatik olarak duraklatılacaktır. |
resourceGroupName |
Stream Analytics işinin otomatik olarak duraklatılacak kaynak grubu adı. |
asaJobName |
Otomatik olarak duraklatılacak Stream Analytics işinin adı. |
Ardından PowerShell betiğinizi değişkenleri uygun şekilde yüklenecek şekilde güncelleştirin:
$maxInputBacklog = $env:maxInputBacklog
$maxWatermark = $env:maxWatermark
$restartThresholdMinute = $env:restartThresholdMinute
$stopThresholdMinute = $env:stopThresholdMinute
$subscriptionId = $env:subscriptionId
$resourceGroupName = $env:resourceGroupName
$asaJobName = $env:asaJobName
PowerShell modülü gereksinimleri
Stream Analytics komutlarını (gibi) kullanmak için Azure PowerShell'i yerel olarak yüklemeniz gerektiği gibiStart-AzStreamAnalyticsJob, bunu işlev uygulaması konağına eklemeniz gerekir:
- İşlev uygulamasının sayfasındaki İşlevler'in altında Uygulama dosyaları'nı ve ardından requirements.psd1 dosyasını seçin.
- satırının açıklamasını kaldırın
'Az' = '6.*'. - Bu değişikliğin geçerli olmasını sağlamak için uygulamayı yeniden başlatın.
İşlev oluşturma
Tüm bu yapılandırmayı tamamladıktan sonra, betiği çalıştırmak için işlev uygulamasının içinde belirli bir işlevi oluşturabilirsiniz.
Portalda zamanlayıcıda tetiklenen bir işlev geliştirin. işlevinin ile 0 */1 * * * *dakikada bir tetiklendiğinden ve "her 1 dakikada bir ikinci 0'da" ifadesini okuduğundan emin olun.
Gerekirse zamanlamayı güncelleştirerek Tümleştirme'deki zamanlayıcı değerini değiştirebilirsiniz.
Ardından, Kod + Test'te betiğinizi run.ps1 dosyasında kopyalayıp test edebilirsiniz. Ya da GitHub'dan tam betiği kopyalayabilirsiniz. İş mantığı, işleme sırasında herhangi bir şey başarısız olursa düzgün hatalar oluşturmak için try/catch deyimine taşındı.
Kod + Test bölmesinde Test/Çalıştır'ı seçerek her şeyin düzgün çalıştığını kontrol edebilirsiniz. İzleyici bölmesini de de kontrol edebilirsiniz, ancak birkaç yürütme işlemi her zaman geç olur.
İşlev yürütmesinde uyarı ayarlama
Son olarak, işlev başarıyla çalıştırılmazsa uyarı yoluyla bildirim almak istiyorsunuz. Uyarıların küçük bir maliyeti vardır, ancak daha pahalı durumları önleyebilirler.
İşlev uygulamasının sayfasındaki Günlükler'in altında aşağıdaki sorguyu çalıştırın. Son 5 dakika içinde başarısız olan tüm çalıştırmaları döndürür.
requests
| where success == false
| where timestamp > ago(5min)
| summarize failedCount=sum(itemCount) by operation_Name
| order by failedCount desc
Sorgu düzenleyicisinde Yeni uyarı kuralı'nı seçin. Açılan bölmede Ölçü'leri şu şekilde tanımlayın:
- Ölçü: failedCount
- Toplama türü: Toplam
- Toplama ayrıntı düzeyi: 5 dakika
Ardından Uyarı mantığını aşağıdaki gibi ayarlayın:
- İşleç: Büyüktür
- Eşik değeri: 0
- Değerlendirme sıklığı: 5 dakika
Buradan, yeni bir eylem grubunu yeniden kullanın veya oluşturun. Ardından yapılandırmayı tamamlayın.
Uyarıyı düzgün ayarlayıp ayarlamadığınızdan emin olmak için PowerShell betiğinde herhangi bir yere ekleyebilir throw "Testing the alert" ve ardından e-posta almak için 5 dakika bekleyebilirsiniz.
2. Seçenek: Görevi Azure Otomasyonu
İlk olarak, yeni bir Otomasyon hesabına ihtiyacınız vardır. Otomasyon hesabı, birden çok runbook barındırabilen bir çözüme benzer.
Yordam için Bkz. Azure portalını kullanarak Otomasyon hesabı oluşturma hızlı başlangıcı. Sistem tarafından atanan yönetilen kimliği doğrudan Gelişmiş sekmesinde kullanmayı seçebilirsiniz.
Başvuru için Otomasyon ekibinin PowerShell runbook'larını kullanmaya başlamaya yönelik bir öğreticisi vardır.
Azure Otomasyonu parametreleri
Runbook ile, bağımsız değişkenleri geçirmek için PowerShell'in klasik parametre söz dizimini kullanabilirsiniz:
Param(
[string]$subscriptionId,
[string]$resourceGroupName,
[string]$asaJobName,
[int]$restartThresholdMinute,
[int]$stopThresholdMinute,
[int]$maxInputBacklog,
[int]$maxWatermark
)
Azure Otomasyonu için yönetilen kimlik
Otomasyon hesabının sağlama sırasında yönetilen bir kimlik almış olması gerekir. Ancak gerekirse, bu yordamı kullanarak yönetilen kimliği etkinleştirebilirsiniz.
İşlev için yaptığınız gibi, Stream Analytics işi üzerinde otomatik olarak duraklatmak istediğiniz doğru izinleri vermeniz gerekir.
İzinleri vermek için Stream Analytics işinin portal alanında (Otomasyon sayfası değil), Erişim denetiminde (IAM) Yönetilen Kimlik türündeki bir üye için Rol Katkıda Bulunanı'na bir rol ataması ekleyin. Otomasyon hesabının adını daha önce seçin.
PowerShell betiğinde, yönetilen kimliğin düzgün ayarlandığından emin olmak için bir denetim ekleyebilirsiniz. (Son betik GitHub.)
# Ensure that you don't inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process | Out-Null
# Connect by using a managed service identity
try {
$AzureContext = (Connect-AzAccount -Identity).context
}
catch{
Write-Output "There is no system-assigned user identity. Aborting.";
exit
}
Runbook'u oluşturma
Yapılandırmayı tamamladıktan sonra, betiğinizi çalıştırmak için Otomasyon hesabının içinde belirli bir runbook oluşturabilirsiniz. Burada, Azure PowerShell'i gereksinim olarak eklemeniz gerekmez. Zaten yerleşiktir.
Portalda, İşlem Otomasyonu altında Runbook'lar'ı seçin. Ardından Runbook oluştur'u seçin, runbook türü olarak PowerShell'i seçin ve sürüm olarak 7'nin üzerindeki herhangi bir sürümü seçin (şu anda 7.1 (önizleme)).
Artık betiğinizi yapıştırabilir ve test edebilirsiniz. GitHub'dan betiğin tamamını kopyalayabilirsiniz. İş mantığı, işleme sırasında herhangi bir şey başarısız olursa düzgün hatalar oluşturmak için try/catch deyimine taşındı.
Test bölmesinde her şeyin düzgün şekilde kablolu olup olmadığını kontrol edebilirsiniz.
Bundan sonra, runbook'u bir zamanlamaya bağlayabilmeniz için işi yayımlamanız gerekir (Yayımla'yı seçerek). Zamanlamayı oluşturmak ve bağlamak basit bir işlemdir. Şimdi, 1 saatin altındaki zamanlama aralıklarına ulaşmak için geçici çözümler olduğunu unutmamak için iyi bir zaman.
Son olarak, bir uyarı ayarlayabilirsiniz. İlk adım, Otomasyon hesabının tanılama ayarlarını kullanarak günlükleri etkinleştirmektir. İkinci adım, İşlevler için yaptığınız gibi bir sorgu kullanarak hataları yakalamaktır.
Sonuç
Stream Analytics işinizde her şeyin iki yerde beklendiği gibi çalıştığını doğrulayabilirsiniz.
Etkinlik günlüğü aşağıdadır:
Ölçümler şunlardır:
Betiği anladıktan sonra, kapsamını genişletmek için yeniden çalışmak basit bir görevdir. Betiği kolayca güncelleştirerek tek bir iş yerine iş listesini hedefleyebilirsiniz. Etiketleri, kaynak gruplarını ve hatta aboneliklerin tamamını kullanarak daha büyük kapsamlar tanımlayabilir ve işleyebilirsiniz.
Destek alın
Daha fazla yardım için Azure Stream Analytics için Microsoft Soru-Cevap sayfasını deneyin.
Sonraki adımlar
Azure Stream Analytics işlerinin yönetimini otomatikleştirmek için PowerShell kullanmanın temellerini öğrendinsiniz. Daha fazla bilgi için aşağıdaki makalelere bakın: