Основные функции MatrixGate

В этом документе описаны основные функции MatrixGate.

Примечание!
Для интеграции языков программирования с MatrixGate см. Ввод данных — Подключение языков программирования к MatrixGate.


1 Загрузка специальных типов данных с помощью MatrixGate

1.1 Загрузка CSV-файлов с помощью MatrixGate

  • Создайте таблицу demo в базе данных csvtable.
demo=# CREATE TABLE csvtable (
       time TIMESTAMP WITH TIME ZONE,
       tagid INT,
       c1 INT,
       c2 INT,
       c3 INT
       )
       USING MARS3
       DISTRIBUTED BY (tagid)
       ORDER BY (time,tagid);
  • Отредактируйте файл данных data.csv, указав следующее содержимое: CODE_BLOCк_1

  • Запустите mxgate, установив значение --source равным stdin, целевую таблицу — существующую csvtable, а уровень параллелизма — 2. В данном примере хост — mdw.

    [mxadmin@mdw ~]$ mxgate \
    --source stdin \
    --db-database demo \
    --db-master-host 127.0.0.1 \
    --db-master-port 5432 \
    --db-user mxadmin \
    --time-format unix-second \
    --delimiter "|" \
    --target csvtable \
    --parallel 2 < data.csv
  • Подключитесь к базе данных и проверьте успешность загрузки данных.

demo=# SELECT * FROM csvtable ;
          time          | tagid | c1  | c2  | c3
------------------------+-------+-----+-----+-----
 2020-10-27 05:50:23+08 |     3 | 103 | 203 | 303
 2020-10-27 05:50:22+08 |     2 | 102 | 202 | 302
 2020-10-27 05:50:21+08 |     1 | 101 | 201 | 301

(3 rows)

1.2 Загрузка JSON-полей с помощью MatrixGate

1.2.1 JSON

  • Создайте таблицу.

    demo=# CREATE TABLE json_test(
         id int,
         j json
         )
         USING MARS3
         ORDER BY (id);
  • Создайте файл данных. ~/json.csv

    1|"{""a"":10, ""b"":""xyz""}"
  • Загрузите данные
    В качестве примера используется режим stdin; другие режимы аналогичны.
    Ключевой параметр — --format csv.

    [mxadmin@mdw ~]$ mxgate \
    --source stdin \
    --db-database postgres \
    --db-master-host 127.0.0.1 \
    --db-master-port 7000 \
    --db-user mxadmin \
    --time-format raw \
    --format csv \
    --delimiter "|" \
    --target json_test < ~/json.csv
  • Проверьте загруженные данные.

    demo=# SELECT * FROM json_test;
    id |           j
    ----+-----------------------
    1 | {"a":10, "b":"xyz"}
    (1 row)

1.2.2 Массивы JSON

  • Создайте таблицу.

    demo=# CREATE TABLE json_array_test(
         id int,
         j json
         )
         USING MARS3
         ORDER BY (id);
  • Создайте файл данных ~/json_array.csv.

    1|"{""{\""a\"":10, \""b\"":\""xyz\""}"",""{\""c\"": 10}""}"
  • Загрузите данные с помощью mxgate.

    [mxadmin@mdw ~]$ mxgate \
    --source stdin \
    --db-database postgres \
    --db-master-host 127.0.0.1 \
    --db-master-port 7000 \
    --db-user mxadmin \
    --time-format raw \
    --format csv \
    --delimiter "|" \
    --target json_array_test < ~/json_array.csv
  • Проверьте результат.

    demo=# SELECT * FROM json_array_test ;
    id |                      j
    ----+---------------------------------------------
    1 | {"{\"a\":10, \"b\":\"xyz\"}","{\"c\": 10}"}
    (1 row)

Примечание!
Поскольку столбцы JSON содержат специальные символы, такие как кавычки, параметр --format в mxgate должен быть установлен в значение CSV.


2 Мониторинг метрик производительности mxgate

