Sensor networks are often used to perform monitoring tasks, such as in animal or vehicle tracking and in surveillance of enemy forces in military applications. In this paper we introduce the concept of proximity queries that allow us to report interesting events that are observed by nodes in the network that are within certain distance of each other. An event is triggered when a userprogrammable predicate is satisfied on a sensor node. We study the problem of computing proximity queries in sensor networks using existing communication protocols and then propose an efficient algorithm that can process multiple proximity queries, involving several different event types. Our solution utilizes a distributed routing index, maintained by the nodes in the network that is dynamically updated as new observations are obtained by the nodes. We present an extensive experimental study to show the benefits of our techniques under different scenarios. Our results demonstrate that our algorithms scale...