About a year ago, I’ve introduced a set of OpenDJ scripts and utilities that I’ve built to facilitate my work with OpenDJ.
Last week, I’ve pushed some updates to the github repository.
The first improvements are in logstat.py. I’ve added support for collecting stats about the Abandon operation, as well as some counting and reports on the errors to each operation. This allows to get a feel of how many operations failed and the error code reported.
The second update is a new utility names filterstat.py which scans through access log files and builds a sorted list of all filters used in search requests. The filters are generalized and collated together, and the result should help administrators to understand which attributes should be indexed and what kind of index are required.
Here’s a sample output of filterstat (based on an instance of OpenDJ used by OpenAM). The first value is the count and the string is the generic representation of the filter:
$ ~/opendj-utils/filterstat.py access processing file: access 213783 (&(uid=VALUE)(objectclass=VALUE)) 2080 (&(|(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE))(|(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE))(|(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE))) 807 (&(objectclass=VALUE)(uniqueMember=VALUE)) 244 (&(cn=VALUE)(objectclass=VALUE)) 213 (&(&(uid=VALUE)(objectclass=VALUE))) 140 (&(|(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE))(|(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE))(|(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE))) 63 (&(|(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE))(|(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE))(|(sunxmlKeyValue=VALUE)(sunxmlKeyValue=VALUE))) 39 (&(&(cn=VALUE)(objectclass=VALUE))) 6 (&(uid=*SUBSTRING*)(objectclass=VALUE)) 2 (&(objectclass=VALUE)(ou=VALUE)) 1 (&(&(uid=*)(objectclass=VALUE))(|(uid=VALUE))) Base search filters only: 2487 (|(objectclass=*)(objectclass=VALUE)) Done
Please give those tools a try and let me know how useful they are for you. And if you have ideas on how to improve them, feel free to fork them and contribute.
Filed under: Directory Services Tagged: directory, directory-server, ForgeRock, github, java, opendj, opensource, utilities