Detecting road potholes and road roughness levels is key to road condition monitoring, which impacts transport safety and driving comfort. We propose a crowd sourcing based road surface monitoring system, simply called {em CRSM}. CRSM can effectively detect road potholes and evaluate road roughness levels using our hardware modules mounted on distributed vehicles. These modules use low-end accelerometers and GPS devices to obtain vibration pattern, location, and vehicle velocity. Considering the high cost of onboard storage and wireless transmission, a novel light-weight data mining algorithm is proposed to detect road surface events and transmit potential pothole information to a central server. The server gathers reports from the multiple vehicles, and makes a comprehensive evaluation on road surface quality. We have implemented a product-quality system and deployed it on 100 taxies in the Shenzhen urban area. The results show that CRSM can detect road potholes with up to 90% accuracy, and nearly zero false alarms. CRSM can also evaluate road roughness levels correctly, even with some interferences from small bumps or potholes.