Как вы уже упоминали, вам придется хранить пары время / значение где-то, возможно, в таблице базы данных. Все, что вам нужно, это дата / время и значение онлайн-пользователей (таблица с 2 столбцами).
Количество точек данных будет зависеть от того, как часто вы будете запрашивать счетчик. Как правило, я не думаю, что будет полезно проводить опрос чаще, чем ваш порог неактивности - если вы считаете пользователя неактивным через 10 минут, я бы не опрашивал счетчик чаще, чем каждые 10 минут.
Хотя объем данных не должен быть проблемой для большинства баз данных, вас может заинтересовать Round Robin Database или, по крайней мере, его концепция. Идея состоит в том, чтобы иметь очень подробный счетчик (1 точка данных каждые 10 минут) за последнюю неделю, менее подробный счетчик (каждые 4 часа) за последний месяц и еще менее подробный счетчик (каждый день) за последний год , и так далее. При настройке таким образом у вас есть постоянное количество точек данных в любой момент.