A computer-implemented method for dynamically discovering applications running on servers, the method comprising the steps of: performing, via a monitoring service, a query to discover if a local application is present on a server, the local application being a single instance of an application running on a single server; determining a service environment to which the discovered local application belongs via the monitoring service using one of: querying an operating system's domain, reading a string in a registry, reading a line in a configuration file, or reading a configuration database, wherein the service environment is a group of service groups that serve a common consumer, a service group being a group of local applications that provide a common function to the common consumer; adding or removing discovered local applications, service groups, and service environments as objects in a health map, wherein the health map is dynamically updated by including objects as they are added to and deleted from an enterprise-scale service environment and wherein at any time the health map represents a snapshot of the service environment; adding external resources as objects to the health map if they are not already known; monitoring, via the monitoring service, health indicators for the discovered local applications, service groups, service environments and external resources; attributing the health indicators to either health of a local application or health of an external resource and dynamically updating the health map; and based on the attributed monitored health indicators in the health map identifying one or more faults in the service environment; wherein the health indicators include at least one of events, performance counters, synthetic transactions, SysLog service events, or Simple Network Management Protocol, SNMP, service events. performing, via a monitoring service, a query to discover if a local application is present on a server, the local application being a single instance of an application running on a single server; determining a service environment to which the discovered local application belongs via the monitoring service using one of: querying an operating system's domain, reading a string in a registry, reading a line in a configuration file, or reading a configuration database, wherein the service environment is a group of service groups that serve a common consumer, a service group being a group of local applications that provide a common function to the common consumer; adding or removing discovered local applications, service groups, and service environments as objects in a health map, wherein the health map is dynamically updated by including objects as they are added to and deleted from an enterprise-scale service environment and wherein at any time the health map represents a snapshot of the service environment; adding external resources as objects to the health map if they are not already known; monitoring, via the monitoring service, health indicators for the discovered local applications, service groups, service environments and external resources; attributing the health indicators to either health of a local application or health of an external resource and dynamically updating the health map; and based on the attributed monitored health indicators in the health map identifying one or more faults in the service environment; wherein the health indicators include at least one of events, performance counters, synthetic transactions, SysLog service events, or Simple Network Management Protocol, SNMP, service events.