watch — это подкоманда mxgate, которая выводит ряд метрик, описывающих состояние демона mxgate во время выполнения.
watch поддерживает два режима:

  • Режим мониторинга в реальном времени: каждые 3 секунды выводятся метрики шлюза в формате, аналогичном sar.
  • Режим мониторинга исторических данных: позволяет задать любой временной диапазон и интервал (например, почасовой за вчера, ежедневный за прошлый месяц, ежемесячный за прошлый год) для анализа скорости ввода данных.

2.1 Мониторинг в реальном времени

[mxadmin@mdw ~]$ mxgate watch

Сбор метрик времени выполнения mxgate каждые три секунды. Пример вывода:

                 Time          WCount          ICount        WSpeed/s        ISpeed/s  WBandWidth MB/S     BlocakItems
  2022-04-28 15:20:58        14478858        14527011         2598081         2627887            2395               0
  2022-04-28 15:21:01        22231035        22633254         2584059         2702081            2222               0
  2022-04-28 15:21:04        30494310        30500874         2754425         2622540            3551               0
  2022-04-28 15:21:07        38004210        38032956         2503300         2510694            2862               0
  2022-04-28 15:21:10        46188696        46298223         2728162         2755089            2227               0
  ...

Используйте параметр --info, чтобы получить описание каждой метрики:

[mxadmin@mdw ~]$ mxgate watch --info

По умолчанию отображаются только метрики скорости. Для диагностики используйте параметр --watch-latency, чтобы отслеживать метрики задержки:

[mxadmin@mdw ~]$ mxgate watch --watch-latency

2.2 Мониторинг исторических данных

[mxadmin@mdw ~]$ mxgate watch --history

Вычисляет среднюю скорость ввода данных в час за последние 24 часа до текущего момента. Пример вывода:

                TIME RANGE                | SPEED/S  | BANDWIDTH MB/S  | BLOCK ITEMS
  2022-04-28 16:00:00-2022-04-28 17:00:00 |  2208010 |         1254.48 |           0
  2022-04-28 17:00:00-2022-04-28 18:00:00 |  1157920 |         1327.00 |           0
  2022-04-28 18:00:00-2022-04-28 19:00:00 |  2228666 |         2162.32 |           0
  2022-04-28 19:00:00-2022-04-28 20:00:00 |  1371092 |         2881.30 |           0
  2022-04-28 20:00:00-2022-04-28 21:00:00 |  1575320 |         2608.20 |           0

SPEED/S и BANDWIDTH MB/S обозначают количество записей, вводимых в секунду, и пропускную способность в МБ/с соответственно.
BLOCK ITEMS указывает объем данных, заблокированных в mxgate. Это значение возрастает, когда скорость потребления данных в базе не успевает за скоростью генерации данных в источнике (например, HTTP, Kafka).

Вы можете использовать параметры --watch-start, --watch-end и --watch-duration, чтобы контролировать временной диапазон и интервал при мониторинге исторических данных.
Например:

[mxadmin@mdw ~]$ mxgate watch --history --watch-start '2022-03-27 00:00:00' --watch-end '2022-04-27 00:00:00' --watch-duration '168h'

Эта команда возвращает среднюю скорость ввода данных по неделям (каждые 168 часов) с 27 марта по 27 апреля.
--watch-duration поддерживает три единицы измерения: h, m и s.


3 Динамическое обновление параметров параллельной записи

mxgate поддерживает изменение параметров параллельной загрузки --stream-prepared и --interval без остановки службы:

  • --stream-prepared определяет количество активных слотов, используемых mxgate при записи данных в каждую таблицу YMatrix. По умолчанию все таблицы имеют одинаковое количество слотов, но вы можете настроить его вручную для каждого задания (для каждой таблицы разрешено только одно задание).
    • Увеличение --stream-prepared обычно повышает параллелизм и производительность записи, но требует больше памяти.
    • Уменьшение --stream-prepared снижает использование памяти на сегментах данных (Segments), но может снизить производительность.
  • --interval определяет рабочий интервал для каждого активного слота. Каждый слот ожидает --interval миллисекунд перед отправкой накопленных данных из mxgate в YMatrix.
    • Увеличение --interval увеличивает задержку записи и размер пакета (при условии непрерывного потока данных в mxgate).
    • Уменьшение --interval снижает задержку и размер пакета.

