In the Green Knight's opinion, Gawain is a good knight. Otherwise, his third strike would have hit its mark and Gawain would be no more.
However, because Gawain confessed his weaknesses and his lie (the green sash was kept secret because he truly did not want to die), he is given another chance. It is understood that he is to go back to Arthur and the round table to tell his story and teach the lesson the Green Knight has taught.
I would also say Gawain is a good knight. He is human, so he has faults. However, he does not act on the temptation of the Green Knight's wife any further than a kiss. Unlike the knight in the Wife of Bath's tale, he does not force himself upon her or harm her in any way. His weakness is his love of life, and going back on the agreement to exchange everything he receives with his host upon his return from hunting.
Sir Gawain's quest is to find the Green Knight in the Green Chapel. It is not a quest which he really wants to embark on. The Green Knight had visited Arthur's court on New Years Eve and had issued a challenge to Knights of the Round Table. He would let one of them take a blow against him now and the Knight would them allow The Green Knight to take an equal blow against him one year from that day. When none of the knights jumped to the challenge, Arthur himself was going to take it so Gawain stepped up and took the challenge for him.
Gawain is a near perfect hero because he is brave, strong, honorable, and willing to die to keep his word. He even resists the temptation of the beautiful Lady Bertilak who throughs herself at him. He does kiss her, but gives the Kisses to Bertilak in the evening as per his agreement to give him everything he gets during the day. He is less than perfect however, because when Lady Bertilak gives him a sash she says will protect him from weapons, he keeps it and does not tell the Bertilak.
I would definitely say that Gawain is a good knight, not perfect, but overall he is a good and honorable man which is why he survives his encounter with the Green Knight