As we move towards being able to swap out different databases (bdb, lmdb, etc) we need to revise our monitor entries:
cn=monitor,cn=ldbm database,cn=plugins,cn=config This monitor entry only has two types of stats. It has BDB specific stats regarding the dbcache, and normalized DN cache stats. If you strip out the BDB stats you are not left with much.
cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config This monitor is completely specific to BDB, but LMDB also some interesting stats in their MDB_stat and MDB_envinfo structs that would we could report on. http://www.lmdb.tech/doc/group__mdb.html#structMDB__stat
cn=monitor,cn=userroot,cn=ldbm database,cn=plugins,cn=config This monitor entry contains index file stats (BDB specific), and the entry and dn cache stats.
So once you remove the BDB specific stats, these three monitor entries become a little sparse. Certainly cn=monitor,cn=ldbm database,cn=plugins,cn=config and cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config could be combined, but then you run the risk of breaking someone's client that is using the cn=database entry. I don't think the "cn=database" monitor is widely used, but we still need to be careful if we decide to merge it.
We also have to modify "dsconf dbmon" & "dsconf backend monitor" for the different backend implementations and potential monitor changes.
Metadata Update from @mreynolds: - Custom field origin adjusted to None - Custom field reviewstatus adjusted to None
Would it make sense to fold these all into cn=monitor,cn=userroot,... That way if you mix/match bdb/lmdb (which is unlikely but ...), then we have the right monitor data in "one place" per backend? Even if we have say a single bdb env, there is not much harm in "duplicating" those stats through the various monitors.
It also means when you want to look at how a be is performing all the data you need is in a single place too which helps make it easier to see and understand the situation.
What do you think?
Would it make sense to fold these all into cn=monitor,cn=userroot,... That way if you mix/match bdb/lmdb (which is unlikely but ...), then we have the right monitor data in "one place" per backend? Even if we have say a single bdb env, there is not much harm in "duplicating" those stats through the various monitors. It also means when you want to look at how a be is performing all the data you need is in a single place too which helps make it easier to see and understand the situation. What do you think?
Yeah I think that sounds good. I don't think we can or should roll all of our monitors into a single entry, but we have way too many monitors that are scattered around and hard to find:
Server Monitors
Database related monitors
At least the Server monitors are all children of cn=monitor which makes them easy to find and search for. They should stay as is. It's the database monitors that are in need of some consolidation and organization. I agree we should just have a single monitor for each backend, and no global monitor backend monitor which is what I think you are suggesting: cn=monitor,cn=userroot,cn=ldbm database,cn=plugins,cn=config. This monitor could contain the global DB stats (non-backend stats) and that backend's stats. So yeah if there are multiple backends you would see "duplicate" global stats across each backen's monitor, but at least it's all there in a single entry. As an Admin that sounds a lot easier to deal with than having to check multiple entries.
The issue with making changes here is that it can break existing clients. So it's important to think about when and where this has to land, and the release notes/documentation. And obviously we also have to have the deal with different stats from different database types :-)
At least the Server monitors are all children of cn=monitor which makes them easy to find and search for. They should stay as is.
Yeah, no disagreement from me about that.
It's the database monitors that are in need of some consolidation and organization. I agree we should just have a single monitor for each backend, and no global monitor backend monitor which is what I think you are suggesting: cn=monitor,cn=userroot,cn=ldbm database,cn=plugins,cn=config. This monitor could contain the global DB stats (non-backend stats) and that backend's stats. So yeah if there are multiple backends you would see "duplicate" global stats across each backen's monitor, but at least it's all there in a single entry. As an Admin that sounds a lot easier to deal with than having to check multiple entries.
Yeah, that's exactly what I have in mind. Plus a lot of deployments are single backend only, so nice and easy to see everything need at once.
It's always a bit tricky, because we don't really define "what is and isn't api stable" really.
Perhaps the best way to start is a feature flag for old/new monitors so we can develop and test this sooner, than for a major version we flip the default? Then later we can remove the flag etc.
Metadata Update from @mreynolds: - Issue priority set to: major - Issue set to the milestone: 1.4.4
389-ds-base is moving from Pagure to Github. This means that new issues and pull requests will be accepted only in 389-ds-base's github repository.
This issue has been cloned to Github and is available here: - https://github.com/389ds/389-ds-base/issues/4254
If you want to receive further updates on the issue, please navigate to the github issue and click on subscribe button.
subscribe
Thank you for understanding. We apologize for all inconvenience.
Metadata Update from @spichugi: - Issue close_status updated to: wontfix - Issue status updated to: Closed (was: Open)