<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%BE_%D0%B8%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_SQL</id>
	<title>Справка о источнике данных SQL - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%BE_%D0%B8%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_SQL"/>
	<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%BE_%D0%B8%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_SQL&amp;action=history"/>
	<updated>2026-04-13T15:57:14Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://doc.ruscomtech.ru/index.php?title=%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%BE_%D0%B8%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_SQL&amp;diff=5359&amp;oldid=prev</id>
		<title>IKuznetsov: Новая страница: «Это общее описание файла расширения '''YAML''' на основе источника данных '''SQL''' и способов об...»</title>
		<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%BE_%D0%B8%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_SQL&amp;diff=5359&amp;oldid=prev"/>
		<updated>2025-06-24T21:49:52Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Это общее описание файла расширения &amp;#039;&amp;#039;&amp;#039;YAML&amp;#039;&amp;#039;&amp;#039; на основе источника данных &amp;#039;&amp;#039;&amp;#039;SQL&amp;#039;&amp;#039;&amp;#039; и способов об...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Это общее описание файла расширения '''YAML''' на основе источника данных '''SQL''' и способов объявления показателей и измерений, которые вы хотели бы собирать с помощью своего расширения.&lt;br /&gt;
&lt;br /&gt;
== Безопасность расширения ==&lt;br /&gt;
Хотя фреймворк '''Расширения 2.0''' безопасен, безопасность ваших расширений также зависит от того, как вы их разрабатываете и управляете ими в среде Ключ-АСТРОМ.&lt;br /&gt;
&lt;br /&gt;
При разработке пользовательских расширений '''SQL''' мы рекомендуем следующее:&lt;br /&gt;
&lt;br /&gt;
* Используйте выделенного пользователя базы данных с правами только на чтение в конфигурации мониторинга, чтобы предотвратить любые непреднамеренные изменения в вашей базе данных. Пользователю не должны быть предоставлены привилегии администратора или системы.&lt;br /&gt;
&lt;br /&gt;
=== Контроль безопасности ===&lt;br /&gt;
&lt;br /&gt;
* Доступны только запросы &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt;&lt;br /&gt;
** Запросы '''MySQL''' также могут начинаться с &amp;lt;code&amp;gt;SHOW GLOBAL STATUS&amp;lt;/code&amp;gt;&lt;br /&gt;
* Одновременно может быть выполнен только один запрос.&lt;br /&gt;
* Запросы, содержащие комментарии, отклоняются.&lt;br /&gt;
* Для предотвращения нарушений целостности данных (манипулирования, изменения или удаления данных) источник данных '''SQL''' выполняет запросы в откатных транзакциях. По этой причине базы данных, не поддерживающие транзакции, не поддерживаются в качестве источника данных '''SQL'''.&lt;br /&gt;
* Убедитесь, что строка подключения, используемая в конфигурации мониторинга '''JDBC''', не раскрывает никаких конфиденциальных данных.&lt;br /&gt;
&lt;br /&gt;
== Область действия данных ==&lt;br /&gt;
Создайте перечень данных, которые вы хотите запросить из своей базы данных в качестве источника значений показателей и измерений.&lt;br /&gt;
&lt;br /&gt;
В нашем примере мы создаем простое расширение, собирающее основные данные о производительности '''ЦП''' из базы данных '''Oracle'''.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|name: com.astromkey.extension.sql-oracle&lt;br /&gt;
&lt;br /&gt;
version: 1.0&lt;br /&gt;
&lt;br /&gt;
minastromkeyVersion: '1.239'&lt;br /&gt;
&lt;br /&gt;
author:&lt;br /&gt;
&lt;br /&gt;
  name: astromkey&lt;br /&gt;
&lt;br /&gt;
sqlOracle:&lt;br /&gt;
&lt;br /&gt;
  - group: Number of CPU cores&lt;br /&gt;
&lt;br /&gt;
    featureSet: cpu&lt;br /&gt;
&lt;br /&gt;
    query: &amp;gt;&lt;br /&gt;
&lt;br /&gt;
      SELECT value AS cpu_count&lt;br /&gt;
&lt;br /&gt;
      FROM v$parameter&lt;br /&gt;
&lt;br /&gt;
      WHERE name = 'cpu_count'&lt;br /&gt;
&lt;br /&gt;
    metrics:&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.cores&lt;br /&gt;
&lt;br /&gt;
        value: col:cpu_count&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
