Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Data will be kept in the folder etc:attribute:instrumentationData
  • Collect counts of servlet requests, group adds/deletes, membership adds/deletes, folders adds/deletes
  • UI can start a new thread when the servlet first initializes
  • The new thread will enable stat collection (i.e. set some static variable)
  • Grouper api and ui code will update various static lists of timestamps indicating when each operation is done
  • Config A config option will see determine how often the thread will go through the timestamps in memory and update the grouper database.  Lower means less fewer gaps when the process is killed.
  • Another config option will specify the increments to keep counts of.  E.g. if we're keeping counts by 10 minutes or hour or day.
  • When the UI thread starts up, check to see if an "instrumentation.dat" file exists in the logs directory.  This file will contain the uuid of this instance.
  • If it doesn't exist, create it and create a corresponding attribute in grouper, e.g. etc:attribute:instrumentationData:instances:theuuid (def = etc:attribute:instrumentationData:instancesDef)
  • The instrumentation.dat file should have a trivial update whenever the thread flushes to the database just in case the system is cleaning old files.
  • There will be a group used for assignments - etc:attribute:instrumentationData:instrumentationDataGroup.
  • There will be a single assign multi valued attribute - etc:attribute:instrumentationData:instrumentationDataCounts (def = etc:attribute:instrumentationData:instrumentationDataCountsDef)
  • So etc:attribute:instrumentationData:instances:theuuid will be assigned to etc:attribute:instrumentationData:instrumentationDataGroup.  And on that assignment will live assignments with actual data (instrumentationDataCounts)
  • The value of the assignment on the assignment will be like:  

    Code Block
    {"startTimestamp" : "1486753200000", "GROUP_ADD", "5", "GROUP_DELETE", "3"}
  • There may be multiple values added each time it runs.  For example, if the database is updated every hour and the increment is every 10 minutes, then it could add 6 of these.

    Code Block
    {"startTimestamp" : "1486753200000", "GROUP_ADD", "5", "GROUP_DELETE", "3"}
    {"startTimestamp" : "1486753800000", "GROUP_ADD", "2", "GROUP_DELETE", "6"}
    {"startTimestamp" : "1486754400000", "GROUP_ADD", "1", "GROUP_DELETE", "2"}etc
  • The TIER instrumentation daemon will sends these to TIER and delete the values from Grouper.
  • The values won't be audited (user audit or point in time audit)

  • Code should be reusable for WS, loader, etc.

...