본관은 경주(慶州). 자는 유일(唯一), 호는 일와(一窩). 영의정 김흥경(金興慶)의 증손으로, 할아버지는 김한정(金漢禎)이고, 아버지는 문화현령 김태주(金泰柱)이며, 어머니는 이명경(李命冏)의 딸이다.
1786년(정조 10) 진사시에 합격하여 1796년 별시 문과에 응시하였으나 글자 한 자가 빠졌다고 하여 낙방되고 말았다. 그 뒤 헌릉참봉을 제수받았다가, 곧 전생서직장·활인서별제·사헌부감찰 등을 역임하였다.
장악원주부로 있으면서 1805년 정시 문과에 을과로 급제, 병조좌랑·정언·지평 등을 거쳐 1807년 사복시정·응교를 지내고, 동지사서장관(冬至使書狀官)으로 연경에 다녀왔다. 1808년 황해도암행어사로 지방관의 탐학을 제거하고자 노력하였고, 1811년 대사성이 되었다가 곧 경주부윤이 되었다.
그해 평안도에서 홍경래(洪景來)의 난이 일어나자 병사를 징발하여 대비시켰다. 동래부사·경상도관찰사·지중추부사·형조판서 등을 거쳐서, 1812년 한성부판윤에 이어 병조판서 겸 동지성균관사에 이르러 병으로 은퇴하였다.
평소 효행과 우애가 돈독하고 검소하였으며, 경사(經史)를 널리 섭렵하였다. 『중용(中庸)』을 좋아하였고, 역대의 사실이나 조선의 전고(典故)에도 밝았다. 시호는 정헌(正獻)이다.