29 Haziran 2012 Cuma

Windows Server 2008 R2'de Print and Document Service'yi yazıcı dağıtımı ve yönetimi için kullanıyor bir de "Kim ne yazmış, kaç sayfa yazmış vb." gibi raporsal sorularınız grafiksel kaygılarınız varsa eğer;

İlk önce Log Parser'ı ve Office Web Components'i indirip sistemimize kuruyoruz. Log Parser'ı "Complete" olarak kuruyoruz geri kalan next next...

Daha sonra default olarak kapalı olan log'lamayı enable ediyoruz. Bunun için Event Viewer'ı açıp Applications and Service Logs -> Microsoft -> Windows -> Print Service -> Operational'a sağ tıklayıp Enable Log'u seçiyoruz.

LogParser ayrıca aşağıdaki registry kaydı altında enable ettiğimiz Print Service - Operational Log'un key'i olup olmadığını kontrol ediyor.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog

Oluşturuyoruz...


Şimdi geldi birkaç yazıcı tanımlayıp, farklı bir user ile de login olup Print Service'ye log oluşturmaya. Benim test ortamıma bağlı bir printer yok. İki üç tane fake printer oluşturup yolumuza devam edeceğiz. Bir örnek aşağıdaki resimlerden yorumsuz olarak takip edilebilir. (* Enter port name : nul)



Şimdi tüm malzemelerimiz hazır. İki farklı user ile iki farklı printer'a bir şeyler yolladım ve bunları raporlayacağım.

İlk query ile haftalık bir rapor alıyorum ve csv formatında kaydediyorum. Burada Operational içerisinden gerekli verileri alıp bir alias atıyoruz. Dikkat edilecek kısımlar: Event ID: 307 yazdırma işlemleri, TIMESTAMP('05', 'dd') son 5 gün demek. c:\Program Files (x86)\Log Parser 2.2 dizini içerisinde;

LogParser "SELECT SUBSTR( TO_STRING( TimeWritten, 'yyyy-MM-dd HH:ii' ), 0, 10 ) As IslemTarihi, RESOLVE_SID(EXTRACT_TOKEN(Strings,2,'|')) As SSID, EXTRACT_TOKEN(Strings,4,'|') As YaziciAdi, sum(to_int(EXTRACT_TOKEN(Strings,6,'|'))) As Boyut, sum(to_int(EXTRACT_TOKEN(Strings,7,'|'))) As SayfaSayisi INTO report/HaftalikRapor.csv FROM Microsoft-Windows-PrintService/Operational WHERE (EventID = 307) AND (TimeGenerated > TO_LOCALTIME( SUB( SYSTEM_TIMESTAMP(), TIMESTAMP('05', 'dd') ) )) group by YaziciAdi, SSID, IslemTarihi order by IslemTarihi, SayfaSayisi Desc"


Bir de haftalık top10 listemizi oluşturuyoruz:

LogParser "SELECT TOP 10 RESOLVE_SID(EXTRACT_TOKEN(Strings,2,'|')) As SSID,sum(to_int(EXTRACT_TOKEN(Strings,6,'|'))) As Boyut, sum(to_int(EXTRACT_TOKEN(Strings,7,'|'))) As SayfaSayisi INTO report/HaftalikTOP10.csv FROM Microsoft-Windows-PrintService/Operational WHERE (EventID = 307) AND (TimeGenerated > TO_LOCALTIME( SUB( SYSTEM_TIMESTAMP(), TIMESTAMP('05', 'dd') ) )) group by SSID order by SayfaSayisi Desc"


Şimdi, oluşturduğumuz csv'ler üzerinden grafiklerimi oluşturuyoruz. İlk önce top10 listemizi:

LogParser "SELECT SSID,SUM(SayfaSayisi) as ToplamSayfaSayisi INTO report/HaftalikTOP10.gif FROM report/HaftalikTOP10.csv GROUP BY SSID ORDER BY ToplamSayfaSayisi ASC" -chartType:BarClustered -chartTitle:"TOP10 (Sayfa Adedi - User)" -groupSize:600X480 -values:ON


Son olarak yazıcı istatistiklerini alıyoruz:

LogParser "SELECT YaziciAdi,SUM(SayfaSayisi) as ToplamSayfaSayisi INTO report/HaftalikRapor.gif FROM report/HaftalikRapor.csv GROUP BY YaziciAdi ORDER BY ToplamSayfaSayisi ASC" -chartType:BarClustered -chartTitle:"Yazici Istatistikleri (Sayfa Adedi)" -groupSize:600X480 -values:ON




Ve son olarak rapor çıktılarını e-mail olarak yolluyoruz. Bunun için SMTPstoat kullandım. Komut satırından örnekten yararlanarak email yollayabilirsiniz.

smtpstoat -S SMTP ADRESI -f FROM ADRESI -t "TO ADRESI" -s "KONU BASLIGI" -m "MAILI CERIGI" -a ATACLANACAK DOSYA YOLU -v


smtpstoat -S 192.168.1.1 -f rapor@test.com -t "oyilmaz@test.com" -s "Print Server Haftalik Rapor" -m "Haftalik printer kullanim raporudur." -a report/HaftalikRapor.csv -a report/HaftalikRapor.gif -a report/HaftalikTOP10.gif -v

1 yorum:

Ali dedi ki...

Süper çok işime yaradı ve kodlarda en ufak bir hata olmadan çalıştıteşekkürler.

Yorum Gönder