На практике эти два параметра следует настраивать в зависимости от движка хранения и требований пользователя к задержке записи данных.

Пример использования:

  • Установите количество слотов на таблицу равным 3
    $ mxgate set --stream-prepared-cli 3
  • Получите текущее количество активных слотов на таблицу
    $ mxgate get --stream-prepared-get
  • Установите интервал между записями слотов равным 200 мс для всех таблиц
    $ mxgate set --job-interval 200
  • Получите текущий интервал для слотов всех таблиц
    $ mxgate get --job-interval-get

Примечание!
Чтобы установить или получить количество слотов или интервал для конкретной таблицы, добавьте параметр --job <名称> к приведённым выше командам. Каждое задание соответствует одной таблице базы данных. Параметр job состоит из имени схемы и имени таблицы. Например, если ваша таблица называется test_table в схеме public, добавьте --job public.test_table к команде.


4 Динамическое обновление схемы таблицы

Во время ввода данных источники временных рядов могут эволюционировать, что делает существующие схемы таблиц устаревшими и требует их изменения. В этом разделе объясняется, как mxgate может приостановить запись данных, перезагрузить метаданные таблицы и возобновить запись без остановки службы. Шаги:

  • Сначала используйте команду mxgate pause -X, чтобы приостановить все слоты таблицы в подготовке к изменению схемы. Параметр -X обязателен для отключения mxgate от слотов базы данных. Изменение схемы невозможно, пока слоты не будут приостановлены. Кроме того, использование параметра -X заставляет команду паузы ожидать синхронно, пока все слоты не будут приостановлены, прежде чем вернуть управление.
$ mxgate pause -X
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _`` | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
begin to pause all jobs,please wait...
` | __| '__| \ \/ / |  _ / _``
 * Во-вторых, после приостановки всех слотов целевой таблицы выполните изменения схемы в соответствующей таблице базы данных — например, добавьте или удалите столбцы, удалите таблицу или создайте новую таблицу с тем же именем.

Примечание!
Новая схема таблицы может отличаться, но имя таблицы должно остаться прежним.

  • Наконец, используйте команду `, чтобы возобновить работу всех слотов таблицы и перезагрузить метаданные таблицы. Параметрmxgate resume -Rобязателен;-Rиresume` вместе завершают операцию перезагрузки.

    
    $ mxgate resume -R
    ******************************************************
    __  __       _        _       ____       _
    |  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
    | |\/| |/ _`` | __/ _ \
    | |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
    |_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
    Version: v5.2.0
    Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
    ******************************************************
    begin to reload all jobs,please wait...
    ` | __| '__| \ \/ / |  _ / _``
  • В случаях, когда запущено несколько процессов mxgate, используйте параметр ``, чтобы указать идентификатор процесса. Все приведённые выше команды поддерживают этот параметр, например:

    $ mxgate get --job-interval-get -p 70199 --job

Примечание!
Перезагрузка возможна только после приостановки всех слотов соответствующей таблицы в mxgate. В противном случае вы получите ошибку: ``

Примечание!
Если операция приостановки истекает по таймауту (после 50 секунд), операции вставки соответствующего слота отменяются, чтобы гарантировать успешное завершение паузы.


5 Поддержка UPSERT

YMatrix реализует функциональность UPSERT в MatrixGate начиная с версии v4.2.0. См. Пакетное объединение данных (UPSERT).


6 Миграция одной таблицы

YMatrix реализует миграцию одной таблицы через MatrixGate начиная с версии v4.3.0. См. Миграция одной таблицы.

Примечание!
YMatrix поддерживает не только миграцию одной таблицы, но и миграцию всей базы данных (начиная с версии v4.7.0 и выше). См. Миграция всей базы данных.


7 Динамическая настройка уровня логирования