&lt;br /&gt;
  - group: Background CPU Usage Per CPU Per Sec&lt;br /&gt;
&lt;br /&gt;
    featureSet: cpu&lt;br /&gt;
&lt;br /&gt;
    query: &amp;gt;&lt;br /&gt;
&lt;br /&gt;
      SELECT&lt;br /&gt;
&lt;br /&gt;
             DECODE(metric_name, 'Background CPU Usage Per Sec',&lt;br /&gt;
&lt;br /&gt;
                 v$metric.value) AS background_cpu_usage,&lt;br /&gt;
&lt;br /&gt;
             DECODE(metric_name, 'CPU Usage Per Sec',&lt;br /&gt;
&lt;br /&gt;
                    v$metric.value) AS foreground_cpu_usage,&lt;br /&gt;
&lt;br /&gt;
             DECODE(metric_name, 'Host CPU Usage Per Sec',&lt;br /&gt;
&lt;br /&gt;
                    v$metric.value) AS host_cpu_usage&lt;br /&gt;
&lt;br /&gt;
      FROM v$metric,&lt;br /&gt;
&lt;br /&gt;
           v$metricgroup&lt;br /&gt;
&lt;br /&gt;
      WHERE v$metric.group_id = v$metricgroup.group_id&lt;br /&gt;
&lt;br /&gt;
        AND v$metric.metric_name IN ('Background CPU Usage Per Sec',&lt;br /&gt;
&lt;br /&gt;
                                     'CPU Usage Per Sec', 'Host CPU Usage Per Sec')&lt;br /&gt;
&lt;br /&gt;
    metrics:&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.backgroundTotal&lt;br /&gt;
&lt;br /&gt;
        value: col:background_cpu_usage&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.foregroundTotal&lt;br /&gt;
&lt;br /&gt;
        value: col:foreground_cpu_usage&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.hostTotal&lt;br /&gt;
&lt;br /&gt;
        value: col:host_cpu_usage&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
|}&lt;br /&gt;
В зависимости от поставщика определение области мониторинга '''SQL''' начинается с выделенного узла '''YAML'''. Для '''Oracle Database''' это &amp;lt;code&amp;gt;sqloracle&amp;lt;/code&amp;gt;. Все настройки под узлом относятся к объявленному типу источника данных (в данном случае '''SQL''').&lt;br /&gt;
&lt;br /&gt;
== JDBC-коннектор ==&lt;br /&gt;
Источник данных '''SQL''' Ключ-АСТРОМ Расширения позволяет вам запрашивать любую базу данных, допускающую соединения с использованием драйвера '''JDBC''' поверх всех поставщиков баз данных, поддерживаемых по умолчанию. Для таких баз данных требуются некоторые дополнительные шаги.&lt;br /&gt;
&lt;br /&gt;
=== Объявите соединение JDBC в файле расширения YAML ===&lt;br /&gt;
&lt;br /&gt;
# Начните определение расширения с узла &amp;lt;code&amp;gt;jdbc&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Объявите имя класса драйвера. Например &amp;lt;code&amp;gt;org.mariadb.jdbc.Driver&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Укажите шаблон для строки подключения и сообщения проверки. Они будут использоваться для проверки строки подключения, предоставленной пользователем в конфигурации мониторинга.&lt;br /&gt;
# Укажите самый простой запрос, который расширение выполнит для проверки подключения.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|jdbc:&lt;br /&gt;
&lt;br /&gt;
  driverClassName: “org.mariadb.jdbc.Driver”&lt;br /&gt;
&lt;br /&gt;
  connectionStringPattern: “jdbc:mariadb:(. |\\s)+$&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  connectionStringPatternErrorMessage: “This isn't a correct connection string, please start with jdbc:mariadb.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  validationQuery: “SELECT 1”&lt;br /&gt;
