Azure Azure Update Management

Azure Update Management Raporlaması

Avatar
Written by Emre Martin

Bir önceki yazımızda Azure Update Managenet çözümünün ayrıntılarından bahsetmiştik. Bu yazımızda ise Update Management çözümü ile yönettiğiniz güncelleştirmelerin raporlamasından bahsetmek istiyorum.

Update management çözümünde bulunan Machines sekmesinden hangi makinaların compliant yada noncompliant olduğunu görebilirsiniz. Update management tüm Security ve Critical güncellemelere sahip makinaları diğer güncelleme yüklemelerine bakmaksızın (Definition Updates, Feature packs) compliant yani uyumlu olarak kabul eder. Non-compliant olarak işaretlenen makinalar ise Security yada Critical güncelleme yüklemesine ihtiyacı olan makinalardır.

Aynı şekilde Missing Updates sekmesini kullanarak eksik güncellemelerin isim, sınıflandırma, KB gibi ayrıntılarını görüntüleyebilirsiniz.

Görsel original adres: https://docs.microsoft.com/en-us/azure/automation/update-management/view-update-assessments

Herşey çok güzel gözüküyor olsada gerçek dünyada işler bu kadarda basit ilerlemiyor 😊Hiç bir büyük yapıda update management üzerinde bir dağıtım grubu oluşturalımda bu hafta sonu tüm sistelerimiz güncellensin gibi bir durum söz konusu değil. Her sistemin/makinanın farklı bir önem seviyesi var, bu önem seviyesine göre gruplanan makinalar farklı zamanlarda önce test sonra production ortamı olacak şekilde güncelleniyor. Durum böyle olunca yüzlerce makinanın, onlarca dağıtım grubunun olduğu ortamlarda, Hangi makinalar ? Ne zaman güncellenecek ? Güncelleştirmeler başarılı şekilde yüklendi mi ? gibi sorulara cevap vermek gerekiyor.

Örnek olarak her ayın ikinci Cumartesi Azure Update Manager ile güncellecenek bir dağıtım grubumum olsun adıda Updates_Group_1 olsun.

Ihtiyacımız olan iki farklı rapor var:

  1. Bir sonraki güncellme dağıtımda hangi makinalar güncellenecek ?
  2. Güncelleştirme yüklemeleri başarılı oldu mu ?

Ilk Her iki raporduda aşağıdaki log analytics sorguları ile oluşturabilirsiniz.

Bir sonraki güncellme dağıtımda hangi makinalar güncellenecek ?

Update
| where TimeGenerated>ago(72h) and OSType!=”Linux” and  (Optional==false or Classification has “Critical” or Classification has “Security” or Classification has “Definition” ) and SourceComputerId in ((Heartbeat
| where Computer in (ComputerGroup_Updates_Group_1)
| summarize arg_max(TimeGenerated, Solutions) by SourceComputerId
| where Solutions has “updates” | distinct SourceComputerId))
| project Computer, PublishedDate, KBID, Title, Classification, UpdateState, TimeGenerated
| where Classification == “Security Updates” or Classification == “Crtitical Updates” or Classification ==”Definition Updates”
| where UpdateState contains “Needed”
| project-rename UpdatePublishedDate=PublishedDate
| summarize hint.strategy=partitioned arg_max(TimeGenerated,*) by Computer, KBID

Updates_Group_1 Update management üzerindeki dağıtım grubumum ismi.

Update_Group_1 benim log analytics üzerinde oluşturmuş olduğum bir computer group ve içerisinde her aynı X. Cumartesi Azure Update Managent ile güncellenecek makinalar var. Computer group’ları kullanmak makina sayısının fazla olduğu ortamlarda işini kolaylaştırıcaktır.

Güncelleştirme yüklemeleri başarılı oldu mu ?

UpdateRunProgress
| where TimeGenerated>ago(48h)
| where UpdateRunName contains ” Updates_Group_1″
| where InstallationStatus contains “Succeeded” or InstallationStatus contains “Install Failed”
| project TimeGenerated, UpdateRunName, Computer, InstallationStatus, KBID, Title
| project-rename DeploymentGroup=UpdateRunName
| order by DeploymentGroup asc

Updates_Group_1 Update management üzerindeki dağıtım grubumum ismi.

Raporlar elimizde hazır, ihtitacımız olan bir diğer şey bu raporların otomatik olarak bize gönderilmesi. İlk raporun update’ler yüklenmeden önce gönderilmesi gerekmekte ki IT adminleri makinaların yeniden başlatılması vb. ihtimaline karşı gerekli hazırlıkları yapabilsin. İkinci rapor güncellemeler yüklendikten sonra gönderilmesi lazım ki yine IT adminleri problem olan makinalarda sorun çözmek adına gerekli aksiyonları alabilsinler.

Raporların otomatik olarak gönderilmesi için logic app üzerinde aşağıdaki şekilde bir otomasyon oluşturmamız gerekmekte.

Ben login app içerisindeki zamanlayıcıları kullanmak yerine Azure automation altındaki runbook’ları kullanarak bu otomasyonu tektikleyeceğim. Runbook’lar zamanlayıcı konusunda

Logic App üzerinde zamanlayıcı tetikleyicisi olarak schedule kullanabilirdim ancak Recurrence/Sliding Window üzerinde her ayın ikinci Cumartesi vb. şeklinde tekrar eden zamanlayıcılar oluşturmak daha karmaşık. Bunun yerine Runbook kullanarak powershell ile logic app üzerine bir http isteği gönderiyorum ve runbook üzerinde tekrar eden görevleri yapılandırmak daha basit.

Runbook ile çalıştırmanız gereken powerhsell:

$response = Invoke-Webrequest -URL “logic-app-URL’i buraya”

Runbook’un her ay tekrarlanması için zamanlama:

*Runbook’u zamanlanmış güncelleştirme yüklemelerinden önce çalışması gerekteğini unutmayın. (1-2 gün yada 1 hafta önce, size kalmış)

Logic app detayları:

Güncelleştirmeler öncesinde gelecek rapor (örnek):

Ayni logicapp yapılandırmasını kullanarak (Güncelleştirme yüklemeleri başarılı oldu mu ? altındaki log analytics sorgusu ile) güncelleştirme yükleme raporlarıda oluşturabilirsiniz. Güncelleştirmeler sonrasında gelecek rapor (örnek)::

Görüşmek üzere.

 

Yazar Hakkında

Avatar

Emre Martin

Cloud Solutions Architect