I'm having the same conundrum, same errors, same versions.
My confusion is that the setup is all 'out of the box' and it appears that the beats defaults provided (e.g. the index name template in the logstash pipeline yml) is not taking into account the ILM code (or vise versa).
I would very much like someone from @elastic to take a look at an out of the box experience and see what the 'next steps' are.
In this post (ILM and alias confusion) we can see the same issue is being address, albeit on a custom index, and the solution is to add the '-00001' to the index name. This is because ILM needs to see the '-00001' as part of the index name so it can increment that number. This appears to be a hard coded requirement.
Here is a request on github for allowing ILM to use custom index name (https://github.com/logstash-plugins/logstash-output-elasticsearch/issues/869). The interesting thing about this conversation is the next post which shows the effects when a custom index name is used vs. auto-index name which includes '-00001'
I've gone ahead and updated my Metricbeat pipeline with index naming
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}-00001"
I'll watch the roll-over status tomorrow. TGIF!