Azure Monitor ile Remote Desktop Server İzleme Çözümü ,Microsoft firmasının sunmuş olduğu resmi bir izleme çözümü değildir. Makaleye girişi bu bilgi ile yaptık çünkü Microsoft ‘un bir çok Azure Monitor Solution ‘ı bulunsa bile Remote Desktop Server ortamları için resmi bir izleme çözümü bulunmamaktadır.
Fakat, Microsoft tarafından sağlanan resmi Remote Desktop Server İzleme Çözümü olmasa bile Azure Monitor çözümü varsayılan izleme günlükleri ve sayaçlarının haricinde özelleştirilmiş günlük ve sayaçları da izleyebilmektedir.
Azure Monitor ile Remote Desktop Server Çözümü makalesi içinde seneler içinde edinmiş olduğumuz bilgileri, Remote Desktop Server ortamında ki gereksinimleri harmanlayacak ve Remote Desktop Server ortamları için Azure Monitör ile izleme işlemleri nasıl yapılır bunları paylaşacağız.
Azure Monitor ile Remote Desktop Server Çözümü makalesi içinde aşağıda ki bilgiler paylaşılacaktır.
1. Microsoft Azure Monitor Nedir?
Microsoft Azure Monitor Nedir ve Log Analytics Workspace Ayarları konu başlığı ile paylaştığımız makale içinde Azure Monitor nedir, nasıl çalışır ve Azure Monitor Kurulum adımlarını detaylı olarak paylaşmıştık.
Microsoft Azure Monitor Hizmeti, varsayılan değerde Azure Monitor Agent yüklü bulunan kaynaklar üzerinden aşağıdaki bilgi işlem kaynaklarını ve bu kaynakların alt bileşenlerini toplamaktadır.
- PROCESSOR UTILIZATION (WINDOWS & UNIX)
- DISK USAGE (WINDOWS & UNIX)
- MEMORY (WINDOWS & UNIX)
- NETWORK USAGE – WINDOWS
Makale başında belirttiğim gibi Azure Monitor ile Remote Desktop Server İzleme Çözümü Microsoft firmasının sunmuş olduğu resmi bir izleme çözümü olmasa da bizler bu makalede yapacak olduğumuz özel ayarlar ile Remote Desktop Server ‘için özel sayaçları ve günlükleri Azure Monitor ‘e öğretecek ve sonrasında Microsoft Azure Monitor çözümünü Remote Desktop Server ortamları için hazır hale getireceğiz.
Yukarıda paylaşmış olduğum ekran görüntüsü içinde Microsoft firmasının resmi Azure Monitor Solutions ‘larını görmektesiniz. Bu makale sonunda benzer bir izleme arayüzüne, Azure Monitor Dashboard ‘a sahip olacak ve panoları özelleştirebilir duruma geleceğiz.
Remote Desktop Server ortamında ihtiyaç duyduğumuz, izlenecek kaynakları Microsoft Azure Monitor ‘ün Log Analytics Workspace alanına öğretecek ve bu öğretme işlemlerinden sonra Microsoft Azure Monitor ile Remote Desktop Server İzleme Çözümüne sahip olacağız.
Azure Monitor hizmeti, Microsoft tarafından ve üçüncü taraf firma (sepago) ve teknik uzmanlar tarafından yazılmış bir çok çözüme sahiptir ve bu çözümler ile Azure Monitor hizmetini zenginleştirebilir ve bilgi işlem varlıkları için tam bir görünürlük sağlanmıştır.
2. Azure Monitor Remote Desktop Server Solutions
Azure Monitor ile Remote Desktop Server ortamlarını izleyebiliriz.
Remote Desktop Server Farmı ister Sanal Masaüstü (Desktop Virtualization, VDI) ister Oturum Sanallaştırma (Session Virtualization) teknolojisi için kurulmuş olsun bu iki platformun ihtiyaç duyulan izleme verilerini Microsoft Azure Monitor Log Analytics Workspace ‘e öğrettiğimiz zaman Azure Monitor hizmeti ile Remote Desktop Server ortamlarını izleyebilir duruma gelebiliriz.
Azure Monitor hizmeti ile Remote Desktop Server ortamlarını izlediğimiz zaman, işlemci, bellek, disk kullanımı, network kullanım değerlerine ek olarak uygulama seviyesinde de görünürlüğe sahip olabilmekteyiz.
Remote Desktop Server ve Sanal Masa üstü ortamlarının yönetimi zordur. Bu iki sanallaştırma çözümünde oluşan bir dar boğazı bulmak, sistem üzerinde ki gecikmeleri tespit etmek dikey ve yatay uzmanlıklara ihtiyaç duymaktadır.
Ortak kullanılan bir Remote Desktop Server üzerinde bir kullanıcının yapmış olduğu iş yükü aynı bilgi işlem kaynaklarını kullanan bir başka uzak masaüstü kullanıcısının çalışmasına etki etmekte ve bu etkide kötü deneyimleri beraberinde getirmektedir.
Azure Monitor Remote Desktop Server Solutions ile Remote Desktop Server ortamında kullanıcı ve uygulama seviyesinde işlemci, bellek, disk kullanımını öğrenecek, ağ üzerinde oluşan dar boğazları tespit edebileceğiz.
Remote Desktop Server üzerinde ki bilgi işlem kaynaklarından bir alt seviyeye inecek ve Remote Desktop Server üzerinde ki kaynakları hangi kullanıcı yada uygulama tarafından aşırı kullanıldığını tespit edeceğiz.
Hangi kullanıcı hangi Remote Desktop Server üzerinde bulunan paylaşılmış yada ayrılmış bir uygulamayı ne kadar süre kullandı, uygulamaları kullanma sırasında bir gecikme yaşadı m yada Remote Desktop Server üzerinde çalıştırmış olduğu bir uygulamanın iş gücü diğer kullanıcıları etkiledi mi sorularına cevaplar bulacak ve hazırlayacak olduğumuz izleme panoları ile Remote Desktop Server ortamları için görünürlük kazanacağız.
Azure Monitor ile Remote Desktop Server izleme Çözümü makalesinde Remote Desktop Server ortamları için aşağıda bilgileri Azure Log Analytics Workspace alanımıza öğreteceğiz.
- RDS Processes
- RDS Session
- RDS Site and Applications
- RDS Workers
Azure Monitor Nedir ve Log Analytics Workspace Ayarları makalesinde bu özelleştirme işlemlerini detaylı olarak paylaşmıştık ve bu makalede anlatıldığı gibi Remote Desktop Server hizmeti için aşağıda paylaşmış olduğum toplam 79 farklı olay günlüğünü, performans sayacını Remote Desktop Server farm sunucularından talep edilmesini sağlayacağız.
Azure Log Analytics Workspace alanına eklenecek olan Remote Desktop Server sayaçları ve olay günlükleri aşağıda listelenmiştir.
1 | FIELD NAME | LOG TYPE | FIELD TYPE |
2 | Caption_s | RDS_Process_CL | Text |
3 | Category | RDS_PerfData_CL | Text |
4 | ClientIP_s | RDS_Session_CL | Text |
5 | ClientName_s | RDS_Session_CL | Text |
6 | CommandLine_s | RDS_Process_CL | Text |
7 | ConnectionState_s | RDS_Session_CL | Text |
8 | ConnectTime_t | RDS_Session_CL | DateTime |
9 | Counter_s | RDS_PerfData_CL | Text |
10 | CreatingProcessID_d | RDS_Process_CL | Numeric |
11 | DesktopGroup_s | RDS_Application_CL | Text |
12 | DesktopGroup_s | RDS_PerfData_CL | Text |
13 | DesktopGroup_s | RDS_Process_CL | Text |
14 | DesktopGroup_s | RDS_Session_CL | Text |
15 | Domain_s | RDS_Worker_CL | Text |
16 | DomainName_s | RDS_PerfData_CL | Text |
17 | DomainName_s | RDS_Process_CL | Text |
18 | DomainName_s | RDS_Session_CL | Text |
19 | EncryptionLevel_d | RDS_Session_CL | Numeric |
20 | Event_s | RDS_Application_CL | Text |
21 | ExecutablePath_s | RDS_Process_CL | Text |
22 | HandleCount_d | RDS_Process_CL | Numeric |
23 | IdleTime_s | RDS_Session_CL | Text |
24 | Instance_s | RDS_PerfData_CL | Text |
25 | IODataBytesPersec_d | RDS_Process_CL | Numeric |
26 | IODataOperationsPersec_d | RDS_Process_CL | Numeric |
27 | IOOtherBytesPersec_d | RDS_Process_CL | Numeric |
28 | IOOtherOperationsPersec_d | RDS_Process_CL | Numeric |
29 | IOReadBytesPersec_d | RDS_Process_CL | Numeric |
30 | IOReadOperationsPerSec_d | RDS_Process_CL | Numeric |
31 | IOWriteBytesPerSec_d | RDS_Process_CL | Numeric |
32 | IsAzure_b | RDS_Worker_CL | Boolean |
33 | IsBrokered_b | RDS_Session_CL | Boolean |
34 | IsPublishedApp_b | RDS_Session_CL | Boolean |
35 | LocalTimeZoneId_s | RDS_Worker_CL | Text |
36 | Location_s | RDS_Worker_CL | Text |
37 | LoginTime_t | RDS_Session_CL | DateTime |
38 | Message | RDS_Application_CL | Text |
39 | Name_s | RDS_Application_CL | Text |
40 | Name_s | RDS_Process_CL | Text |
41 | Name_s | RDS_Worker_CL | Text |
42 | NameInSession_s | RDS_Process_CL | Text |
43 | PageFaultsPersec_d | RDS_Process_CL | Numeric |
44 | PageFileBytes_d | RDS_Process_CL | Numeric |
45 | PageFileBytesPeak_d | RDS_Process_CL | Numeric |
46 | PercentPrivilegedTime_d | RDS_Process_CL | Numeric |
47 | PercentProcessorTime_d | RDS_Process_CL | Numeric |
48 | PercentUserTime_d | RDS_Process_CL | Numeric |
49 | PoolNonpagedBytes_d | RDS_Process_CL | Numeric |
50 | PoolPagedBytes_d | RDS_Process_CL | Numeric |
51 | Priority_d | RDS_Process_CL | Numeric |
52 | PrivateBytes_d | RDS_Process_CL | Numeric |
53 | ProcessId_d | RDS_Process_CL | Numeric |
54 | ProductID_d | RDS_Session_CL | Numeric |
55 | SessionHash_s | RDS_PerfData_CL | Text |
56 | SessionHash_s | RDS_Process_CL | Text |
57 | SessionHash_s | RDS_Session_CL | Text |
58 | SessionId_d | RDS_Process_CL | Numeric |
59 | SessionId_d | RDS_Session_CL | Numeric |
60 | StationName_s | RDS_Session_CL | Text |
61 | ThreadCount_d | RDS_Process_CL | Numeric |
62 | Uid_g | RDS_Worker_CL | Guid |
63 | UserName_s | RDS_PerfData_CL | Text |
64 | UserName_s | RDS_Process_CL | Text |
65 | UserName_s | RDS_Session_CL | Text |
66 | value_d | RDS_PerfData_CL | Numeric |
67 | Version_s | RDS_Application_CL | Text |
68 | VirtualBytes_d | RDS_Process_CL | Numeric |
69 | VirtualBytesPeak_d | RDS_Process_CL | Numeric |
70 | VmSize_s | RDS_Worker_CL | Text |
71 | Worker_s | RDS_Application_CL | Text |
72 | Worker_s | RDS_PerfData_CL | Text |
73 | Worker_s | RDS_Process_CL | Text |
74 | Worker_s | RDS_Session_CL | Text |
75 | WorkerStartId_g | RDS_Session_CL | Guid |
76 | WorkerStartId_g | RDS_Worker_CL | Guid |
77 | WorkingSet_d | RDS_Process_CL | Numeric |
78 | WorkingSetPeak_d | RDS_Process_CL | Numeric |
79 | WorkingSetPrivate_d | RDS_Process_CL | Numeric |
Unutmadan hatırlatma yapmakta fayda var. Talep edecek olduğumuz her bir olay günlüğü Azure Monitoring maliyetlerine bire-bir etki etmektedir. Talep edecek olduğumuz her bir olay günlüğü ve sayaç Azure Monitor Agent ların daha fazla veri göndermesine ve Azure Log Analytics Workspace alanında daha fazla veri saklamasına neden olacaktır.
Azure Monitor Fiyatları Nasıl Hesaplanır makalesi içinde detaylı bilgiler yer almakta. Azure Log Analytics Workspace alanında Remote Desktop Server olay günlükleri ve performans sayaçları için yapacak olduğumuz özelleştirme işlemleri ve ek bilgi talepleri maliyet artışlarına neden olacaktır.
3. Remote Desktop Server Processes İzleme
Remote Desktop Server Processes, Remote Desktop Session Host üzerinde çalışmakta olan uygulamaların, hangi uygulamanın ne kadar bilgi işlem yükü oluşturduğunu tespit edebileceğimiz bir izleme sayacıdır.
Remote Desktop ortamı içinde çalışan bir Remote Desktop Session Host üzerine , Microsoft Office uygulamalarını ve bu uygulamalara ek olarak üçüncü taraf uygulamaları da yükleyebiliriz. Perakende sektöründe çokça kullanmış olduğumuz Nebim yazılımı yada Logo, Netsis gibi yazılımlar bunlara örnek verebiliriz.
Bu uygulamaların her birisi aynı Remote Desktop Server üzerinde çalıştığı için bir kullanıcının Office uygulamalarında yapacak olduğu yüksek bilgi işlem gücü daha az kaynağa ihtiyaç duyan diğer uygulamaların da çalışmasına etki edecektir. Yada Remote Desktop Server üzerinde Remote Desktop Session Host özelinde iyileştirilme ve optimizasyon süreçleri yapılmamış uygulamaların diğer uyumlu çalışan uygulamalara etki etmesi gibi.
Bu tür performans problemleri Compute olarak adlandırmış olduğumuz katmanda yapılacak olan araştırmalar ile bulunmaz. Bu problemler sadece ve sadece uygulama seviyesinde yapılacak olan araştırmalar ile tespit edilebilir.
Azure Log Analytics Workspace alanına eklemiş olduğumuz RDS Processes filtrelemeleri ile hangi uygulamanın ne kadar bellek, işlemci, disk I/O kullandığını görebilmekteyiz.
Yukarıda paylaşmış olduğum Azure Monitor RDS Processes ekran görüntüsünde RDS Farmı içinde bulunan Remote Desktop Session Host ‘lar üzerinde yüklü bulunan uygulamalar (NebimV3Pos.exe , NebimV3RDP.exe, iexplore, SQL Server Agent) görülmekte.
Yukarıda paylaşmış olduğum görünürlük haricinde aşağıda paylaşacak olduğum Azure Monitor sorguları ile her bir uygulama ve Remote Desktop Session Host üzerinde alt kırılımları inceleyebilecek ve kendi panolarınızı oluşturabileceksiniz.
Azure Log Analytics Workspace alanında eklemiş olduğumuz olay günlüğü ve sayaçlar ile aşağıda ki sorguları çalıştırabilir ve uygulama seviyesinde yavaşlık, performans problemlerini tespit edebiliriz.
Processes by Worker Count
Process CPU Consumption (Avg) Overall by Process Name %CPU
Process CPU Consumption (Max) Overall by Process Name %CPU
Process Memory Consumption Phy (Avg) Overall by Process Name BYTE
Process Memory Consumption Phy (Max) Overall by Process Name
Process IO Activity (Avg) Overall by Process Name BYTE/s
Process IO Activity (MAX) Overall by Process Name BYTE/s
4. Remote Desktop Server Sessions İzleme
Remote Desktop Sessions yani Remomte Desktop Session Host üzerinde çalışmakta olan uzak masaüstü kullanıcılarının ne kadar bilgi işlem yükü oluşturduğunu tespit edeceğimiz izleme yöntemidir.
Aynı Remote Desktop Server ortamında fakat farklı departmanlarda çalışan uzak masaüstü kullanıcıları aynı Remote Desktop Sessions Host üzerinde ortak bir şekilde çalışabilir. Muhasebe departmanında çalışan kullanıcılar ön muhasebe yazılımını kullanırken, iş süreçlerini takip eden, mağazada satış yapan personeller de Remote Desktop Sessions Host üzerinde Nebim gibi perakende yazılımlarını kullanabilir. Remote Desktop Sessions Host üzerinde yeterli kaynaklar ayarlandı isi üst düzey yöneticiler Microsoft Office uygulamaları ile Power Point sunumlarını da yapabilir ve Excel’den güçlü macro içeriğe sahip dosyaları da açabilirler.
Bu kullanıcıların her birisi aynı Remote Desktop Session Host üzerinde barındığı için hangi kullanıcının yada hangi departmanın sne kadar kaynak tükettiğini bulmak zordur.
Bu tür performans problemleri Compute olarak adlandırmış olduğumuz katmanda yapılacak olan araştırmalar ile bulunamaz. Bu problemler sadece ve sadece uygulama seviyesinde yapılacak olan araştırmalar ile tespit edilebilmektedir.
Yukarıda paylaşmış olduğum görünürlük haricinde aşağıda paylaşacak olduğum sorgular ile her bir kullanıcının ve Remote Desktop Session host server üzerinde kullanmış olduğu kaynağı, kullanmış olduğu uygulama kaynağını görebilmekteyiz.
Unique Sessions State
Output Bandwidth Average Bandwidth per Worker bit/s
Input Bandwidth Average Bandwidth per Worker bit/s
TCP RTT Average RTT per Worker MS
Output TCP Line Speed Average Output Line Speed per Worker bit/s
Maximum Values Maximum Output Bandwith
Maximum Values Maximum Input Bandwith
Maximum Values Maximum RTT
5. Remote Desktop Server Site and Applications İzleme
Azure Monitor ile Remote Desktop Server üzerinde Site and Applications izleme yönetmi yapılabilmektedir. Remote Desktop Server Farmı içinde bulunan Remote Desktop Session Host üzerinde kullanıcı ve uygulama seviyesinde izleme yapabilecek olduğumuz bir izleme yöntemidir.
Ortak kullanılan Remote Desktop Session Host üzerinde birden fazla ve birden farklı türde çalışan uygulamalar çalışabildiği gibi aynı Remote Desktop Session Host üzerinde birden fazla ve farklı departmanda çalışan uzak masaüstü kullanıcılarına da hizmet sunabiliriz.
Bu tasarım küçük ölçekli firmalarda çok fazla probleme sebep olmasa da büyük ölçekli kullanımlarda ciddi problemlere sebep olmakta ve ne yazık ki bu çalışma mantığı hemen-hemen bütün Remote Desktop Server ortamlarında görebilmekteyiz. Bu doğru yapılmayan bir tasarımdır ve optimizasyon işlemleri yapılsa da Remote Desktop Server ortamlarının verimli çalışmadığını görebilmekteyiz.
Windows Server 2012 ile birlikte gelen RDS Collection özelliği ile bu problem bir nebze düzeldi ve bu yeni yetenek ile Remote Desktop Server Farm mimarisi farklı veri merkezlerinde çalışmak üzere desteklendi. Farklı veri merkezlerinde çalışan Remote Desktop Session Host sunucuları çok şubeli yapılarda merkezi yönetimi ve felaket anında sürekliliği sağladı.
Fakat, RDS Farm mimarisinde ki RDS Collection yapılandırması da doğru bir şekilde yapılmadığı zaman X veri merkezinde çalışan kullanıcıyı Y eri merkezi içinde barınan Remote Desktop Session Host üzerine yönlendirildiğini gördük. Bu yanlış RDS Collection Mimarisi ve Remote Desktop Farm tasarımı da performans ile birlikte uygulamaların cevap verememesine ve kullanıcı deneyimlerinde başarısız çalışmalara sebep olduğu.
Azure monitor üzerinde tanımlamış olduğumuz yeni günlük ve sayaç ayarları sonrasında bu problemi Remote Desktop Server Site and Applications İzleme çözümü ile görebilmekteyiz.
Bu görünürlük sonrasında Remote Desktop Session Host üzerinde çalışan uygulamaları, kullanıcı ve departmanları analiz edebilir ve doğru RDS Collection Mimarisi ile Remote Desktop Server ortamlarının sağlıklı çalışmasını sağlayabiliriz.
Application by User Processor usage %
Application by User Memory available BYTE
Application Overall Consumption Processor Consumption Shared Tickets
Application Overall Consumption Memory Consumption Memory Tickets
User Overall Consumption Processor Consumption Shared Tickets
USER OVERALL CONSUMPTION User Consumption Memory Ticks
Application Crashed
Unique User
6. Remote Desktop Server Workers İzleme
Azure Monitor Remote Desktop Workers izleme çözümü uygulama ve uzak masaüstü kullanıcı seviyesinden bir kademe yukarıya çıkıyoruz ve Remote Desktop Farm seviyesinde Compute izleme değerlerini öğreniyoruz.
Azure Monitor Remote Desktop Workers izleme çözümü Server Performans izleme çözümüne çok benzemekte ve bir çok sorgu bir-biri ile çelişmektedi.r Fakat Azure Monitor Remote Desktop Workers izleme çözümünde ki sorgular daha çok Remote Desktop Farmı ve Remore Desktop Session Host sunucuları için oluşturulmuş Azure Monitör sorgulardır.
Azure Monitor RDS Workers
Azure Monitor Remote Desktop Workers izleme çözümü ile Remote Desktop Farm içinde bulunan hangi Remote Desktop Session Host üzerinde Bellek yetersiz, işlemci yükü fazla, Disk I/O gecikmeleri bulunmakta, bunları görebilmekte ve RDS özelinde tespit edebilmekteyiz.
CPU Consumption Overall CPU Consumption %
Memory Consumption Memory Free Availaible bytes
Network Network Throughput BYTE/S
Processor Queue Length
Disk Queue Length
Paging File Usage
Desktop Groups Worker Count