Microsoft, Office 365 Hizmet İletişimi API'sini Grafiğe Taşıyor
Uzmanlar Konferansı (TEC) 1-2 Eylül 2021'de sanal olarak gerçekleşecek. Microsoft bulut ve şirket içi hizmetlerin çalıştırılmasına ilişkin pratik bilgilerin paylaşılmasına yönelik ücretsiz bir etkinliktir. TEC konuşmacılarının her birinden bu konferansta konuşacaklarına yakın bir konu hakkında yazmalarını istedik. Bu serinin ilk makalesidir. Daha da değerli bilgileri duymak için TEC'te bize katılın!
Yeni Grafik API'sinin Herkese Açık Önizlemesi Mevcut
Haziran ayında belirtildiği gibi Microsoft, Azure AD'nin odağını Azure AD Graph API'sinden Microsoft Graph API'sine taşıyor. Bu, Microsoft Bulut Hizmetleri için oluşturulan eski birinci nesil REST API'lerini Microsoft Graph'ta birleştirmenin bir örneğidir. Diğer bir örnek ise Office 365 Hizmet İletişimi API'sinin Grafiğe (MC257688, 24 Haziran'da güncellendi) geçişidir. Hizmet İletişimi için Grafik tabanlı API'nin beta sürümü artık genel önizlemede mevcuttur (Microsoft 365 Yol Haritası öğesi 67820). Sonunda, Graph tabanlı API önceki sürümün yerini alacak ve kiracıların eski API kullanılarak oluşturulan komut dosyalarını ve diğer araçları yükseltmeleri gerekecek.
4 Ağustos Güncellemesi: MC275573'te. Microsoft, Graph Tabanlı Hizmet İletişimi API'sini Genel Kullanım durumuna taşıdı ve eski API'yi 17 Aralık 2021'den itibaren kullanımdan kaldırma niyetinde olduğunu duyurdu.
Hizmet İletişimi API'si Ne Yapar?
Office 365 Hizmet İletişimi API'si aşağıdaki gibi verilere erişim sağlar:
- Hizmet durumu bilgileri - kiracı Hizmet Durumu Panosu'nda (SHD) gördüğünüz veri türü.
- Hizmet olayları - Exchange Online, SharePoint Online veya Teams gibi bir hizmete ilişkin bir olayın (kesinti) ayrıntıları. Bir olay bittiğinde API aynı zamanda olay sonrası raporunu (PIR) da getirebilir.
- Hizmet güncelleştirme mesajları - kiracılara yeni, güncelleştirilmiş veya kullanımdan kaldırılmış özellikler hakkında tavsiyelerde bulunmak için Microsoft 365 yönetim merkezinde görünen mesaj merkezi gönderileri.
Bu yayında, hizmet olaylarının ayrıntılarını almak için PowerShell'i ve eski Hizmet İletişimi API'sini kullanmanın bir örneği açıklanmaktadır. Komut dosyasının Grafik tabanlı bir versiyonunu oluşturmak için yola çıktım ve işte notlarım.
Grafiğe Yükseltme
Öncelikle Azure AD'de yeni kayıtlı bir uygulama ve uygulama için bir uygulama sırrı oluşturdum.
Grafik uygulamalarının verilere erişmesi için izinlere ihtiyacı var. Bu durumda gerekli izinler şunlardır:
- ServiceMessage.Read.All: Hizmet güncellemeleri hakkındaki bilgilere erişin.
- ServiceHealth.Read.All: Hizmet olaylarıyla ilgili bilgilere erişin.
Uygulamaya izin(ler)i atayıp yönetici onayını verdikten sonra koda geçebiliriz.
Erişim belirteci edinme kodu farklıdır çünkü uç nokta https://manage.office.com yerine tüm Grafik API'leri için kullanılan uç noktaya (https://graph.microsoft. com/.default). Kullanıcılara ve gruplara yönelik olanlar gibi Grafik API'leriyle etkileşime giren başka komut dosyalarınız varsa, erişim belirteci almak için aynı kodu kullanabilirsiniz.
Grafiği Sorgulama
Eski API'nin genel bir mesaj nesnesi vardır. Grafikte işler daha spesifiktir ve üç farklı hizmet bilgisi koleksiyonuna ulaşabilirsiniz: mesajlar, sorunlar ve hizmet durumuna genel bakış. Bu örnekte mevcut hizmet sorunları hakkında bilgi edinmek istiyorum.
Olaylar kısa ömürlü olma eğilimindedir. İsterseniz mevcut tüm olayları getirebilir veya Grafiğin döndürdüğü bilgileri filtreleri kullanarak kısıtlayabilirsiniz. Sırf ilgi olsun diye kiracımda 180 gün geriye gittim ve 270 olayın mevcut olduğunu gördüm. Çoğu olaya hangi özelliklerin neden olduğunu görmek için verileri sıraladım ve aşağıdakilerin ilk 10 olduğunu gördüm:
$Issues | Group FeatureGroup | Sort Count -Descending | Format-Table name, count
Name Count
---- -----
Teams Components 61
Portal 39
Microsoft Intune 31
Administration 25
E-Mail and calendar access 18
SharePoint Features 16
Management and Provisioning 15
Yammer Components 8
OneDrive for Business 7
E-Mail timely delivery 7
Elbette bu verinin anlamını tam olarak anlayabilmek için irdelenmesi gerekiyor. Microsoft, kiracının kullanımına sunulan olay verilerini özelleştirdiğinden, kat edeceğiniz mesafe farklılık gösterebilir ve Teams, son 180 gün içinde kaydedilen tüm olayların %22,6'sından sorumlu olarak görünmeyebilir.
Grafikten Alınan Bilgilerin İşlenmesi
Daha odaklanmış bir görünüme dönersek, aşağıdaki kod, son yedi gündeki hizmet sorunlarını getirmek için bir URI oluşturur. Tarihin sonuna bir Z eklemek (PowerShell sıralanabilir biçiminde) önemlidir çünkü Grafik, sıralanabilir bir tarihi Z ile sonlandırmakta ısrar eder. En azından, basit bir tarih kullanmaya yönelik herhangi bir girişim başarısız olur.
# Get Service incidents - the filter clause sets the number of days to look back
$DaysRange = (Get-Date).AddDays(-7)
$DaysRangeZ = Get-Date($DaysRange) -format s
$Uri = "https://graph.microsoft.com/beta/admin/serviceAnnouncement/issues?`$filter=startDateTime ge $DaysRangeZ" + "Z"
Verileri almak için Invoke-RestMethod cmdlet'ini çağırarak sonuçları bir dizide döndürün:
[array]$Issues = Invoke-RestMethod -Headers $Headers -Uri $Uri -UseBasicParsing -Method "GET" -ContentType "application/json"
Varsayılan olarak Grafik, verileri döndürmek için sayfalandırmayı kullanır. Hizmet Bilgileri API'si durumunda, bir kerede 100 nesne döndürür; dolayısıyla olası tüm verileri getirmek istiyorsanız, Grafiğe bir sonraki veri sayfasının nerede beklediğini bildirmek için bir Odata.Nextlink'in mevcut olup olmadığını kontrol etmelisiniz ( büyük miktarda Teams nesnesi getirmek için Nextlink'i kullanmanın bir örneğini burada bulabilirsiniz).
Her şey getirildikten sonra, yararlı veriler her nesnenin Değerler özelliğinde bulunur; böylece çalışmayı kolaylaştırmak için aşağıdakileri yaparak bilgileri çıkarabilirsiniz:
$Issues = $Issues.Valueİşleri kolaylaştırmak için Grafik sorgularını yürütmek, sayfalandırmayı yönetmek ve temizlenmiş sonuçları döndürmek için bir işlev kullanıyorum. İşlevin bir örneğini GitHub'da bulunan Ekipler ve Gruplar etkinlik raporu komut dosyasında görebilirsiniz.
Sonuçların Yorumlanması
Hizmet sorunlarına yönelik sorgular, farklı durumlardaki bilgi olaylarını döndürür:
- serviceRestored: Olay sona erdi ve hizmet artık normal seviyelerde.
- serviceDegradation: Olay günceldir ve son kullanıcılara sunulan hizmetin kalitesini etkilemektedir.
- postIncidentReviewPublished: Bir olay sonrası raporu yayınlanır ve yöneticilerin indirmesine açıktır. Bu, olaya neden olan sorunun kök neden analizidir.
- investigationAskıya Alındı: Microsoft devam etmek için daha fazla bilgi bekliyor).
- falsePositive: Bildirilen bir olayın hatalı pozitif olduğu ortaya çıktı.
İlgilendiğiniz olayları çıkarmak için döndürülen dizideki nesneleri filtreleyebilir veya Grafiğin yalnızca belirli türdeki nesneleri döndürmesini isteyebilirsiniz. Örneğin, Grafiğin şu anda çözülmemiş sorunlar hakkında bilgi döndürmesini sağlamak için (isResolved False ve durum serviceDegradation), şunu kullanırız:
$Uri = "https://graph.microsoft.com/beta/admin/serviceAnnouncement/issues?`$filter=startDateTime ge $DaysRangeZ" + "Z and IsResolved eq false and status eq 'serviceDegradation'"Grafiğin döndürdüğü dizideki bir olaya ilişkin nesne şuna benzer:
startDateTime : 2021-06-30T00:00:00Z
endDateTime :
lastModifiedDateTime : 2021-07-05T06:01:51.013Z
title : Admins may see Microsoft 365 app usage and productivity score reports data delayed after June 30, 2021
id : MO266326
impactDescription : Admins may see Microsoft 365 app usage and productivity score reports data delayed after June 30, 2021.
classification : advisory
origin : microsoft
status : serviceDegradation
service : Microsoft 365 suite
feature : Company or User Administration
featureGroup : Administration
isResolved : False
highImpact :
details : {}
posts : {@{createdDateTime=2021-07-02T05:54:00.587Z; postType=regular; description=},@{createdDateTime=2021-07-03T06:03:25.05Z; postType=regular; description=},
@{createdDateTime=2021-07-04T05:52:23.413Z; postType=regular; description=},
@{createdDateTime=2021-07-05T05:47:56.107Z; postType=regular; description=}}
Sonuçları Görüntüleme
Grafikten alınan bir sorunla ilgili bilgiler tam olarak Microsoft 365 SHD'de gösterilenlerle aynıdır (Şekil 2). Detayları istediğiniz gibi biçimlendirmek ve raporlamak için her şey mevcut.
Örneğin, Gönderiler özelliği, SHD'deki Tüm güncellemeler altında gösterilen olayla ilgili olarak Microsoft tarafından yayınlanan güncellemeler kümesini içerir. Bu olay için dört güncelleme mevcut. En son ayrıntıları görmek için şu şekilde kod kullanabiliriz:
$LastPostIndex = $Issue.Posts.Count -1
$PostInfo = $Issue.Posts[$LastPostIndex].Description.Content
$PostDate = Get-Date ($Issue.Posts[$LastPostIndex].CreatedDateTime) -format g
Write-Host (“Incident date: {0}: {1}” -f $PostDate, $PostInfo)
Incident date: 05/07/2021 06:47: Title: Admins may see Microsoft 365 app usage and productivity score reports data delayed after June 30, 2021
User Impact: Admins may see Microsoft 365 app usage and productivity score reports data delayed after June 30, 2021.
Current status: We've determined that the reports are still delayed. We're continuing our efforts to replay the delayed reporting data which we anticipate will mitigate impact.
Scope of impact: This issue may affect any admin attempting to view Microsoft 365 app usage and productivity score reports after June 30, 2021.
Start time: Wednesday, June 30, 2021, at 12:00 AM UTC
Root cause: A recent service update introduced a code regression in a service component responsible for tracking user activity throughout multiple Microsoft 365 apps, resulting in impact.
Next update by: Wednesday, July 7, 2021, at 7:00 AM UTC
Açıkçası, olay bilgilerini seçtiğiniz şekilde sunmayı seçebilirsiniz. Bu sadece bir kodlama meselesi.
Dönüşümün Özetlenmesi
Eski Office 365 Hizmet İletişimi API'sinden Grafik tabanlı sürüme dönüşüm zor değildir. Grafik API'leriyle çalışmaya alışkınsanız erişim kodu almayı, bilgi almayı, filtreler uygulamayı ve verileri yorumlamayı alışkanlık haline getireceksiniz. Grafiğin avantajı, aynı yaklaşımın farklı veri türleri için kullanılmasıdır ve burada görülen de tam olarak budur. Mutlu kodlama!


