I have an OpenVPN server where I want to log how much bandwidth is used by client connections. I only need to know the bandwidth used in total by a client connection, at the end of the connection. OpenVPN has this information in the
Bytes Received and
Bytes Sent fields in its status file.
What is a practical way to get the value of these fields at the end of a client connection?
I know about the
--status parameter, that lets OpenVPN write out its status periodically, but that seems inconvenient: the status file would have to be updated often, and it would need to be parsed just as often.
I've tried using the
--client-disconnect option with a script that sends the USR2 signal to the openvpn process to dump the status, but unfortunately whenever that triggers the just-disconnected client is no longer present in the status output. So that's not working either.
I know I can log the bandwith by using iptables, as answered in How to log OpenVPN bandwidth used?, but I'm trying to find a solution that uses that data within OpenVPN itself.