You haven't shown any examples of the metrics, nor the queries relating to each of those graphs.
Speaking generally though, given that counters can reset, I think the best you can do is to use increase(foo[time]) which will give you an *estimate* of the amount the counter has increased over the given time window (it calculates the rate, skipping over counter resets, and scales it up to cover the whole window period. This may give a non-integer result). You should then be able to sum() over that: sum(increase(foo[time])).
Note that it will give you the amount of processing done in that specified time window, not since you started monitoring.
You said you tried sum(increase), and maybe it's one of the graphs you showed. Suppose you made a graph of sum(increase(foo[24h])); then each point on that graph represents the amount of work done *in the 24 hours up to that point*. This value will of course go up and down, since the amount of work done in any given 1 day period may go up and down.
You can't possibly know the total amount of work done since the beginning of time, if the counters arbitrarily reset. You would have to have to create a persistent, non-resetting counter.
sum_over_time is very wrong: it would add together all the values within the time window.