본관은 도강(道康, 전라남도 강진군). 아버지는 검교태자대사(檢校太子大師)로 추증된 김석부(金錫符)이며 어머니는 상승봉어(尙乘奉御) 노격(盧格)의 딸이다. 부인 오정(吳頲)과의 사이에서 두 아들을 두었는데, 장남은 문림랑 위위주부동정(文林郞 衛尉主簿同正) 김신항(金伸沆)이고 차남은 국학학유(國學學諭) 김대령(金大齡)이다.
약관의 나이에 명경과(明經科)에 급제하여 비서교서랑동정(秘書校書郞同正)이 되었다. 1107년(예종 2)에는 외삼촌인 병마원수(兵馬元帥) 오연총(吳延寵)의 막하에 들어가 여진정벌(女眞征伐)에 공을 세워 전구령(典廐令)에 임명되었다.
대부주부(大府注簿)를 거쳐 7품이 되자 관례에 따라 외직(外職)에 나가 보성군수(寶城郡守)로 근무하였다. 임기가 끝나자 장작주부(將作注簿)가 되었으나 권세가에게 거슬려 다시 순주(順州)의 수령으로 좌천되었다. 이후 대부주부, 상서도사(尙書都事), 감찰어사(監察御史)로 옮기고 서경분대(西京分臺)가 되어 1년간 근무하였다. 그 뒤 형부원외랑(刑部員外郞)으로 좌천되어 동경부유수(東京副留守)로 근무하고, 비서승(秘書丞), 지형부사(知刑部事), 비서소감(秘書少監), 어서검토관(御書檢討官), 지호부사(知戶部事) 등을 역임하였다.
이후 조의대부 호부상서(朝議大夫 戶部尙書)로 퇴직할 때까지 안찰부사(按察副使), 병마부사(兵馬副使), 찰방사(察訪使) 등의 외직을 포함하여 모두 23개의 관직을 거치면서 행정 사무에서 뛰어난 재능을 인정받았다. 1147년(의종 1)에 72세의 나이로 사망하자, 이듬해 송림현(松林縣) 마천(馬川) 기슭에 장례지냈다.