You haven't given enough details about what your metrics look like or how often you are scraping.
However, I can tell you that rate(foo[1m]) only looks at a 1 minute window of the input. If you are only scraping at 1 minute intervals, that means there will only be one data point in that window, and it cannot calculate a rate from that - so you will get no answer.
If you are scraping at 1 minute intervals then the minimum you need is rate(foo[2m])
If you do rate(foo[5m]) this will give you an average across the first and last data points in the range, i.e. an average over a 4 minute period if you are scraping at 1 minute intervals.
If you do irate(foo[5m]) this will give you the rate between the last two data points in the range.