We can't log every single HTTP request or else we will quickly flood the log with getInstanceView requests, which could happen up to 30 times per second. Instead, we should design a system as follows:

  • Instead of logging every request, we should store an in-memory structure of the requests, probably by connection.
  • We log the initial connection; thereafter, we store the activity on that connection on an in-memory structure.
  • On a certain frequency, perhaps after a certain amount of inactivity in the connection, we log the connection activity (either to the log or maybe an Aeon table).
  • We should compress the activity as much as possible. For example, if a connection has 100 consecutive calls to getInstanceView, we should try to collapse that into a single line.