Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

gplogfilter

Выполняет поиск указанных записей в лог-файлах Greengage DB.

Синтаксис

gplogfilter [ <timestamp_options> ]
            [ <pattern_options> ]
            [ <output_options> ]
            [ <input_options> ]
            [ <input_file> ]

gplogfilter -? | -h | --help

gplogfilter --version

Описание

Утилита gplogfilter используется для поиска записей в лог-файлах Greengage DB по заданным критериям. Если входной файл не указан, утилита использует переменную окружения MASTER_DATA_DIRECTORY для определения расположения лог-файла мастера. Для чтения из стандартного ввода используйте тире (-) в качестве имени входного файла. Входные файлы могут быть сжаты с помощью gzip. Записи в лог-файле идентифицируются по временной метке в формате YYYY-MM-DD [hh:mm[:ss]].

Утилиту gplogfilter можно использовать для одновременного поиска по всем лог-файлам сегментов, запустив ее через gpssh. Например, чтобы вывести последние три строки из каждого лог-файла сегмента:

$ gpssh -f seg_host_file
=> source /usr/local/gpdb/greengage_path.sh
=> gplogfilter -n 3 /data1/*/log/gpdb*.csv

По умолчанию вывод утилиты направляется в стандартный вывод. Используйте параметр -o для сохранения вывода в файл или каталог. Если имя выходного файла заканчивается на .gz, файл будет автоматически сжат с максимальным уровнем сжатия. Если в качестве назначения указан каталог, выходному файлу присваивается то же имя, что и у входного.

Параметры

Параметры временных меток

-b <datetime> | --begin=<datetime>

Задает начальную дату и время поиска в формате YYYY-MM-DD [hh:mm[:ss]].

Если указывается время, дата и время должны быть заключены в одинарные или двойные кавычки. В данном примере используются одинарные кавычки:

$ gplogfilter -b '2025-05-23 14:33'
-e <datetime> | --end=<datetime>

Задает конечную дату и время поиска в формате YYYY-MM-DD [hh:mm[:ss]].

Если указывается время, дата и время должны быть заключены в одинарные или двойные кавычки. В данном примере используются одинарные кавычки:

$ gplogfilter -e '2025-05-23 14:33'
-d <time> | --duration=<time>

Задает временной интервал для поиска записей в формате [hh][:mm[:ss]]. Если параметр используется без -b или -e, в качестве базового времени используется текущее.

Параметры сопоставления шаблонов

-c i [gnore] | r [espect] | --case=i [gnore] | r [espect]

Сопоставление буквенных символов по умолчанию чувствительно к регистру, если не используется параметр --case=ignore.

-C '<string>' | --columns='<string>'

Выбирает определенные столбцы из лог-файла. Укажите номера столбцов через запятую, начиная с 1 (второй столбец — 2, третий — 3 и т.д.).

-f '<string>' | --find='<string>'

Находит записи логов, содержащие указанную строку.

-F '<string>' | --nofind='<string>'

Исключает из журнала записи, содержащие указанную строку.

-m <regex> | --match=<regex>

Находит записи логов, соответствующие указанному регулярному выражению Python. Синтаксис регулярных выражений Python см. в Regular expression operations.

-M <regex> | --nomatch=<regex>

Исключает из журнала записи, соответствующие указанному регулярному выражению Python. Синтаксис регулярных выражений Python см. в Regular expression operations.

-t | --trouble

Находит только записи логов, содержащие ERROR:, FATAL: или PANIC: в первой строке.

Параметры вывода

-n <integer> | --tail=<integer>

Ограничивает вывод последними <integer> записями.

-s <offset> [<limit>] | --slice=<offset> [<limit>]

Возвращает limit записей, начиная с позиции offset, где offset равный нулю означает первую запись в результатах, а значение больше нуля отсчитывается с конца.

-o <output_file> | --out=<output_file>

Записывает вывод в указанный файл или каталог вместо STDOUT.

-z 0-9 | --zip=0-9

Сжимает выходной файл с использованием gzip, где 0 означает отсутствие сжатия, а 9 — максимальное сжатие. Если имя выходного файла заканчивается на .gz, файл будет автоматически сжат с максимальным уровнем.

-a | --append

Если выходной файл уже существует, добавляет данные в файл вместо его перезаписи.

Параметры ввода

<input_file>

Имя входного лог-файла (лог-файлов) для поиска. Если входной файл не указан, утилита использует переменную окружения MASTER_DATA_DIRECTORY для определения расположения лог-файла мастера. Для чтения из стандартного ввода используйте тире (-) в качестве имени файла.

-u | --unzip

Распаковывает входной файл с помощью gunzip. Если имя входного файла заканчивается на .gz, он будет распакован автоматически.

Справочные параметры

--help

Отображает справочную информацию.

--version

Отображает версию данной утилиты.

Формат логов

Номер поля Имя поля Тип данных Описание

1

event_time

timestamp with time zone

Время, когда запись была добавлена в лог.

Пример: 2025-02-28 07:22:42.388447 UTC

2

user_name

varchar(100)

Имя пользователя базы данных.

Примеры: gpadmin, alice

3

database_name

varchar(100)

Имя базы данных.

Примеры: postgres, crm

4

process_id

varchar(10)

Идентификатор системного процесса (с префиксом p).

Пример: p2062

5

thread_id

varchar(50)

Идентификатор потока (с префиксом th).

Пример: th-1924802432

6

remote_host

varchar(100)

На мастере возвращает IP-адрес клиентского хоста. На сегментах возвращает IP-адрес мастер-хоста.

Примеры: 192.168.10.55, [local]

7

remote_port

varchar(10)

Значение удаленного порта.

Пример: 49206

8

session_start_time

timestamp with time zone

Время начала сессии

9

transaction_id

int

Идентификатор транзакции верхнего уровня на мастере. Этот идентификатор является родителем любых подтранзакций. На сегментах идентифицирует локальную транзакцию, участвующую в распределенной транзакции

10

gp_session_id

text

Идентификатор сессии (с префиксом con)

11

gp_command_count

text

Количество команд, которые мастер получил от клиента (с префиксом cmd).

Пример: cmd9

12

gp_segment

text

Идентификатор сегмента (content). Имеет префикс seg для основных сегментов или mir для зеркальных сегментов. Идентификатор сегмента для мастера всегда имеет значение -1.

Примеры: seg-1, seg1

13

slice_id

text

Идентификатор слайса (slice), указывающий на часть плана выполняемого запроса

14

distr_tranx_id

text

Идентификатор распределенной транзакции

15

local_tranx_id

text

Идентификатор локальной транзакции

16

sub_tranx_id

text

Идентификатор подтранзакции

17

event_severity

varchar(10)

Уровень критичности события.

Примеры: LOG, ERROR, FATAL

18

sql_state_code

varchar(10)

Код состояния SQL для данного сообщения.

Пример: 00000

19

event_message

text

Текст лога или сообщения об ошибке.

Примеры: statement: CREATE DATABASE crm;, connection authorized: user=alice database=crm

20

event_detail

text

Текст сообщения с деталями ошибки или предупреждения

21

event_hint

text

Текст подсказки, связанный с ошибкой или предупреждением

22

internal_query

text

Текст запроса, сгенерированный системой

23

internal_query_pos

int

Позиция курсора в автоматически сгенерированном тексте запроса

24

event_context

text

Контекст, в котором создано данное сообщение

25

debug_query_string

text

Пользовательская строка запроса с полной информацией для отладки

26

error_cursor_pos

int

Позиция курсора в строке запроса

27

func_name

text

Функция, в которой сгенерировано данное сообщение

28

file_name

text

Файл исходного кода, в котором было создано сообщение.

Пример: postgres.c

29

file_line

int

Строка файла исходного кода, в котором было создано сообщение.

Пример: 1688

30

stack_trace

text

Текст стека вызовов, связанный с этим сообщением

Примеры

Отобразить последние три сообщения об ошибках в лог-файле мастера:

$ gplogfilter -t -n 3

Отобразить все сообщения в лог-файле мастера за последние 10 минут:

$ gplogfilter -d :10

Отобразить сообщения в лог-файле мастера, содержащие строку |con6 cmd11|:

$ gplogfilter -f '|con6 cmd11|'

С помощью gpssh запустить gplogfilter на сегмент-хостах, найти в лог-файлах сообщения ERROR, FATAL или PANIC и сохранить результат в файл:

$ gpssh -f hostfile_segment_hosts -e " \
      source /usr/local/gpdb/greengage_path.sh && \
      gplogfilter /data1/*/*/pg_log/gpdb*.csv \
      --trouble \
  " > seglog.out

См. также