实战
SMS
的软件计数功能暨故障排查
SMS
服务器提供了软件计数功能(
software metering
),软件计数可以统计客户端计算机上特定软件的使用次数,并通过
SMS
的报表功能加以汇总。我们可以利用软件计数统计客户机上某个应用程序的使用频率,从而决定是否应该购买此软件的
License
;我们也可以利用软件计数调查最近有没有公司的用户在上班时间偷偷玩游戏,从而决定该如何修理他一顿
….
总之,软件计数是
SMS
提供的一个非常实用的管理功能,今天我们就为大家介绍如何实现
SMS
的软件计数功能。软件计数实现起来难度不算很大,但以往有些管理员在实现此功能时出现过问题,因此我们对软件计数功能的排错也提供一些参考思路。
实验拓扑如下图所示,
Florence
是域控制器,
Berlin
是
SMS
服务器,
Perth
是客户机,所有计算机都安装了
Win2003
中文企业版。本次的实验目的是统计客户机上
IE
浏览器的使用次数。
一
启用
SMS
软件计数功能
1) SMS
客户端代理的软件计数功能默认并没有打开,我们首先要开启这个功能
。
在
SMS
服务器上打开
SMS
管理员控制台,展开站点设置下的客户端代理,查看软件计数
客户端代理属性,如下图所示
如下图所示,我们选择“在客户端上启用软件计数”
切换到软件计数客户端代理的计划标签,如下图所示,我们设置每
15
分钟在客户机上进行一次数据采集以及进行计数规则的下载。设置为这个频率只是为了实验方便,在生产环境下不要这么做,因为这么高的采集频率会导致网络带宽的大量消耗。
2)
在客户机上刷新策略
我们启用了
SMS
客户端代理的软件计数功能后,默认情况下
SMS
客户端需要
60
分钟的时间来自动更新策略,如果我们在实验环境下希望尽早启用此功能,我们可以选择在客户机上手工刷新策略。在客户机上的控制面板中打开系统管理,在系统管理属性中切换到操作标签,如下图所示,选择“计算机策略检索和评估周期”,点击“初始化操作”,这样在
5
分钟内客户机就可以更新到服务器上的最新策略。
客户机上进行初始化操作后,我们切换到系统管理属性的组件标签,如下图所示,
SMS
软件计数代理已经启用了。
二
创建软件计数规则
启动了
SMS
代理的软件计数功能后,我们就可以创建软件计数规则了,我们准备通过软件计数规则来统计一下客户机上
IE
浏览器的使用次数。在
SMS
服务器上打开
SMS
管理员控制台,右键点击软件计数规则,如下图所示,选择新建“软件计数规则”
如下图所示,在软件计数规则属性中我们填写了新建规则的名称“
Internet Explorer Metering
”,文件名和原始文件名都填写了
IEXPLORE.EXE
。文件名和原始文件名是有区别的,文件名是文件系统中的文件名称,原始文件名是可执行文件文件头中的原始文件名,一般情况下这两个名称填写一个即可。版本参数我们填写通配符
*
,这样软件计数规则就可以支持规定软件的任何版本。语言参数选择了“任何”,显然也是为了使规则更具有适用性。
三
检查
SMS
服务器服务状态
接下来我们检查一下
SMS
服务器上的服务状态,看软件计数所依赖的服务是否在正常运行。如下图所示,打开
SMS
管理员控制台,在
SMS
服务管理器的所有任务中选择“启动
SMS
服务管理器”
在
SMS
服务管理器中检查
SMS_SOFTWARE_METERING_PROCESSOR
以及
SMS_SQL_MONITOR
的运行状态是否正常,如下图所示,这两个组件状态正常。
四
在客户机上进行软件测试
软件计数功能生效后,客户机会根据从
SMS
服务器下载的软件计数规则来判断客户机上运行的程序是否匹配计数规则。如果匹配,那么客户机会将此软件的运行过程记录下来并发送给服务器,供服务器进行统计分析。下面我们在客户机上运行
IE
浏览器,看看是否能够被软件计数规则记录到,如下图所示,我们在客户机上打开浏览器,访问一些网站。
客户机运行
IE
后,我们在客户机的系统管理工具中选择“软件计数使用报告周期”,如下图所示,点击“初始化操作”,这样可以强制客户机将软件计数规则记录的结果发送给服务器。
五
在服务器上汇总结果
服务器收到客户机发来的统计数据后,需要对数据进行汇总。打开
SMS
管理员控制台,如下图所示,在“站点维护”的“任务”中选择“汇总软件计数文件使用数据”,查看属性。
如下图所示,我们选择启动此汇总任务,而且将汇总时间定为每天的
8:00-17:00
。
过了一段时间(我是等了一天)后,我们来查看一下软件计数的汇总结果。在
SMS
服务器上打开
SMS
管理员控制台,在报表中右键点击“已运行特定计数软件程序的计算机”,如下图所示,在所有任务中选择运行-
Berlin
,意思是在
Berlin
上运行这个查询,这个查询可以查看有多少计算机运行了指定的软件以及具体的运行次数。
运行查询后,如下图所示,我们分别输入软件计数规则的名称,查询的月份和年份,点击“显示”按钮
查询结果如下图所示,软件计数功能准确地统计出了客户机上的
IE
运行次数,实验成功!
六
故障排查思路
上述实验是成功的,但论坛上有不少朋友反映使用软件计数功能时出现了一些错误,而且不知道错误在什么地方,该如何去进行排查?下面我们就来提供一些故障排查思路给大家参考。软件计数功能的实现大致是这样一个过程:
SMS
服务器上启动软件计数功能以及设置软件计数规则后,
SMS
客户端从服务器下载软件计数规则。然后
SMS
客户端就开始对每一个运行的软件进行计数规则检查,如果发现匹配规则就记录下来,然后发送给
SMS
服务器,服务器最后将收到的记录后进行汇总,用户就可以进行结果查询了。
按照这个流程,我们就可以构思一个排错思路了。首先我们要考虑的是客户机有没有从服务器下载软件计数规则以及用这个规则去检查客户机上的软件执行情况,如何去解决这个问题呢?检查一下客户机
c:\windows\system32\ccm\logs\mtrmgr.log
,如果客户机从服务器成功地下载规则,就会对客户机上执行的每一个程序进行规则匹配检查,检查的结果就记录在这个日志文件里。如下图所示,我们打开客户机上的
mtrmgr.log
,可以看到客户机执行的每一个程序都被记录下来,然后检查是否匹配软件计数规则。注意看下图红框处,客户机执行了
IEXPLORE.EXE
,然后客户机发现这个程序和软件计数规则是匹配的。这就说明客户机已经成功地从服务器下载了软件计数规则,并且能用规则对客户机执行的程序进行检查。
然后我们就要考虑客户机是否把记录到的软件使用数据发送给了服务器,这个可以通过客户机上
c:\windows\system32\ccm\logs\ SWMTRReportGen.log
来进行检查,打开日志文件,如下图所示,红框处的记录说明客户机已经把记录发送给了
SMS
服务器。
服务器如果收到了客户机发来的记录,就会把它记录在一些表里,我们可以通过查询这些表来确认服务器是否已经收到了客户机发来的记录,例如我们可以打开
SMS
服务器上
SMS_001
库中的
Meterdata
表,如下图所示,我们可以看到表中已经有客户机发来的记录了。
服务器收到客户机发来的统计记录,是否我们就可以查询到结果了?未必,因为客户端发来的结果还需要服务器进行汇总,服务器进行汇总有可能要经过一天,而且即使我们修改了汇总的时间也需要等待一段时间才能看到最终结果,因此请大家耐心一些。按照这个排查思路,在哪个阶段出了问题应该可以进行基本的判断了,祝大家都能顺利完成实验。