Нещодавно наштовхнувся на цікаву утиліту ldapctl, яка є тільки в OpenBSD і захотілося мати і собі такий функціонал. Як виявилося, все це доступно в модулі monitor.
Для початку треба перевірити, чи доступний модуль monitor:
$ slapd -VVV
...
monitor
...
Отже, переходимо власне до налаштувань. В багатьох мануалах написано, що просто додати в кінець slapd.conf:
database monitor
в конфіг і все. Але ні. І при будь-яких спробах будете отримувати помилку:
No such object (32)
Ця помилка може збити з пантелику, але вона також означає, що, можливо, ви не маєте доступу. По замовчуванню саме так, тому цей доступ треба описати, кому взагалі можна отримувати статистику:
database monitor access to * by self read by dn.children="ou=services,dc=domain,dc=com" read by * none
що означає, що лише облікові записи із OU=services будуть мати доступи до статистики.
Отже, тепер можна пробувати робити запити:
#!/bin/bash BASE="cn=Monitor" echo "Start Time:" ldapsearch -x -LLL -b "$BASE" monitorTimestamp echo "Total Requests:" ldapsearch -x -LLL -b "cn=Operations,$BASE" "(objectClass=monitorOperation)" monitorOpInitiated echo "Search Requests:" ldapsearch -x -LLL -b "cn=Search,cn=Operations,$BASE" monitorOpInitiated echo "Bind Requests:" ldapsearch -x -LLL -b "cn=Bind,cn=Operations,$BASE" monitorOpInitiated echo "Modify Requests:" ldapsearch -x -LLL -b "cn=Modify,cn=Operations,$BASE" monitorOpInitiated echo "Active Connections:" ldapsearch -x -LLL -b "cn=Connections,$BASE" monitorCounter echo "Active Searches (Initiated - Completed):" ldapsearch -x -LLL -b "cn=Search,cn=Operations,$BASE" monitorOpInitiated monitorOpCompleted
Взагалі, якщо ви помітили, то запити робляться до окремого CN=monitor, а не до “бази” dc=domain,dc=com.