A method for identifying services, service elements and dependencies among
the services and service elements includes executing first and second
phases of discovery. In the first phase, the services and service elements
are detected, as well as a first set of dependencies. The second phase is
based on results of the first phase and is focused upon detecting
inter-service dependencies, i.e., conditions in which proper operation of
one service relies upon at least one other service. Various techniques may
be used in executing the first phase, including accessing information in a
domain name service (DNS) of the network to identify dependencies, as well
as services and service elements. Discovery within the first phase may
also be based upon recognizing naming conventions. Regarding the second
phase, one approach to discovering inter-service dependencies is to deploy
discovery agents implemented in computer software to access content of
configuration files of applications detected in the first phase. Discovery
agents may also be used to monitor connections completed via specified
service elements detected in the first phase, such that other
inter-service dependencies are identified. As an alternative or additional
approach, network probes may be deployed to access information of data
packets transmitted ted between service elements detected in the first
phase, with the accessed packet information being used to detect
inter-service dependencies. When information of the DNS is accessed in the
first phase, the information is used as a basis for determining at least
some of (1) groups of service elements that are generally equivalent with
respect to executing a particular service within the network, (2) hosts
supporting virtual hosting, (3) hosts supporting virtual servers, and (4)
name servers.