Microsoft just released a new hotfix to deal with ghost agents or agent that are grayed out for an unknown reason. Sometimes it can happen that an agent unexpectedly appear as unavailable without any real reason. We call this ghost agents
The workaround was to delete the health service state directory on the computer (root management server, management server, or agent) that is affected. That way the database will be rebuild.
But Microsoft has now identified this problem as this issue occurs because the database that is used by the health state is corrupted. This database corruption is caused by an issue in the storage engine of the jet database that is hosted on Windows. This is a problem in the Microsoft products and not in OpsMgr. So you need to apply the hotfix to fix the storage engine.
You can download the KB here http://support.microsoft.com/kb/981263
Notice that this hotfix applies to Windows Server 2008 but not Windows Server 2008 R2.
Hope this helps,