Иногда для анализа ключевого поведения mxgate требуются отладочные логи. Однако перезапуск mxgate для включения или отключения отладочного логирования неудобен при диагностике. Поэтому YMatrix предоставляет возможность динамической настройки уровня логирования:

  • Во время работы mxgate используйте jobs are not paused,please pause them first, чтобы включить подробный уровень логирования mxgate set --log-level VERBOSE, или VERBOSE, чтобы включить самый детализированный уровень mxgate set --log-level DEBUG. Когда отладочное логирование больше не требуется, используйте DEBUG, чтобы вернуть уровень логирования к значению mxgate set --log-level INFO.


8 Триггеры событий mxgate

В некоторых случаях DDL-операции (например, TRUNCATE, ALTER) необходимо выполнять над таблицей, пока mxgate активно вставляет данные. Эта функция позволяет mxgate «освободить» текущие вставки при получении команды DDL, обеспечивая своевременное выполнение DDL.

Поддерживаемые DDL-операции:

  1. Очистка таблицы или группы таблиц
    =# TRUNCATE TABLE <tablename>;
  2. Add, drop, or alter column types
    =# ALTER TABLE <tablename> ADD COLUMN <columnname> <columndatatype>;
    =# ALTER TABLE <tablename> DROP COLUMN <columnname>;
    =# ALTER TABLE <tablename> ALTER COLUMN <columnname> TYPE <columndatatype>;
  3. Rename a table
    =# ALTER TABLE <tablename> RENAME TO <new tablename>;
  4. Drop and recreate a table
    =# DROP TABLE <tablename>;
    =# CREATE TABLE <tablename(column datatype)>;
  5. Все четыре DDL-операции выше для секционированных таблиц


9 Автоматическая настройка слотов в mxgate

Обычно параметр stream-prepared (количество параллельных сессий слотов) настраивается вручную в соответствии с нагрузкой различных задач записи (то есть объемом входящих данных). Однако в некоторых сценариях нагрузка записи изменяется динамически и непрерывно, что делает ручную настройку непрактичной.

Поэтому MatrixGate предоставляет механизм автоматической настройки: включите параметр ``, чтобы автоматически адаптироваться к нагрузке записи.

Эту функцию можно включить несколькими способами:

Примечание!
Включение этой функции обеспечивает оптимальную производительность записи в реальном времени, но может не обеспечить наиболее эффективное использование ресурсов сессионных слотов.

Примечание!
Если включена автоматическая настройка и установлен порог high-watermark threshold, автоматическая настройка активируется только при превышении нагрузки записи этого порога.


10 Количественная оценка нагрузки записи в процентах в mxgate

mxgate поддерживает количественную оценку нагрузки записи от исходной системы в процентах (0–100%). Во время ввода данных вы можете получить нагрузку записи для конкретного задания с помощью следующей команды:

$ mxgate get --source-pressure
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _  | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 source-pressure = 27.26%

Если существует несколько заданий, вы можете получить нагрузку записи для конкретного задания по имени или получить нагрузки сразу для нескольких заданий:

$ mxgate get --source-pressure --job public.t2
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _  | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 source-pressure = 15.73%
$ mxgate get --source-pressure
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _  | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 source-pressure = 35.84%
public.t1 source-pressure = 0%

После количественной оценки нагрузки в процентах вы можете использовать эту метрику для установки порога high-water mark. Если нагрузка записи от источника превышает этот порог, значение отображается красным цветом. В этот момент вы можете вручную скорректировать количество слотов, чтобы уменьшить нагрузку записи, или использовать функцию автоматической настройки слотов mxgate.

Установите порог с помощью следующей команды:

$ mxgate set --high-water-mark <highwatermark> --job <jobname>

Пример:

$ mxgate set --high-water-mark 20 --job public.t2
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _  | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 high-water-mark = 20.00%

Используйте следующую команду, чтобы получить high-water mark для конкретного задания:

$ mxgate get --high-water-mark-get --job public.t2
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _  | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 high-water-mark = 20.00%
$ mxgate get --high-water-mark-get
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _  | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t1 high-water-mark = 0.00%
public.t2 high-water-mark = 20.00%

