Kullanılmayan Programların Client Makinelerden Otomatik olarak Kaldırılması Bölüm-1
Hemen hemen bütün firmalarda, son kullanıcı makinelerinde kullanılan lisanslı uygulamaların maliyetleri, hem IT departmanı hem de yönetim için çoğu zaman fazla harcama olarak görülebilmekte ve bu maliyetleri düşürmek adına kullanılan uygulamaların envanterinin iyi yönetilmesi önemli hale gelmektedir.
Client makinelerde yüklü programların envanterini sayısal anlamda bir şekilde çıkartıyoruz ancak acaba bu makinelerde bu uygulamaların hangilerinin gerçekten kullanıldığının raporunu alabiliyor muyuz?
Birçok firmada gözlemlediğim kadarıyla, client yönetim yazılımı kullanılmasına rağmen özellikle software metering özelliği aktif olarak kullanılmıyor malesef. SCCM özelinde yazılım ölçeklendirme özelliğinin konfigürasyonunu yaparak birkaç program için metering rule yazıp aktif hale getirmekten öteye çok fazla kullanıldığını açıkçası ben çok göremedim.
İşte bu özellikle ilgili farkındalığı artırmak adına bu makale serisinde, belirli bir süredir kullanılmayan uygulamaların yüklü olduğu makinelerin tespit edilip, bu uygulamaların ilgili makinelerden uninstall edilerek envanterden düşürülmesi ve bu süreci de otomatik olarak nasıl gerçekleştirebileceğimizi anlatıyor olacağım. Bu süreçte SCCM ve Orchestrator ürünlerini kullanacağız.
Öncelikle, client makinelerde yüklü istediğimiz programların usage bilgilerine ihtiyacımız olduğundan SCCM Software Metering özelliğini nasıl kullanacağımıza bir bakalım.
SCCM Console -> Asset and Compliance -> Software Metering kısmına geliyoruz. Burada client makinelerden alınan envanterler doğrultusunda bazı programlara ait rule’ların olduğunu görebiliriz. Nedeni Software Metering özelliklerle ilgilidir. Şöyleki;
Default olarak, herhangi bir uygulama toplam client makine sayısının %10 ve daha fazlasında kurulu ise metering rule otomatik oluşur. Max. 100 adet rule oluşturulmasının yanısıra 90 günlük veriler database’de tutulmaktadır.
Not: Bu rule’lar otomatik oluştuktan sonra disable olarak gelir.
Otomatik rule’lar ile birlikte custom rule tanımı da yapılabilir. Biz de lisanslı bir yazılım olan Microsoft Visio programı için bir metering rule tanımı yapalım.
Software Metering bileşenine sağ click yaparak Create Software Metering Rule seçeneğini seçiyor ve devam ediyoruz.
Gelen ekranda Name kısmına ilgili programın adını anlayacağınız şekilde yazabilirsiniz. Burada önemli kısım file name kısmıdır. İlgili programın arka planda çalıştığı exe ismini doğru olarak giriyoruz. Version bilgisini “*” olarak bırakabilir, Language kısmını da default olarak geçebiliriz. İşlem sonrasında Next butonu ile ilerliyoruz.
Summary kısmında yapılan ayarları kontrol ederek Next butonu ile devam ediyoruz ve rule oluşturma işlemini tamamlıyoruz.
Gördüğümüz gibi rule oluşturmak oldukça kolay aslında ve Microsoft Visio programına ait client makinelerden usage bilgisini alabilmek için kuralımızı hızlıca oluşturduk ancak aktif hale getirmemiz gerekiyor. Bunun için de ilgili Rule’a sağ tıklayarak “Enable” seçeneğini seçiyor ve aktif hale getiriyoruz.
Software Metering için Client Settings ayarlarından Software Metering ve Software Inventory policy’leri de düzenlemek gerekiyor.
Özellikle makinelerde yüklü olup da kullanılmayan uygulamaların raporu için Software Inventory policy oldukça önemli. Detaylı olarak şöyle açıklayalım:
Software Metering’in Hardware Inventory ile bir bağlantısının olmadığını söyleyelim öncelikle.Yani client makinedeki envanter zaten hardware inventory policy ile alınıyor sadece metering rule’u aktif hale getirsek arka planda karşılaştırıp bize sonuc verir mi diye sorabilirsiniz. Arka planda böyle çalışmıyor malesef. Metering ile sadece client makinedeki çalışan process’lere bakılır. Yüklü olup olmadığı bilgisini alabilmek için Software Inventory policy’i de editlemek gerekmektedir.
Administration ->Client Settings -> Default Client Settings -> Software Inventory policy kısmına gelerek burada ”Inventory these file types” seçeneğine geliyor ve Set Types diyoruz.
Gelen ekranda ilgili exe’leri tanımlamamız gerekiyor. Normalde “*.exe” ve “All Client hard disks” genelde yapılan bir tanım olmakla birlikte best practise de tavsiye edilmez. Bu şekilde yapılacak bir tanım sonrasında client agent, bütün hard disklerdeki bütün exe’leri taramaya çalışır bu da client makine sayısı fazla olan kurumlarda hem performans hem de verinin toplanması çok uzun süreceğinden metering bilgilerinde sorunlara sebep olabilmektedir.
Dolayısı ile de ilgili exe’leri ve disk part lokasyonlarını belirleyip tanımlamaları ona göre yapmak daha faydalı olacaktır. Biz de visio.exe’nin bu şekilde tanımlamasını yaparak devam ediyoruz.
Bütün bu ayarlardan sonra aşağıdaki raporun içeriğini kullanacağız:
“Computers that have a metered program installed but have not run the program since a specified date “
Rapor, ilgili programın yüklü olup belirli bir zaman diliminde (aylık) kullanılmadığı makine bilgilerini vermektedir.
Raporu çalıştırıp “Microsoft Visio” ve Last Usage olarak da “Ağustos” ayını seçip View Report diyerek ilerleyelim.
Sonuclara baktığımızda Ağustos ayına ait Visio yüklü olup kullanılmadığı makinelerin listesini görebiliriz.
Aşağıdaki sorguyu kullanarak da son kullanım süresini istediğimiz şekilde belirleyebilir ve not usage bilgisini bu sorgu ile de database’den çekebiliriz.
declare @RuleID varchar(50)
SET @RuleID =’Security Key yazılacak.’
declare @TimeKey nvarchar (50)
declare @LastUsage nvarchar (50)
set @TimeKey = (select 100*DATEPART(YEAR,IntervalStart)+DATEPART(MONTH,IntervalStart) from fn_rbac_SummarizationInterval(‘disabled’) where Datepart(month,IntervalStart)=Datepart(month,GETDATE()-90))
set @LastUsage = (select IntervalStart from fn_rbac_SummarizationInterval(‘disabled’) where Datepart(month,IntervalStart)=Datepart(month,GETDATE()-90))
select sys.Netbios_Name0
from fn_rbac_R_System(‘disabled’) sys
left join fn_rbac_RA_System_SMSInstalledSites(‘disabled’) inst on sys.ResourceID=inst.ResourceID
where sys.ResourceID in
(
select distinct ResourceID
from fn_rbac_MeterRuleInstallBase(‘disabled’) ib
inner join fn_rbac_MeteredProductRule(‘disabled’) r on ib.RuleID = r.RuleID
where SecurityKey=@RuleID
)
and sys.ResourceID not in
(
select mus.ResourceID
from fn_rbac_MonthlyUsageSummary(‘disabled’) mus
join fn_rbac_MeteredFiles(‘disabled’) mf on mus.FileID=mf.MeteredFileID
where mf.SecurityKey=@RuleID
and mus.TimeKey>=@TimeKey
and mus.LastUsage>=@LastUsage
)
and sys.ResourceID in
(
select colm.ResourceID
from fn_rbac_ClientCollectionMembers(‘disabled’) colm
join fn_rbac_Collection(‘disabled’) col on colm.CollectionID = col.CollectionID
)
and sys.Client_Version0 >= ‘2.5’
order by sys.Netbios_Name0
Bu sorguda değiştirilmesi gereken bileşenler:
RuleID (Security Key) : Tüm metering rule’ları aşağıdaki sorgu ile çekebilirsiniz.
select * from fn_rbac_MeteredProductRule(‘disabled’)
Bizim oluşturduğumuz kural özelinde ise RuleID (Security Key) alabileceğimiz sorgu
select * from fn_rbac_MeteredProductRule(‘disabled’)
where ProductName like ‘%Visio%
LastUsage: Bu sorguda LastUsage son 3 ay olarak alınmaktadır. Dilerseniz sondaki 90 sayısını artırıp azaltarak süreyi kısaltabilirsiniz.
@LastUsage = (select IntervalStart from fn_rbac_SummarizationInterval(‘disabled’) where Datepart(month,IntervalStart)=Datepart(month,GETDATE()-90))
Bir sonraki makalede bu sorguları da kullanarak Orchestrator üzerinde süreci iş akışı haline getirecek ve otomatize edeceğiz.