본관은 안동(安東). 자는 중혜(仲惠), 호는 일한재(一寒齋). 우의정 김상용(金尙容)의 증손으로, 할아버지는 김광현(金光炫)이고, 아버지는 김수민(金壽民)이며, 어머니는 윤형각(尹衡覺)의 딸이다.
1669년(현종 10) 동몽교관(童蒙敎官)이 된 뒤 1684년 정시 문과에 병과로 주1 1685년에 정언(正言)이 되었으며, 그해 홍문록(弘文錄)과 도당록(都堂錄)에 주2. 이듬해 부수찬(副修撰) · 수찬을 거쳐 1687년 교리(校理)에 임명되어 옥송사(獄訟事)를 신속히 처리할 것을 건의하였다.
이어서 헌납(獻納) · 부교리 등을 거쳐 1689년 이조좌랑을 지냈다. 1694년에는 이조정랑 · 겸문학 · 응교(應敎) · 집의(執義) · 사간 · 사인(舍人)을 차례로 역임하고, 1696년에 양주목사(楊州牧使)가 되었으나 흉년을 당하여 굶주린 백성들의 구제에 힘쓰지 않았다 하여 삭직당하였다.
그 뒤 곧 승지로 기용되었으며 대사간을 거쳐 1698년 이조참의가 되었다. 이때 혹심한 식량난에 처해 청나라로부터 쌀 4만섬을 수입하였는데, 이에 따르는 국가의 체면과 사상(私商)들의 농간을 우려하였다.
1699년 충청도관찰사를 거쳐 다시 대사간에 임명되었으나 부임 도중에 주3. 성품이 강직하고 청렴결백하였다.