Примечание!
Если порог превышен, значение давления будет отображаться красным цветом.

Если включена функция автоматической настройки слотов mxgate и установлен high-water mark, количество слотов не будет увеличиваться автоматически, пока нагрузка задания не превысит настроенный порог high-water mark — даже если логика автоматической настройки mxgate предполагает увеличение.

Например, если high-water mark установлен на 75, а текущая нагрузка составляет 35.21, mxgate может определить, что требуется больше слотов. Однако, поскольку нагрузка ниже порога, количество слотов увеличено не будет. Вместо этого появится следующее предупреждение:

[WARN]:-[SlotsLauncher] Sources pressure = 35.21 of job(public.t2) is lower than the high water mark(75), the slot increase is not allowed

Примечание!
Примерные значения приведены только для справки. Устанавливайте high-water mark в соответствии с фактическими требованиями бизнеса и текущими скоростями ввода данных.

Чтобы отключить ограничение high-water mark, используйте следующую команду:

$ mxgate set --disable-high-water-mark=true --job public.t2
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _  | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 high-water-mark = 0.00%

11 Информация о процессе вставки данных mxgate, таблицы каталога вставок и журналов ошибок

Вы можете выполнить запрос к представлению matrixgate_internal.mxgate_process_view в базе данных matrixmgr, чтобы просмотреть информацию обо всех процессах mxgate, которые в данный момент или ранее подключались к базе данных YMatrix для вставки данных.

matrixmgr=# SELECT * from matrixgate_internal.mxgate_process_view;
 id |  pid   | host | port | source |    database     |      external_table_schema       | has_metrics |          created_at           |           exited_at           | exited | schema_cleaned |      mxgate_config       | updated_at
----+--------+------+------+--------+-----------------+----------------------------------+-------------+-------------------------------+-------------------------------+--------+----------------+--------------------------+------------
 13 |  63431 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_63431_sdw2_b7b30959  | t           | 2024-04-03 16:45:27.789389+08 | 2024-04-03 16:45:27.981513+08 | t      | f              | {"metrics_interval": 10} |
 14 |  66038 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_66038_sdw2_e810e04d  | t           | 2024-04-03 16:45:54.381101+08 | 2024-04-03 16:45:54.571016+08 | t      | f              | {"metrics_interval": 15} |
 15 |  98535 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_98535_sdw2_b5032eff  | f           | 2024-04-03 16:49:50.540095+08 | 2024-04-03 16:49:50.753405+08 | t      | f              | {"metrics_interval": 15} |
 16 | 102059 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_102059_sdw2_c0f9dbc4 | f           | 2024-04-03 16:50:30.544932+08 | 2024-04-03 16:50:30.749403+08 | t      | f              | {"metrics_interval": 15} |
 17 | 104761 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_104761_sdw2_f284b2f2 | t           | 2024-04-03 16:50:40.909025+08 | 2024-04-03 16:50:41.10522+08  | t      | f              | {"metrics_interval": 10} |
 18 | 105109 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_105109_sdw2_9ffa1360 | f           | 2024-04-03 16:50:42.324334+08 | 2024-04-03 16:50:42.501187+08 | t      | f              | {"metrics_interval": 15} |
 19 | 110590 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_110590_sdw2_527394f9 | f           | 2024-04-03 16:51:28.265894+08 | 2024-04-03 16:51:28.468763+08 | t      | f              | {"metrics_interval": 0}  |
 20 | 110760 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_110760_sdw2_c7d787a3 | t           | 2024-04-03 16:51:29.730855+08 | 2024-04-03 16:51:29.957642+08 | t      | f              | {"metrics_interval": 10} |
 21 | 110882 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_110882_sdw2_6bdbd471 | f           | 2024-04-03 16:51:31.189347+08 | 2024-04-03 16:51:31.383211+08 | t      | f              | {"metrics_interval": 15} |
 22 | 112484 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_112484_sdw2_83dc4c87 | f           | 2024-04-03 16:51:47.735186+08 | 2024-04-03 16:51:47.943989+08 | t      | f              | {"metrics_interval": 0}  |
 23 | 112608 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_112608_sdw2_ebd6fcb1 | t           | 2024-04-03 16:51:49.202759+08 | 2024-04-03 16:51:49.413013+08 | t      | f              | {"metrics_interval": 10} |
 24 | 112746 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_112746_sdw2_804d4e9c | f           | 2024-04-03 16:51:50.651448+08 | 2024-04-03 16:51:50.82829+08  | t      | f              | {"metrics_interval": 15} |
 25 | 114206 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_114206_sdw2_1376e4f0 | f           | 2024-04-03 16:52:05.954983+08 | 2024-04-03 16:52:06.150763+08 | t      | f              | {"metrics_interval": 0}  |
 26 | 114323 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_114323_sdw2_31f5fe71 | t           | 2024-04-03 16:52:07.392493+08 | 2024-04-03 16:52:07.606231+08 | t      | f              | {"metrics_interval": 10} |
 27 | 114454 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_114454_sdw2_84a2439d | f           | 2024-04-03 16:52:08.849134+08 | 2024-04-03 16:52:09.044388+08 | t      | f              | {"metrics_interval": 15} |
 28 | 118611 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_118611_sdw2_11aa241a | f           | 2024-04-03 16:54:08.596567+08 | 2024-04-03 16:54:08.806036+08 | t      | f              | {"metrics_interval": 0}  |
 29 | 118754 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_118754_sdw2_9c835dfc | t           | 2024-04-03 16:54:10.04123+08  | 2024-04-03 16:54:10.28288+08  | t      | f              | {"metrics_interval": 10} |
 30 | 118879 | sdw2 | 8891 | http   | kafka_gate_json | _matrixgate_118879_sdw2_d58b7ed2 | f           | 2024-04-03 16:54:11.521661+08 | 2024-04-03 16:54:11.72412+08  | t      | f              | {"metrics_interval": 15} |
