Consul is a tool for service discovery, configuration and monitoring. It allows services to register themselves and discover other services via HTTP or DNS. Consul supports health checking of services, and prevents routing traffic to unhealthy hosts. It provides a key-value store for dynamic configuration of services. Configuration is done via JSON files in a config directory. The Consul agent runs on each node, joining nodes into a cluster. It monitors node and service health, and provides a web UI for viewing cluster status.