본관은 예안(禮安). 자는 중수(仲綏), 호는 학고(鶴皐). 김득선(金得善)의 증손으로, 할아버지는 증 호조참판 김단(金端)이고, 아버지는 경주부윤 김해일(金海一)이며, 어머니는 진사 이은진(李殷鎭)의 딸이다.
1713년(숙종 39) 사마시에 합격한 뒤, 이어 이해에 증광 문과에 병과로 급제하여 승문원정자(承文院正字)가 되었다. 1718년 전적(典籍)을 거쳐, 이듬해 병조좌랑이 되었다. 그 뒤 1727년 무안현감이 되고, 1737년에는 병조에 들어가 군사에 관한 직무를 4년동안이나 맡았다.
이어 1740년에는 양산군수가 되었는데, 이때 수재를 막기 위하여 자기의 녹봉으로 제방을 쌓았다. 이에 백성들이 그 은혜를 칭송하여 비를 세우고, 이름을 ‘청전제(靑田堤)’라고 불렀다. 1745년 장령(掌令)으로서 민생안정의 저해 요인으로 풍속의 사치스러움과 수령·감사의 탐오함을 들어, 현명한 지방관을 선임하도록 주장하여 영조의 치하를 받았다.
그 뒤 정언(正言)을 거쳐 사간·집의(執義) 등 청요직을 지내며, 시정(時政: 당시의 정치)의 득실을 주청하는 소를 자주 올렸다. 1753년 사간에 있을 때에 수령의 탐학을 막아 흉년에 백성이 유리되는 일이 없도록 주장하였다. 1756년 국가에서 노인을 우대하는 정책에 따라, 통정대부에 올랐고 이어 첨지중추부사에 이르렀다.