(18 rows)

Либо используйте следующую команду:

$ mxgate get mxgate-process-info

Описание параметров:

Параметр Описание
id Автоинкрементный идентификатор
pid PID процесса mxgate
host Имя хоста сервера, на котором запущен mxgate
port Номер порта gRPC-сервиса, предоставляемого mxgate
created_at Время создания процесса mxgate. Этот временной штамп не обновляется после запуска
exited Указывает, завершился ли процесс mxgate. Обычно при работе значение равно f. Если процесс завершается корректно (например, через Ctrl+C или mxgate stop), значение становится t. При аварийном завершении (например, процесс убит или хост отключился) это поле может остаться равным f, поскольку mxgate не успевает обновить его перед завершением
schema_cleaned Указывает, была ли удалена внешняя схема, используемая mxgate. Во время работы значение — f. После нормального завершения процесса оно становится t в течение нескольких секунд. При аварийном завершении очистка может быть выполнена не сразу. YMatrix внутренне отслеживает сигналы «живости» mxgate; если в течение более чем 2 часов сигналы не поступают, схема удаляется, а поле принимает значение t
database База данных, к которой подключён mxgate
source Тип источника данных (stdin, http, grpc, transfer)
updated_at Обновляется каждые 3 секунды процессом mxgate. Отражает время последнего обновления на YMatrix Master. После нормального завершения значение перестаёт обновляться
has_metrics Указывает, активен ли модуль сбора внутренней статистики. Если значение f, команда mxgate get metrics не возвращает данных
external_table_schema Имя схемы, используемой для внешних таблиц, созданных mxgate. Применяется для удаления остаточных схем после аварийного завершения
mxgate_config Хранит ключевые параметры конфигурации из файла настроек mxgate, что позволяет проверить конфигурацию после завершения процесса (поддерживается начиная с версии v5.3.2)

