20. Мониторинг
slapd(8) поддерживает опциональный интерфейс мониторинга
При включенном интерфейсе мониторинга для доступа к информации, предоставляемой механизмом манипуляции данными monitor, можно использовать клиенты LDAP. На данную информацию может налагаться контроль доступа и другие виды контроля.
Во включенном состоянии механизм monitor в ответ на поисковые запросы к поддереву cn=Monitor динамически создаёт и возвращает объекты. Каждый объект содержит информацию о конкретном аспекте сервера. Эта информация содержится в комбинации пользовательских и операционных атрибутов. Доступ к данной информации можно осуществить с помощью ldapsearch(1), любого LDAP-браузера общего назначения или с помощью специализированных инструментов мониторинга. В подразделе Доступ к информации мониторинга дано краткое руководство по использованию ldapsearch(1) для доступа к информации мониторинга, а в подразделе Информация мониторинга детально описывается информационная база мониторинга и её организация.
Хотя поддержка механизма манипуляции данными monitor включена в сборку slapd(8) по умолчанию, для её активации требуется произвести некоторые настройки. Это может быть сделано как при использовании cn=config, так и при использовании slapd.conf(5). Первый вариант обсуждается в подразделе Настройка мониторинга при использовании cn=config(5) этого раздела. Второй вариант - в подразделе Настройка мониторинга при использовании slapd.conf(5) этого раздела. В этих подразделах подразумевается, что механизм monitor вкомпилирован в slapd (то есть при запуске configure была указана опция --enable-monitor=yes, что является значением по умолчанию). Если же механизм monitor был собран как модуль (то есть при запуске configure была указана опция --enable-monitor=mod), данный модуль должен быть загружен. Загрузка модулей обсуждается в разделах Настройка slapd и Конфигурационный файл slapd.
20.1. Настройка мониторинга при использовании cn=config(5)
Этот раздел еще не написан.
20.2. Настройка мониторинга при использовании slapd.conf(5)
Настройка поддержки мониторинга LDAP через slapd.conf(5) достаточно проста.
Во-первых, убедитесь, что файл набора схемы core.schema подключен в Вашем файле slapd.conf(5). Это требуется для механизма манипуляции данными monitor.
Во-вторых, инициализируйте monitor backend добавлением директивы database monitor ниже Ваших существующих секций баз данных. Например:
database monitor
Наконец, добавьте дополнительные глобальные директивы или директивы базы данных по мере необходимости.
Как и большинство других баз данных, базы данных механизма манипуляции данными monitor подлежат контролю доступа и другим видам административного контроля slapd(8). Поскольку некоторую часть информации мониторинга нежелательно выносить на всеобщее обозрение, в общем случае рекомендуется предоставить доступ к cn=monitor только администраторам каталога и их уполномоченным по мониторингу. Добавление директивы access непосредственно за директивой database monitor - простой и эффективный подход для управления доступом. Например, добавление следующей директивы access непосредственно за директивой database monitor ограничивает доступ всем, за исключением указанного менеджера каталога.
access to * by dn.exact="cn=Manager,dc=example,dc=com by * none
Дополнительную информацию по настройке контроля доступа в slapd(8) можно найти в подразделе Директива access раздела Конфигурационный файл slapd и в man-странице slapd.access(5).
После перезапуска slapd(8) Вы можете приступить к изучению информации мониторинга, представленной в cn=Monitor, как описано в подразделе Доступ к информации мониторинга данного раздела.
Можно убедиться в том, что slapd(8) правильно настроен на предоставление информации мониторинга, попытавшись прочитать объект cn=monitor. Например, если следующая команда ldapsearch(1) возвратит объект cn=monitor (без атрибутов, как и было запрошено), значит всё работает.
ldapsearch -x -D 'cn=Manager,dc=example,dc=com' -W \ -b 'cn=Monitor' -s base 1.1
Обратите внимание, что в отличие от баз данных механизмов манипуляции данными общего назначения, в данном случае суффикс базы данных назначен жёстко. Это всегда cn=Monitor. Поэтому не нужно указывать директиву suffix. Кроме того, механизм monitor не может быть инициирован несколько раз. Поэтому в конфигурации сервера может быть только одно (или ноль) вхождений database monitor.
20.3. Доступ к информации мониторинга
Как уже было сказано, во включенном состоянии механизм monitor динамически создаёт и возвращает объекты в ответ на поисковый запрос к поддереву cn=Monitor. Каждый объект содержит информацию о конкретном аспекте сервера. Эта информация содержится в комбинации пользовательских и операционных атрибутов. Доступ к данной информации можно осуществить с помощью ldapsearch(1), любого LDAP-браузера общего назначения или с помощью специализированных инструментов мониторинга.
Этот раздел содержит краткое руководство по использованию ldapsearch(1) для доступа к информации мониторинга.
Для просмотра какого-либо конкретного объекта мониторинга нужно выполнить операцию поиска данного объекта с диапазоном baseObject и фильтром (objectClass=*). Поскольку информация мониторинга содержится в комбинации пользовательских и операционных атрибутов, требуется запросить все пользовательские ('*') и все операционные ('+') атрибуты. Например, чтобы прочитать сам объект cn=Monitor, выполните такую команду ldapsearch(1) (с изменениями в соответствии с Вашей конфигурацией):
ldapsearch -x -D 'cn=Manager,dc=example,dc=com' -W \ -b 'cn=Monitor' -s base '(objectClass=*)' '*' '+'
При запуске на Вашем сервере такая команда выдаст что-то вроде этого:
dn: cn=Monitor objectClass: monitorServer structuralObjectClass: monitorServer cn: Monitor creatorsName: modifiersName: createTimestamp: 20061208223558Z modifyTimestamp: 20061208223558Z description: This subtree contains monitoring/managing objects. description: This object contains information about this server. description: Most of the information is held in operational attributes, which must be explicitly requested. monitoredInfo: OpenLDAP: slapd 2.4 (Dec 7 2006 17:30:29) entryDN: cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: TRUE
Если в данный момент Вас не интересуют сразу все атрибуты, можно уменьшить их число, указав при запросе, какие атрибуты должны быть возвращены. Например, вместо вывода всех пользовательских и операционных атрибутов, можно запросить все атрибуты, разрешённые объектным классом monitorServer (@monitorServer):
ldapsearch -x -D 'cn=Manager,dc=example,dc=com' -W \ -b 'cn=Monitor' -s base '(objectClass=*)' '@monitorServer'
Это ограничит вывод следующими строками:
dn: cn=Monitor objectClass: monitorServer cn: Monitor description: This subtree contains monitoring/managing objects. description: This object contains information about this server. description: Most of the information is held in operational attributes, which must be explicitly requested. monitoredInfo: OpenLDAP: slapd 2.X (Dec 7 2006 17:30:29)
Чтобы вернуть имена всех объектов мониторинга, нужно выполнить поиск cn=Monitor с диапазоном sub и фильтром (objectClass=*) и запросить, чтобы атрибуты не возвращались (1.1):
ldapsearch -x -D 'cn=Manager,dc=example,dc=com' -W -b 'cn=Monitor' -s sub 1.1
При выполнении этой команды Вы обнаружите, что в поддереве cn=Monitor есть много объектов. В следующем подразделе описано несколько объектов мониторинга, к которым обычно осуществляется доступ.
20.4. Информация мониторинга
Механизм манипуляции данными monitor предоставляет огромное количество полезной для мониторинга slapd(8) информации, содержащейся в наборе объектов мониторинга. Каждый объект содержит информацию о конкретных аспектах сервера, таких как механизмы манипуляции данными, соединения или потоки. Некоторые объекты служат контейнерами для других объектов и используются для создания иерархии объектов.
Корневой объект в этой иерархии - cn=Monitor. Хотя этот объект в первую очередь служит контейнером для других объектов, большинство из которых также являются контейнерами, он содержит информацию о данном сервере. В частности, он предоставляет информацию о версии slapd(8). Например:
dn: cn=Monitor monitoredInfo: OpenLDAP: slapd 2.X (Dec 7 2006 17:30:29)
Примечание: Примеры в данном подразделе (и его подразделах) были обрезаны, чтобы показать только ключевую информацию.
20.4.1. Backends
Сам объект cn=Backends,cn=Monitor предоставляет список доступных механизмов манипуляции данными. В этот список входят как вкомпилированные, так и загружаемые в виде модулей механизмы манипуляции данными. Например:
dn: cn=Backends,cn=Monitor monitoredInfo: config monitoredInfo: ldif monitoredInfo: monitor monitoredInfo: bdb monitoredInfo: hdb
В данном примере доступны механизмы config, ldif, monitor, bdb и hdb.
Объект cn=Backends,cn=Monitor также является контейнером для объектов доступных механизмов манипуляции данными. Каждый объект доступного механизма содержит информацию о конкретном объекте механизма манипуляции данными. Например:
dn: cn=Backend 0,cn=Backends,cn=Monitor monitoredInfo: config monitorRuntimeConfig: TRUE supportedControl: 2.16.840.1.113730.3.4.2 seeAlso: cn=Database 0,cn=Databases,cn=Monitor dn: cn=Backend 1,cn=Backends,cn=Monitor monitoredInfo: ldif monitorRuntimeConfig: TRUE supportedControl: 2.16.840.1.113730.3.4.2 dn: cn=Backend 2,cn=Backends,cn=Monitor monitoredInfo: monitor monitorRuntimeConfig: TRUE supportedControl: 2.16.840.1.113730.3.4.2 seeAlso: cn=Database 2,cn=Databases,cn=Monitor dn: cn=Backend 3,cn=Backends,cn=Monitor monitoredInfo: bdb monitorRuntimeConfig: TRUE supportedControl: 1.3.6.1.1.12 supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 1.3.6.1.4.1.4203.666.5.2 supportedControl: 1.2.840.113556.1.4.319 supportedControl: 1.3.6.1.1.13.1 supportedControl: 1.3.6.1.1.13.2 supportedControl: 1.3.6.1.4.1.4203.1.10.1 supportedControl: 1.2.840.113556.1.4.1413 supportedControl: 1.3.6.1.4.1.4203.666.11.7.2 seeAlso: cn=Database 1,cn=Databases,cn=Monitor dn: cn=Backend 4,cn=Backends,cn=Monitor monitoredInfo: hdb monitorRuntimeConfig: TRUE supportedControl: 1.3.6.1.1.12 supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 1.3.6.1.4.1.4203.666.5.2 supportedControl: 1.2.840.113556.1.4.319 supportedControl: 1.3.6.1.1.13.1 supportedControl: 1.3.6.1.1.13.2 supportedControl: 1.3.6.1.4.1.4203.1.10.1 supportedControl: 1.2.840.113556.1.4.1413 supportedControl: 1.3.6.1.4.1.4203.666.11.7.2
Для каждого из этих объектов атрибут monitorInfo указывает, сведения о каком механизме манипуляции данными содержится в данном объекте. Например, объект cn=Backend 3,cn=Backends,cn=Monitor в данном примере содержит информацию о механизме bdb.
Атрибут | Описание |
monitoredInfo | название механизма манипуляции данными |
supportedControl | поддерживаемые расширения элементов управления LDAP |
seeAlso | Объекты базы данных, являющиеся экземплярами этого механизма манипуляции данными |
20.4.2. Connections
Основная запись пуста; она должна содержать некоторые статистические данные о количестве соединений.
Динамические дочерние записи создаются для каждого открытого соединения и содержат статистические данные по активности этого соединения (формат будет подробно описан позже). Существуют две специальные дочерние записи, показывающие соответственно общее количество соединений и количество текущих соединений.
Пример:
Всего соединений:
dn: cn=Total,cn=Connections,cn=Monitor structuralObjectClass: monitorCounterObject monitorCounter: 4 entryDN: cn=Total,cn=Connections,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: FALSE
Текущие соединения:
dn: cn=Current,cn=Connections,cn=Monitor structuralObjectClass: monitorCounterObject monitorCounter: 2 entryDN: cn=Current,cn=Connections,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: FALSE
20.4.3. Databases
Основная запись содержит контексты именования всех настроенных баз данных; дочерние записи содержат тип и контекст именования для каждой отдельной базы данных.
Пример:
dn: cn=Database 2,cn=Databases,cn=Monitor structuralObjectClass: monitoredObject monitoredInfo: monitor monitorIsShadow: FALSE monitorContext: cn=Monitor readOnly: FALSE entryDN: cn=Database 2,cn=Databases,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: FALSE
20.4.4. Listener
Содержит описание интерфейсов, на которых сервер в данный момент ожидает соединения:
dn: cn=Listener 0,cn=Listeners,cn=Monitor structuralObjectClass: monitoredObject monitorConnectionLocalAddress: IP=0.0.0.0:389 entryDN: cn=Listener 0,cn=Listeners,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: FALSE
20.4.5. Log
Содержит активные в настоящее время элементы журнала. Подсистема Log позволяет пользователям выполнять операции модификации атрибута description, значения которого ДОЛЖНЫ быть из списка допустимых уровней журналирования:
Trace Packets Args Conns BER Filter Config ACL Stats Stats2 Shell Parse Sync
Эти значения могут быть добавлены, заменены или удалены; они влияют на то, какие сообщения будут посылаться системе syslog. Для разных модулей могут задаваться разные настройки.
20.4.6. Operations
Показывает некоторые статистические данные по операциям, выполняемым сервером:
Initiated Completed
для каждого типа операций, а именно:
Bind Unbind Add Delete Modrdn Modify Compare Search Abandon Extended
Для разных типов операций выходные данные отличаются друг от друга, поэтому примеры тут не приводятся. Попробуйте сделать запросы самостоятельно по инструкциям из подраздела Доступ к информации мониторинга.
20.4.7. Overlays
Основная запись содержит типы наложений, доступных во время исполнения; дочерние записи для каждого наложения содержат тип наложения.
Также в основной записи могут содержаться загруженные модули, если включена поддержка динамических наложений:
# Overlays, Monitor dn: cn=Overlays,cn=Monitor structuralObjectClass: monitorContainer monitoredInfo: syncprov monitoredInfo: accesslog monitoredInfo: glue entryDN: cn=Overlays,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: TRUE
20.4.8. SASL
В настоящий момент запись пуста.
20.4.9. Statistics
Показывает некоторую статистику по данным, отправляемым сервером:
Bytes PDU Entries Referrals
Пример:
# Entries, Statistics, Monitor dn: cn=Entries,cn=Statistics,cn=Monitor structuralObjectClass: monitorCounterObject monitorCounter: 612248 entryDN: cn=Entries,cn=Statistics,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: FALSE
20.4.10. Threads
Содержит максимальное количество потоков, включенных во время запуска, и текущую загруженность.
Пример:
# Max, Threads, Monitor dn: cn=Max,cn=Threads,cn=Monitor structuralObjectClass: monitoredObject monitoredInfo: 16 entryDN: cn=Max,cn=Threads,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: FALSE
20.4.11. Time
Содержит две дочерние записи со временем запуска сервера и текущим временем сервера.
Пример:
Время запуска:
dn: cn=Start,cn=Time,cn=Monitor structuralObjectClass: monitoredObject monitorTimestamp: 20061205124040Z entryDN: cn=Start,cn=Time,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: FALSE
Текущее время:
dn: cn=Current,cn=Time,cn=Monitor structuralObjectClass: monitoredObject monitorTimestamp: 20061207120624Z entryDN: cn=Current,cn=Time,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: FALSE
20.4.12. TLS
В настоящий момент запись пуста.
20.4.13. Waiters
Содержит число текущих ожидающих обработки запросов.
Пример:
Ожидающие обработки запросы на чтение:
dn: cn=Read,cn=Waiters,cn=Monitor structuralObjectClass: monitorCounterObject monitorCounter: 7 entryDN: cn=Read,cn=Waiters,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: FALSE
Ожидающие обработки запросы на запись:
dn: cn=Write,cn=Waiters,cn=Monitor structuralObjectClass: monitorCounterObject monitorCounter: 0 entryDN: cn=Write,cn=Waiters,cn=Monitor subschemaSubentry: cn=Subschema hasSubordinates: FALSE
Сюда следует добавить новые позиции мониторинга, их описание, ссылки на man-страницы и примеры выходных данных.