How to monitor INSERT failures?
Just to extend on Max Vermon's comment...

INSERT failures should be monitored at the data access layer. 

An exception is raised by SQL with information regarding the error for failed INSERTs. If you are accessing data through a Stored Procedure (SP) you can handle the error with the SP using the BEGIN TRY...END TRY...BEGIN CATCH...END CATCH exception handling blocks. 

You can easily write code to store the exception information into a generic table. 

You can use exception handling in other programming environments such as C#, VB.NET etc... 

Here is a good example of handling exceptions in T-SQL: http://www.codeproject.com/Articles/38211/Exception-Handling-in-SQL-Server