В настоящее время все источники данных mxgate (stdin, http, grpc, transfer) поддерживают сбор статистики в таблицах каталога вставок и журналах ошибок:

  • Таблица каталога вставок: Каждая строка фиксирует одну операцию INSERT (успешную, частично успешную или неудачную) на каждый слот mxgate.
  • Таблица журнала ошибок: Фиксирует все записи, которые не удалось вставить.

Просмотр таблицы каталога вставок:

=# SELECT * FROM matrixgate_internal.insert_catalog;
 id | mxgate_id | insert_sequence | slot_id | session_id |       created_at       | status  | source | flows_cnt | total_lines | bytes_length |                          target_table                           |        message        | job_id
----+-----------+-----------------+---------+------------+------------------------+---------+--------+-----------+-------------+--------------+-----------------------------------------------------------------+-----------------------+--------
  3 |        39 |               1 |      10 |     152832 | 2024-03-15 13:17:32+08 | partial | http   |        10 |         100 |          600 | "public"."concurrent_insert_error_log_varification_http_source" | 20 malformed messages |      1
(1 row)

Описание параметров:

Параметр Описание
id Автоинкрементный идентификатор
mxgate_id Идентификатор процесса mxgate, соответствует полю id в mxgate_process_view
insert_sequence Порядковый номер операции вставки. Увеличивается на 1 для каждой вставки в пределах одного слота
slot_id Идентификатор слота, выполняющего вставку
session_id Идентификатор сессии соединения между mxgate (в роли клиента) и базой данных
created_at Временная метка создания данной записи о вставке
status Статус вставки: success, partial или failed
source Тип источника данных mxgate
flows_cnt Количество пакетов в данной операции вставки
total_lines Общее количество вставленных строк
bytes_length Общий объём данных в байтах
target_table Целевая таблица для загрузки данных
message Сообщение об ошибке, если вставка завершилась неудачно
job_id Идентификатор задания, формат: <schema>.<table>

Просмотр таблицы журнала ошибок:

=# SELECT * FROM matrixgate_internal.insert_error_log;
 catalog_id |       created_at       |      received_at       | line_number |                          errmsg                           | rawdata
------------+------------------------+------------------------+-------------+-----------------------------------------------------------+----------
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           6 | invalid input syntax for type integer: "error", column id | error|c5
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           9 | invalid input syntax for type integer: "error", column id | error|c8
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           6 | invalid input syntax for type integer: "error", column id | error|c5
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           9 | invalid input syntax for type integer: "error", column id | error|c8
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           6 | invalid input syntax for type integer: "error", column id | error|c5
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           9 | invalid input syntax for type integer: "error", column id | error|c8
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           6 | invalid input syntax for type integer: "error", column id | error|c5
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           9 | invalid input syntax for type integer: "error", column id | error|c8
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           6 | invalid input syntax for type integer: "error", column id | error|c5
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           9 | invalid input syntax for type integer: "error", column id | error|c8
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           6 | invalid input syntax for type integer: "error", column id | error|c5
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           9 | invalid input syntax for type integer: "error", column id | error|c8
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           6 | invalid input syntax for type integer: "error", column id | error|c5
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           9 | invalid input syntax for type integer: "error", column id | error|c8
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           6 | invalid input syntax for type integer: "error", column id | error|c5
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           9 | invalid input syntax for type integer: "error", column id | error|c8
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           6 | invalid input syntax for type integer: "error", column id | error|c5
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           9 | invalid input syntax for type integer: "error", column id | error|c8
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           6 | invalid input syntax for type integer: "error", column id | error|c5
          3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 |           9 | invalid input syntax for type integer: "error", column id | error|c8
(20 rows)

Описание параметров:

Параметр Описание
catalog_id Автоинкрементный идентификатор, соответствует id в таблице каталога вставок
created_at Временная метка создания данной записи
received_at Временная метка получения данных процессом mxgate
line_number Номер строки данных
errmsg Сообщение об ошибке
rawdata Исходные входные данные

Примечание!
Если весь пакет данных не был вставлен в результате одной операции, в таблице insert_catalog фиксируется только одна запись failed. Отдельные ошибочные записи не попадают в таблицу insert_error_log.