Справка о источнике данных WMI
Это общее описание файла YAML расширения на основе источника данных WMI и способов объявления показателей и измерений, которые вы хотели бы собирать с помощью вашего расширения.
Вы также можете попробовать наш учебник по источнику данных WMI для пошагового руководства по созданию расширения WMI. Для получения дополнительной информации см. учебник по источнику данных WMI.
Область действия данных
Создайте список устройств, на которые вы хотите ссылаться в своем расширении, а также свойства WMI, которые вы будете использовать в качестве источника для значений метрик и измерений.
В нашем примере мы создаем простое расширение, собирающее данные о дисках и сети с устройств, отслеживаемых с помощью WMI.
| name: custom:wmi-extension
version: 0.0.1 minastromkeyVersion: '1.236' author: name: astromkey vars: - id: deviceFilter displayName: Filter type: variable wmi: - group: WMIClasses interval: minutes: 1 featureSet: basic dimensions: - key: counter.name value: Name subgroups: - subgroup: LogicalDisk wmiNamespace: root\cimv2 query: SELECT DeviceID, FreeSpace, Name, Size, DriveType FROM Win32_LogicalDisk WHERE var:deviceFilter dimensions: - key: disk.id value: column:DeviceID - key: disk.type value: column:DriveType metrics: - key: size value: column:Size type: gauge featureSet: basic - key: freeSpace value: column:FreeSpace type: gauge featureSet: basic - subgroup: Network interval: minutes: 1 wmiNamespace: root\cimv2 query: SELECT Name, MACAddress, Speed, ServiceName FROM Win32_NetworkAdapter dimensions: - key: mac value: column:MACAddress - key: service.name value: column:ServiceName metrics: - key: speed value: column:Speed type: gauge featureSet: basic |
Определение области мониторинга WMI начинается с узла YAML wmi. Все настройки в узле относятся к объявленному типу источника данных (в данном случае WMI).
WQL-запросы
Расширения WMI опираются на пространства имен WMI и их классы. Ваше расширение WMI извлекает значения измерений и метрик из свойств класса WMI с помощью запросов WQL.
Большинство классов и свойств, связанных с расширением, находятся в пространстве имен root\civm2. Чтобы узнать больше о пространствах имен и классах WMI, см. Windows Management Instrumentation в документации Microsoft.
В этом примере мы запрашиваем свойства, связанные с диском Win32_LogicalDisk, из класса (DeviceID , FreeSpace и Size) в пространстве имен root\cimv2 (определенном на уровне группы wmiNamespace) и фильтруем результаты по диску C с некоторым остатком FreeSpace. Фильтрация достигается с помощью переменной; см. конфигурацию мониторинга ниже. Затем запрашиваемые из WMI значения назначаются значениям измерений и метрик и загружаются в Ключ-АСТРОМ.
| name: custom:wmi.wql.example
version: 0.0.1 minastromkeyVersion: "1.236" author: name: astromkey vars: - id: deviceFilter displayName: Filter type: variable wmi: - group: WMIClasses featureSet: basic interval: minutes: 1 wmiNamespace: root\cimv2 query: SELECT DeviceID, FreeSpace, Size FROM Win32_LogicalDisk WHERE var:deviceFilter dimensions: - key: disk.id value: column:DeviceID metrics: - key: size value: column:Size type: gauge - key: freeSpace value: column:FreeSpace type: gauge |
Пример конфигурации мониторинга для вашего запроса WQL
В этом примере показано, как передать переменную deviceFilter, объявленную ранее в extension.yaml.
| [
{ "scope": "ag_group-my-activegate-group", "value": { "version": "1.0.0", "description": "WMI Simple", "enabled": true, "activationContext": "REMOTE", "wmiRemote": { "devices": [ { "host" : "192.168.0.1", "user" : "DOMAIN\\Administrator", "password" : "Password1" } ] }, "featureSets": ["basic"], "vars": { "deviceFilter": "DeviceID = 'C:' and FreeSpace > 0" } } } ] |
Размеры
Для каждого уровня (расширение, группа, подгруппа) можно определить до 25 измерений.
Размерный ключ
Строка ключа измерения должна соответствовать протоколу приема метрик .
Значение размера
Помимо простого указания расширению извлечь значение измерения из свойства, вы также можете использовать следующие методы:
- Извлеченное значение запроса WQL. Префикс с
column:.
| dimensions:
- key: disk.id value: column:DeviceID |
Обратите внимание, что для использования свойства в качестве значения измерения необходимо сначала запросить DeviceID в связанной группе или подгруппе.
- Обычный текст. Префикс
const:.
| dimensions:
- key: extension.owner value: const:Joe.Doe@somedomain.com |
- Переменная, определенная конфигурацией мониторинга. Префикс с
var:.
| dimensions:
- key: public_ip value: var:public_ip - key: agent_version value: var:agent_version |
- Мониторинг конфигурации — определенные сведения об устройстве, такие как IP-адрес устройства или порт. Используйте
this:device.host.
| dimensions:
- key: hostname value: this:device.host |
Используйте переменные с измерениями
Если вы хотите сделать свое измерение расширения настраиваемым с помощью данных из конфигурации мониторинга, вы можете использовать переменные, которые будут заменены значениями, переданными из конфигурации мониторинга. Чтобы использовать переменные, вы должны сначала объявить их в файле расширения YAML:
| vars:
- id: oneagent_version displayName: OneAgent version type: variable |
Затем вы можете ссылаться на них в определении измерения. Добавьте префикс имени переменной var.
| dimensions:
- key: oneagent_version value: var:agent_version |
Фильтровать извлеченные размеры
При извлечении значения измерения можно добавить логику фильтрации с помощью запросов WQL, которые приведут к отображению только тех измерений, которые соответствуют критериям фильтрации.
| query: SELECT DeviceID, FreeSpace, Size FROM Win32_LogicalDisk WHERE var:deviceFilter |
Определите фильтр как запрос в конфигурации мониторинга и передайте его расширению как переменную :
| "vars": {
"deviceFilter": "DeviceID = 'C:' and FreeSpace > 0" } |
Метрики
Для каждого уровня (расширение, группа, подгруппа) можно определить до 100 показателей.
Например:
| wmi:
- group: WMIClasses interval: minutes: 1 wmiNamespace: root\cimv2 query: SELECT DeviceID, FreeSpace, Size FROM Win32_LogicalDisk dimensions: - key: disk.id value: column:DeviceID metrics: - key: size value: column:Size type: gauge - key: freeSpace value: column:FreeSpace type: gauge |
Метрический ключ
Строка ключа метрики должна соответствовать протоколу приема метрик .
Для Ключ-АСТРОМ версий 1.215 и 1.217 метрический узел требует параметр id вместо key. Начиная с Ключ-АСТРОМ версии 1.219 рекомендуется использовать параметр key, так как id будет считаться устаревшим.
Лучшие практики для метрических ключей
Метрики, которые вы вставляете в Ключ-АСТРОМ с помощью вашего расширения, — это лишь некоторые из тысяч метрик, встроенных и пользовательских, обрабатываемых Ключ-АСТРОМ. Чтобы сделать ключи метрик уникальными и легко идентифицируемыми в Ключ-АСТРОМ, лучше всего добавлять к имени метрики префикс имени расширения. Это гарантирует уникальность ключа метрики, и вы можете легко назначить метрику определенному расширению в вашей среде.
Значение метрики
Свойство WMI, из которого вы хотите извлечь значение метрики.
Тип
Фреймворк Ключ-АСТРОМ Расширения 2.0 поддерживает метрические полезные данные в форматах gauge (gauge) или count value (count). Чтобы указать тип метрики, используйте атрибут type.
Метаданные метрики
Расширение может определять метаданные для каждой метрики, доступной в Ключ-АСТРОМ. Например, вы можете добавить отображаемое имя метрики и единицу измерения, которые можно использовать для фильтрации в Визуализации метрик.
| name: custom:example-extension-name
version: 1.0.0 minastromkeyVersion: "1.236" author: name: astromkey metrics: - key: your.metric.name metadata: displayName: Display name of the metric visible in Metrics browser unit: Count |
Набор функций
Наборы функций — это категории, в которые вы организуете данные, собранные расширением. В этом примере мы создаем расширение WMI, которое отслеживает ваши устройства и собирает метрики, связанные со статистикой транспортного протокола и дисками устройств. Это отражается в организации метрик в связанные наборы функций tcp и physicalDisks.
| wmi:
group: Network_TCP interval: minutes: 1 featureSet: tcp subgroups: - subgroup: TCPv4 query: SELECT ConnectionsActive, ConnectionsEstablished FROM Win32_PerfFormattedData_Tcpip_TCPv4 metrics: - key: com.astromkey.extension.host-observability.network.tcp.connections.active value: column:ConnectionsActive - key: com.astromkey.extension.host-observability.network.tcp.connections.established value: column:ConnectionsEstablished dimensions: - key: network.tcp.version value: const:ipv4 - key: this.device value: this:device.host - subgroup: disk query: SELECT Name, DiskBytesPersec, DiskReadBytesPersec FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk featureSet: physicalDisks metrics: - key: com.astromkey.extension.host-observability.disk.bytes.persec value: column:DiskBytesPersec - key: com.astromkey.extension.host-observability.disk.read.persec.bytes value: column:DiskReadBytesPersec dimensions: - key: disk.type value: const:Physical - key: disk.name value: column:Name - key: this.device value: this:device.host |
При активации расширения с помощью конфигурации мониторинга вы можете ограничить мониторинг одним из наборов функций. Для корректной работы расширение должно собрать как минимум одну метрику после активации.
В высокосегментированных сетях наборы функций могут отражать сегменты вашей среды. Затем, когда вы создаете конфигурацию мониторинга, вы можете выбрать набор функций и соответствующую группу ActiveGate, которая может подключаться к этому конкретному сегменту.
Все показатели, которые не отнесены ни к одному набору характеристик, считаются показателями по умолчанию и всегда включаются в отчет.
| Метрика наследует набор признаков подгруппы, которая в свою очередь наследует набор признаков группы. Кроме того, набор признаков, определенный на уровне метрики, переопределяет набор признаков, определенный на уровне подгруппы, который в свою очередь переопределяет набор признаков, определенный на уровне группы. |
Интервал
Интервал, с которым будет производиться измерение данных. Вы можете определить интервалы на уровне группы, подгруппы или индивидуальной метрики. Вы можете определить интервалы с гранулярностью в одну минуту. Максимальный интервал составляет 2880 минут (2 дня, 48 часов).
Установка интервала невозможна для источников данных JMX.
Например:
| interval:
minutes: 5 |
Вышеуказанный формат поддерживается, начиная с версии схемы 1.217. Для более ранних версий схемы используйте следующий формат (поддерживается до версии схемы 1.251):
| interval: 5m |
| wmi:
- group: Host interval: minutes: 1 query: SELECT Name, PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor metrics: - key: com.astromkey.extension.host-observability.host.cpu.time.processor value: column:PercentProcessorTime dimensions: - key: host.cpu.id value: column:Name |
Конфигурация мониторинга WMI
После определения области действия конфигурации вам необходимо определить сетевые устройства, с которых вы хотите собирать данные, а также указать АктивныеШлюзы, которые будут выполнять расширение и подключаться к вашим устройствам.
Убедитесь, что все АктивныеШлюзы из группы АктивногоШлюза, которую вы определите как область, могут подключаться к соответствующему источнику данных. Вы можете назначить АктивныйШлюз группе во время или после установки.
Конфигурация мониторинга — это полезная нагрузка JSON, определяющая детали соединения, учетные данные и наборы функций, которые вы хотите отслеживать.
Пример полезной нагрузки для активации расширения WMI:
| [
{ "scope": "ag_group-ActiveGate-group-name", "value": { "version": "1.0.0", "description": "WMI Simple", "enabled": true, "activationContext": "REMOTE", "wmiRemote": { "devices": [ { "host" : "192.168.0.1", "user" : "DOMAIN\\Administrator", "password" : "Password1" } ] }, "featureSets": ["basic"], "vars": { "deviceFilter": "DeviceID = 'C:' and FreeSpace > 0" } } } ] |
Когда у вас будет готово начальное расширение YAML, упакуйте его, подпишите и загрузите в среду Ключ-АСТРОМ. Подробности см. в разделе Управление жизненным циклом расширения.
Мастер активации расширения на базе Ключ-АСТРОМ содержит динамически обновляемую полезную нагрузку JSON с вашей конфигурацией мониторинга.
Затем вы можете использовать API Ключ-АСТРОМ для загрузки схемы для вашего расширения, которая поможет вам создать полезную нагрузку JSON для вашей конфигурации мониторинга.
Используйте конечную точку схемы расширения GET .
Отправьте следующий запрос:
| curl -X GET "{env-id}.live.astromkey.com/api/v2/extensions/{extension-name}/{extension-version}/schema" \
-H "accept: application/json; charset=utf-8" \ -H "Authorization: Api-Token {api-token}" |
Обязательно замените {extension-name} и {extension-version} значениями из вашего файла расширения YAML. Успешный вызов возвращает схему JSON.
Применение
Обратите внимание, что каждый хост ЕдиногоАгента или АктивногоШлюза, на котором запущено ваше расширение, нуждается в корневом сертификате для проверки подлинности вашего расширения.
Удаленное расширение
Для удаленного расширения областью действия является группа АктивногоШлюза, которая будет выполнять расширение. Только один АктивныйШлюз из группы будет запускать эту конфигурацию мониторинга. Если вы планируете использовать один АктивныйШлюз, назначьте его выделенной группе. Вы можете назначить АктивныйШлюз группе во время или после установки.
При определении группы АктивногоШлюза используйте следующий формат:
| "scope": "ag_group-<ActiveGate-group-name>", |
Замените <ActiveGate-group-name> фактическим именем.
Локальное расширение
Для локального расширения областью действия является хост, группа хостов, зона управления или среда, для которой вы будете выполнять расширение.
- При определении хоста в качестве области действия используйте следующий формат:
"scope": "<HOST_ID>",
Замените<HOST_ID>идентификатором сущности хоста, как в этом примере:"scope": "HOST-A1B2345678C9D001", - При определении группы хостов в качестве области действия используйте следующий формат:
"scope": "HOST_GROUP-<HOST_GROUP_ID>",
Замените<HOST_GROUP_ID>идентификатором сущности группы хостов, как в этом примере:"scope": "HOST_GROUP-AB123C4D567E890",Идентификатор группы хостов можно найти в URL-адресе страницы настроек группы хостов . Например:https://{your-environment-id}.live.astromkey.com/#settings/hostgroupconfiguration;id=HOST_GROUP-AB123C4D567E890;hostGroupName=my-host-group - При определении менеджмет-зоны в качестве области действия используйте следующий формат:
"scope": "management_zone-<MANAGEMENT-ZONE>",
Замените<MANAGEMENT-ZONE>на имя менеджмет-зоны, как в этом примере:"scope": "management_zone-sampleManagementZone", - При определении среды в качестве области действия используйте следующий формат:
"scope": "environment",
Вы также можете добавить теги для фильтрации хостов, на которых будет работать эта конфигурация:"activationTags": ["dt.owner:lama"]
Версия
Версия этой конфигурации мониторинга. Обратите внимание, что одно расширение может запускать несколько конфигураций мониторинга.
Описание
Понятное для человека описание особенностей данной конфигурации мониторинга.
Включение
Если установлено значение true, конфигурация активируется, и Ключ-АСТРОМ немедленно начинает мониторинг.
Контекст активации
Установите activationContext на значение REMOTE для удаленных расширений и на значение LOCAL для локальных расширений.
Устройства
Только удаленные расширения.
Вы можете определить до 100 устройств в одной конфигурации мониторинга в разделе wmiRemote. Чтобы определить устройство, добавьте следующие данные:
- Хост
- Учетные данные аутентификации
Аутентификация
Только удаленные расширения.
Данные аутентификации, передаваемые в API Ключ-АСТРОМ при активации конфигурации мониторинга, запутаны, и их невозможно получить.
При аутентификации вашего расширения на хосте Windows применяются общие концепции управления пользователями Windows. Если АктивныйШлюз, на котором запущено расширение, находится в том же домене, вам нужно указать только имя пользователя и пароль. Вы также можете указать домен, но не забудьте экранировать обратную косую черту (\).
Например:
| "devices": [
{ "host" : "172.18.147.100", "user" : ".\\WMIUser", "password" : "SomePassword" }, { "host" : "exchange.lab.astromkey.org", "user" : "Exchange-Domain\\WMIUser", "password" : "SomePassword2" } ] |
Мы рекомендуем вам создать специальную локальную группу пользователей или учетную запись пользователя на целевом компьютере специально для удаленных подключений.
Наборы функций
Добавьте список наборов функций, которые вы хотите отслеживать. Чтобы сообщить обо всех наборах функций, добавьте all.
| "featureSets": [
"basic", "advanced" ] |
Переменные
Если ваше расширение объявляет переменные, вы можете определить значения, которые будут переданы в качестве фильтров или простых строк в ваше расширение.
| "vars": {
"mailboxName": "win-4u1vg1uqvla", "deviceFilter": "DeviceID = 'C:'", "ipFilter" : "DNSDomain='home'" } |