본관은 예안(禮安). 자는 사회(士晦), 호는 설송(雪松). 김수손(金首孫)의 증손으로, 할아버지는 김사창(金泗昌)이고, 아버지는 김반천(金半千)이며, 어머니는 조세우(曺世虞)의 딸이다.
1560년(명종 15) 진사가 되고, 1564년 식년 문과에 을과로 급제하였다. 1571년 형조좌랑, 1573년 지평을 거쳐 이듬해 장령이 되었으며, 1576년 사간으로 승진하였다. 1592년 상주목사로 재임 중 임진왜란을 당하여 당황한 나머지 순변사 이일(李鎰)을 맞이한다는 핑계로 성을 떠나 피신하였다.
그러나 뒤에 판관 정기룡(鄭起龍)과 함께 향병(鄕兵)을 규합하여 개령(開寧)에서 왜군을 격파하고 상주성을 일시 탈환하기도 하였다. 이듬해 왜적에게 포위되어 항전하다가 전사하였다. 도승지에 추증되었으며, 인조 때에 참판으로 추증을 더하고 향리에 정문을 세워 표창하였다.