This might not be an answer to the original question, but since this post is the first result on Google (and apparently the only result inherent to CloudWatch billing) I feel like posting this here.
One year ago, I started using AWS for the first time for a game jam, fortunately they gave free credit to users and that's how I managed not to get billed a random amount every month. This is my billing dashboard:

I've looked for "AmazonCloudWatch DashboardHour" several times in the last year and I always come back to this post (but Alarms weren't my issue obviously), so I hope to be helpful to other people posting how I solved my issue.
Today I finally noticed that in the "Dashboards" section of CloudWatch I had four custom dashboards (2 in EU-Paris and 2 in US-West Oregon) that Unreal Engine automatically created while configuring the AWS GameKit (I've already deleted them in the picture below, but they were listed in the bigger red rectangle, and you have to delete them one by one)

This has been really tricky to find out because these dashboards were not listed in the AWS global view of active services. I really hope I got rid of them once and for all!
EDIT:
Also remember to look for active DynamoDB tables! Even if you don't use them they are still billed!

And apparently they are also connected to CloudWatch Alarms:
