There is no need to check the abnormality from the client end as you will be able to see it as Non-Client when it doesn't report its inventory for certain period and also you can get it via querying through the DB..
What I ll suggest is create a query based collection to get the list of computers that did not report its hardware inventory for certain period of time, and you could get the troublesome clients..
Below query can be used to get the computers based on the its reporting time, change the day as per your convenience..
select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System where SMS_R_System.ResourceId not in (select ResourceID from SMS_R_System where AgentName in ("Heartbeat Discovery") and DATEDIFF(day,AgentTime,GetDate())<=12)
Run the below query to get it from DB, change the collection it to your all systems, and the days required..
Declare @CloTbl table
(
[Associate ID] varchar(25),
[Computer Name] varchar(25),
[SiteCode] varchar(5),
[LastHWScan] varchar(255),
[Days Since HWScan] int
)
insert into @CloTbl select * from(
select Sys.User_Name0 as 'Associate ID',SYS.Netbios_Name0 as 'Computer Name', SIS.SMS_Installed_Sites0 as 'SMS Site', WS.LastHWScan,
DATEDIFF(day,WS.LastHWScan,GETDATE()) as 'Days Since HWScan' from v_R_System as SYS
join v_GS_WORKSTATION_STATUS WS on SYS.ResourceID = WS.ResourceID
join v_RA_System_SMSInstalledSites SIS on SYS.ResourceID = SIS.ResourceID
join v_fullcollectionmembership coll on SYS.ResourceID =coll.ResourceID
join v_GS_OPERATING_SYSTEM sys1 on SYS.ResourceID =sys1.ResourceID
WHERE coll.CollectionID = 'CA1000AA')P
select * from @CloTbl
where [Days Since HWScan] >'9'
order by [Days Since HWScan]
Hope it suffices..