|}&lt;br /&gt;
Пользователям, запускающим ваше расширение, также необходимо загрузить соответствующий драйвер '''JDBC''' на АктивныйШлюз, принадлежащий группе, назначенной для запуска вашего расширения. &lt;br /&gt;
&lt;br /&gt;
== SQL-запросы ==&lt;br /&gt;
Расширения '''SQL''' полагаются на запросы '''SQL'''. Запросы, объявленные в вашем расширении, извлекают значения для ваших метрик и измерений.&lt;br /&gt;
&lt;br /&gt;
Например, следующий '''SQL'''-запрос возвращает количество ядер '''ЦП'''.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|SELECT value AS cpu_count&lt;br /&gt;
&lt;br /&gt;
FROM v$parameter&lt;br /&gt;
&lt;br /&gt;
WHERE name = 'cpu_count'&lt;br /&gt;
|}&lt;br /&gt;
Вы можете использовать его в своем расширении и сообщать значение, возвращаемое запросом &amp;lt;code&amp;gt;com.astromkey.extension.sql-oracle.cpu.cores&amp;lt;/code&amp;gt;, в качестве метрики в Ключ-АСТРОМ.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|sqlOracle:&lt;br /&gt;
  - group: Number of CPU cores&lt;br /&gt;
&lt;br /&gt;
    featureSet: cpu&lt;br /&gt;
&lt;br /&gt;
    query:&lt;br /&gt;
&lt;br /&gt;
      SELECT value AS cpu_count&lt;br /&gt;
&lt;br /&gt;
      FROM v$parameter&lt;br /&gt;
&lt;br /&gt;
      WHERE name = 'cpu_count'&lt;br /&gt;
&lt;br /&gt;
    metrics:&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.cores&lt;br /&gt;
&lt;br /&gt;
        value: col:cpu_count&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
|}&lt;br /&gt;
По соображениям безопасности источник данных поддерживает только подмножество языка '''SQL'''. Подробнее см. в разделе '''Управление безопасностью''' (ниже).&lt;br /&gt;
&lt;br /&gt;
== Частота запроса ==&lt;br /&gt;
Вы можете задать частоту, с которой будет запрашиваться поставщик базы данных. Если вы не зададите, поставщик базы данных будет запрашиваться каждую минуту по умолчанию.&lt;br /&gt;
&lt;br /&gt;
Вы можете использовать одно из двух исключительных свойств для управления тем, когда запрашивается поставщик базы данных, &amp;lt;code&amp;gt;interval&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;schedule&amp;lt;/code&amp;gt;. Вы можете определить его на уровне группы или подгруппы.&lt;br /&gt;
&lt;br /&gt;
=== Интервал ===&lt;br /&gt;
'''&amp;lt;u&amp;gt;АктивныйШлюз версии 1.253+&amp;lt;/u&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Значение интервала принимает целочисленное значение, выражающее минуты. Например, чтобы запрашивать поставщика базы данных каждые '''10 минут''', добавьте следующую запись:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|sqlOracle:&lt;br /&gt;
&lt;br /&gt;
  - group: Number of CPU cores&lt;br /&gt;
&lt;br /&gt;
    featureSet: cpu&lt;br /&gt;
&lt;br /&gt;
    interval:&lt;br /&gt;
&lt;br /&gt;
      minutes: 10&lt;br /&gt;
&lt;br /&gt;
    query:&lt;br /&gt;
&lt;br /&gt;
      SELECT value AS cpu_count&lt;br /&gt;
&lt;br /&gt;
      FROM v$parameter&lt;br /&gt;
&lt;br /&gt;
      WHERE name = 'cpu_count'&lt;br /&gt;
&lt;br /&gt;
    metrics:&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.cores&lt;br /&gt;
&lt;br /&gt;
        value: col:cpu_count&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Расписание ===&lt;br /&gt;
'''&amp;lt;u&amp;gt;АктивныйШлюз версии 1.301+&amp;lt;/u&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Вы можете использовать выражение cron для отправки запросов поставщику базы данных, используя расписание по вашему выбору.&lt;br /&gt;
&lt;br /&gt;
Выражение должно соответствовать формату '''cron Unix''':&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# * * * * *&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; | | | | |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; | | | | day of the week (1–7) (Sunday to Saturday)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; | | | month (1–12)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; | | day of the month (1–31)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; | hour (0–23)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; minute (0–59)&lt;br /&gt;
|}&lt;br /&gt;
Значения также поддерживают списки (&amp;lt;code&amp;gt;1,2,3,4&amp;lt;/code&amp;gt;), шаги (&amp;lt;code&amp;gt;0-23/2&amp;lt;/code&amp;gt;) и диапазоны (&amp;lt;code&amp;gt;2-5&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Формат не поддерживает указание одновременно значения дня недели и дня месяца. В одном из этих полей необходимо использовать символ ''''?'''&amp;lt;nowiki/&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
Например, чтобы выполнить запрос в 12:00 каждого буднего дня (с понедельника по пятницу), используйте следующую запись:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|sqlOracle:&lt;br /&gt;
&lt;br /&gt;
  - group: Number of CPU cores&lt;br /&gt;
&lt;br /&gt;
    featureSet: cpu&lt;br /&gt;
&lt;br /&gt;
    schedule: &amp;quot;0 12 ? * 2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    query:&lt;br /&gt;
&lt;br /&gt;
      SELECT value AS cpu_count&lt;br /&gt;
&lt;br /&gt;
      FROM v$parameter&lt;br /&gt;
&lt;br /&gt;
      WHERE name = 'cpu_count'&lt;br /&gt;
&lt;br /&gt;
    metrics:&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.cores&lt;br /&gt;
&lt;br /&gt;
        value: col:cpu_count&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Позвольте пользователям расширения контролировать частоту ===&lt;br /&gt;
'''&amp;lt;u&amp;gt;АктивныйШлюз версии 1.303+&amp;lt;/u&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Если вы хотите, чтобы пользователи вашего расширения контролировали частоту запросов к поставщику базы данных, вы можете использовать переменные вместо фиксированных значений. Пользователи смогут определить значение переменной при активации расширений.&lt;br /&gt;
&lt;br /&gt;
Обязательно подробно опишите контекст переменной, чтобы пользователи понимали, как правильно задать значение переменной. Вы также можете задать шаблон, чтобы помочь пользователям проверять свои записи.&lt;br /&gt;
&lt;br /&gt;
Например, чтобы позволить пользователю контролировать интервал:&lt;br /&gt;
&lt;br /&gt;
1. Сначала объявите переменную в вашем файле расширения '''YAML'''.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|vars:&lt;br /&gt;
&lt;br /&gt;
- id: myInterval&lt;br /&gt;
&lt;br /&gt;
  displayName: Interval&lt;br /&gt;
&lt;br /&gt;
  description: Interval at which your database provider is queried in minutes. 10 minutes by default.&lt;br /&gt;
&lt;br /&gt;
  defaultValue: 10&lt;br /&gt;
&lt;br /&gt;
  pattern: ^[0-9]+$&lt;br /&gt;
&lt;br /&gt;
  type: text&lt;br /&gt;
|}&lt;br /&gt;
2. Затем укажите переменную вместо фиксированного значения в вашем файле расширения '''YAML'''.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|sqlOracle:&lt;br /&gt;
&lt;br /&gt;
  - group: Number of CPU cores&lt;br /&gt;
&lt;br /&gt;
    interval: var:myInterval&lt;br /&gt;
&lt;br /&gt;
    featureSet: cpu&lt;br /&gt;
&lt;br /&gt;
    query:&lt;br /&gt;
&lt;br /&gt;
      SELECT value AS cpu_count&lt;br /&gt;
&lt;br /&gt;
      FROM v$parameter&lt;br /&gt;
&lt;br /&gt;
      WHERE name = 'cpu_count'&lt;br /&gt;
&lt;br /&gt;
    metrics:&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.cores&lt;br /&gt;
&lt;br /&gt;
        value: col:cpu_count&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
|}&lt;br /&gt;
Дополнительную информацию об использовании переменных см. в разделе [[Расширения YAML-файла|Файл расширения YAML]].&lt;br /&gt;
&lt;br /&gt;
== Тайм-ауты ==&lt;br /&gt;
При разработке расширения можно указать значение тайм-аута для данного запроса как на уровне группы, так и на уровне подгруппы. Тайм-ауты указываются в секундах; значение по умолчанию — &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Предоставленное значение должно быть строкой, например: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;120&amp;lt;/code&amp;gt;, и т. д.&lt;br /&gt;
&lt;br /&gt;
Вы также можете использовать ссылку на переменную для указания тайм-аута. Для получения дополнительной информации об использовании переменных см. [[Расширения YAML-файла|Расширение YAML-файла]].&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|sqlOracle:&lt;br /&gt;
&lt;br /&gt;
  - group: Number of CPU cores&lt;br /&gt;
&lt;br /&gt;
    timeout: &amp;quot;20&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    featureSet: cpu&lt;br /&gt;
&lt;br /&gt;
    query: |&lt;br /&gt;
&lt;br /&gt;
      SELECT value AS cpu_count&lt;br /&gt;
&lt;br /&gt;
      FROM v$parameter&lt;br /&gt;
&lt;br /&gt;
      WHERE name = 'cpu_count'&lt;br /&gt;
&lt;br /&gt;
    metrics:&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.cores&lt;br /&gt;
&lt;br /&gt;
        value: col:cpu_count&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;u&amp;gt;Важные уточнения при установке тайм-аутов&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Указание пользовательского тайм-аута для запроса изменяет способ его выполнения источником данных. Все запросы выполняются последовательно по умолчанию, поэтому источнику данных нужно использовать только одно подключение к базе данных. При указании пользовательского тайм-аута запрос будет выполняться параллельно, открывая дополнительное подключение к базе данных. Это означает, что необходимо соблюдать осторожность при добавлении пользовательских тайм-аутов, чтобы расширение не открывало слишком много подключений.&lt;br /&gt;
&lt;br /&gt;
== Размеры ==&lt;br /&gt;
Для каждого уровня (расширение, группа, подгруппа) можно определить до '''25''' измерений.&lt;br /&gt;
&lt;br /&gt;
Подгруппа наследует измерения своей родительской группы. Чтобы обеспечить распространение данных, когда родительская группа имеет определенный запрос, подгруппа выполнит свой запрос после того, как родительская группа завершит выполнение первого запроса.&lt;br /&gt;
&lt;br /&gt;
=== Размерный ключ ===&lt;br /&gt;
Строка ключа измерения должна соответствовать протоколу приема метрик.&lt;br /&gt;
&lt;br /&gt;
=== Значение размера ===&lt;br /&gt;
Вы используете '''SQL'''-запрос для получения значения для вашего измерения (префикс с &amp;lt;code&amp;gt;col:&amp;lt;/code&amp;gt;) или используете фиксированную строку (префикс с &amp;lt;code&amp;gt;const:&amp;lt;/code&amp;gt;). Например:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|query: &amp;gt;&lt;br /&gt;
&lt;br /&gt;
  SELECT event, wait_class&lt;br /&gt;
&lt;br /&gt;
  FROM v$system_event&lt;br /&gt;
&lt;br /&gt;
dimensions:&lt;br /&gt;
&lt;br /&gt;
  - key: event&lt;br /&gt;
&lt;br /&gt;
    value: col:event&lt;br /&gt;
&lt;br /&gt;
  - key: wait_class&lt;br /&gt;
&lt;br /&gt;
    value: col:wait_class&lt;br /&gt;
&lt;br /&gt;
  - key: stage&lt;br /&gt;
&lt;br /&gt;
    value: const:dev&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Фильтровать извлеченные метрические строки ===&lt;br /&gt;
'''&amp;lt;u&amp;gt;АктивныйШлюз версии 1.311+&amp;lt;/u&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Вы можете добавить логику фильтрации на уровне измерения. Это приведет к отчету только по метрике, значение измерения которой соответствует критериям фильтрации. Если фильтры установлены для более чем одного измерения, все фильтры должны совпадать для создания строки метрики. Логика фильтрации не изменяет выполненный запрос.&lt;br /&gt;
&lt;br /&gt;
Фильтры можно задать как постоянное значение или как переменную.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|dimensions:&lt;br /&gt;
&lt;br /&gt;
  - key: event&lt;br /&gt;
&lt;br /&gt;
    value: col:event&lt;br /&gt;
&lt;br /&gt;
    filter: var:event_filter&lt;br /&gt;
&lt;br /&gt;
  - key: wait_class&lt;br /&gt;
&lt;br /&gt;
    value: col:wait_class&lt;br /&gt;
&lt;br /&gt;
    filter: const:$not(0)&lt;br /&gt;
&lt;br /&gt;
  - key: stage&lt;br /&gt;
&lt;br /&gt;
    value: const:dev&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Определите фильтр на основе условия следующим образом:&lt;br /&gt;
&lt;br /&gt;
* Начинается с – используйте определитель &amp;lt;code&amp;gt;const:$prefix&amp;lt;/code&amp;gt;. Пример: &amp;lt;code&amp;gt;filter: const:$prefix(xyz)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Заканчивается на – используйте определитель &amp;lt;code&amp;gt;const:$suffix&amp;lt;/code&amp;gt;. Пример: &amp;lt;code&amp;gt;filter: const:$suffix(xyz)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Содержит – используйте квалификатор &amp;lt;code&amp;gt;const:$contains&amp;lt;/code&amp;gt;. Пример: &amp;lt;code&amp;gt;filter: const:$contains(xyz)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Равно – используйте квалификатор &amp;lt;code&amp;gt;const:$eq&amp;lt;/code&amp;gt;. Пример: &amp;lt;code&amp;gt;filter: const:$eq(xyz)&amp;lt;/code&amp;gt;  Для выражений, упомянутых выше, вы также можете использовать определители:&lt;br /&gt;
** &amp;lt;code&amp;gt;const:$and&amp;lt;/code&amp;gt;– для соединения двух или более выражений с помощью оператора '''AND'''. Пример: &amp;lt;code&amp;gt;filter: const:$and(&amp;lt;expr1&amp;gt;,&amp;lt;expr2&amp;gt;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;const:$or&amp;lt;/code&amp;gt;– для соединения двух или более выражений с помощью оператора '''OR'''. Пример: &amp;lt;code&amp;gt;filter: const:$or(&amp;lt;expr1&amp;gt;,&amp;lt;expr2&amp;gt;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;const:$not&amp;lt;/code&amp;gt;– для '''отрицания''' выражения. Пример: &amp;lt;code&amp;gt;filter: const:$not(&amp;lt;expr&amp;gt;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Метрики ==&lt;br /&gt;
Для каждого уровня (расширение, группа, подгруппа) можно определить до '''100''' показателей.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|sqlOracle:&lt;br /&gt;
  - group: Number of CPU cores&lt;br /&gt;
&lt;br /&gt;
    featureSet: cpu&lt;br /&gt;
&lt;br /&gt;
    query:&lt;br /&gt;
&lt;br /&gt;
      SELECT value AS cpu_count&lt;br /&gt;
&lt;br /&gt;
      FROM v$parameter&lt;br /&gt;
&lt;br /&gt;
      WHERE name = 'cpu_count'&lt;br /&gt;
&lt;br /&gt;
    metrics:&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.cores&lt;br /&gt;
&lt;br /&gt;
        value: col:cpu_count&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Метрический ключ ===&lt;br /&gt;
Строка ключа метрики должна соответствовать протоколу приема метрик .&lt;br /&gt;
&lt;br /&gt;
Для Ключ-АСТРОМ версий 1.215 и 1.217 метрический узел требует параметр &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; вместо &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt;. Начиная с Ключ-АСТРОМ версии 1.219, следует использовать параметр &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt;, так как &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; будет считаться устаревшим.&lt;br /&gt;
&lt;br /&gt;
==== Лучшие практики для метрических ключей ====&lt;br /&gt;
Метрики, которые вы вставляете в Ключ-АСТРОМ с помощью вашего расширения, — это лишь некоторые из тысяч метрик, встроенных и пользовательских, обрабатываемых Ключ-АСТРОМ. Чтобы сделать ключи метрик уникальными и легко идентифицируемыми в Ключ-АСТРОМ, лучше всего добавлять к имени метрики префикс имени расширения. Это гарантирует уникальность ключа метрики, и вы можете легко назначить метрику определенному расширению в вашей среде.&lt;br /&gt;
&lt;br /&gt;
=== Значение метрики ===&lt;br /&gt;
Значение столбца, запрошенное из вашей базы данных.&lt;br /&gt;
&lt;br /&gt;
=== Тип ===&lt;br /&gt;
Фреймворк Ключ-АСТРОМ Расширения 2.0 поддерживает метрические полезные данные в форматах '''gauge''' (&amp;lt;code&amp;gt;gauge&amp;lt;/code&amp;gt;) или '''count value''' (&amp;lt;code&amp;gt;count&amp;lt;/code&amp;gt;). Чтобы указать тип метрики, используйте атрибут &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Метаданные метрики ==&lt;br /&gt;
Расширение может определять метаданные для каждой метрики, доступной в Ключ-АСТРОМ. Например, вы можете добавить отображаемое имя метрики и единицу измерения, которые можно использовать для фильтрации в Визуализации метрик.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|name: custom:example-extension-name&lt;br /&gt;
&lt;br /&gt;
version: 1.0.0&lt;br /&gt;
&lt;br /&gt;
minastromkeyVersion: &amp;quot;1.236&amp;quot;&lt;br /&gt;
&lt;br /&gt;
author:&lt;br /&gt;
&lt;br /&gt;
  name: astromkey&lt;br /&gt;
&lt;br /&gt;
metrics:&lt;br /&gt;
&lt;br /&gt;
  - key: your.metric.name&lt;br /&gt;
&lt;br /&gt;
    metadata:&lt;br /&gt;
&lt;br /&gt;
        displayName: Display name of the metric visible in Metrics browser&lt;br /&gt;
&lt;br /&gt;
        unit: Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Набор функций ==&lt;br /&gt;
Наборы функций — это категории, в которые вы организуете данные, собранные расширением. В этом примере мы создаем расширение '''Oracle SQL''', собирающее метрики, связанные с производительностью '''ЦП''' и ввода/вывода. Это отражается в организации метрик в связанные наборы функций &amp;lt;code&amp;gt;cpu&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;io&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|sqlOracle:&lt;br /&gt;
&lt;br /&gt;
  - group: Number of CPU cores&lt;br /&gt;
&lt;br /&gt;
    featureSet: cpu&lt;br /&gt;
&lt;br /&gt;
    query:&lt;br /&gt;
&lt;br /&gt;
      SELECT value AS cpu_count&lt;br /&gt;
&lt;br /&gt;
      FROM v$parameter&lt;br /&gt;
&lt;br /&gt;
      WHERE name = 'cpu_count'&lt;br /&gt;
&lt;br /&gt;
    metrics:&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.cpu.cores&lt;br /&gt;
&lt;br /&gt;
        value: col:cpu_count&lt;br /&gt;
&lt;br /&gt;
        type: gauge&lt;br /&gt;
&lt;br /&gt;
  - group: Physical read bytes&lt;br /&gt;
&lt;br /&gt;
    featureSet: io&lt;br /&gt;
&lt;br /&gt;
    query: &amp;gt;&lt;br /&gt;
&lt;br /&gt;
      SELECT&lt;br /&gt;
&lt;br /&gt;
             DECODE(name, 'physical read total bytes', value) AS bytes_written,&lt;br /&gt;
&lt;br /&gt;
             DECODE(name, 'physical write total bytes', value) AS bytes_read&lt;br /&gt;
&lt;br /&gt;
      FROM v$sysstat&lt;br /&gt;
&lt;br /&gt;
      WHERE name IN ('physical read total bytes', 'physical write total bytes')&lt;br /&gt;
&lt;br /&gt;
    metrics:&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.io.bytesRead&lt;br /&gt;
&lt;br /&gt;
        value: col:bytes_read&lt;br /&gt;
&lt;br /&gt;
        type: count&lt;br /&gt;
&lt;br /&gt;
      - key: com.astromkey.extension.sql-oracle.io.bytesWritten&lt;br /&gt;
&lt;br /&gt;
        value: col:bytes_written&lt;br /&gt;
&lt;br /&gt;
        type: count&lt;br /&gt;
|}&lt;br /&gt;
При активации расширения с помощью конфигурации мониторинга вы можете ограничить мониторинг одним из наборов функций. Для корректной работы расширение должно собрать как минимум одну метрику после активации.&lt;br /&gt;
&lt;br /&gt;
В высокосегментированных сетях наборы функций могут отражать сегменты вашей среды. Затем, когда вы создаете конфигурацию мониторинга, вы можете выбрать набор функций и соответствующую группу ActiveGate, которая может подключаться к этому конкретному сегменту.&lt;br /&gt;
&lt;br /&gt;
Все показатели, которые не отнесены ни к одному набору характеристик, считаются показателями по умолчанию и всегда включаются в отчет.&lt;br /&gt;
&lt;br /&gt;
Метрика наследует набор признаков подгруппы, которая в свою очередь наследует набор признаков группы. Кроме того, набор признаков, определенный на уровне метрики, переопределяет набор признаков, определенный на уровне подгруппы, который в свою очередь переопределяет набор признаков, определенный на уровне группы.&lt;br /&gt;
&lt;br /&gt;
== Конфигурация мониторинга Oracle SQL ==&lt;br /&gt;
После определения области действия конфигурации вам необходимо определить сетевые устройства, с которых вы хотите собирать данные, а также указать АктивныйШлюз, которые будут выполнять расширение и подключаться к вашим устройствам.&lt;br /&gt;
&lt;br /&gt;
Формат конфигурации мониторинга зависит от поставщика базы данных. Для получения дополнительной информации см. [[Конфигурация Oracle Database|Конфигурация мониторинга Oracle Database]].&lt;/div&gt;</summary>
		<author><name>IKuznetsov</name></author>
	</entry>
</feed>