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 |
Время, когда запись была добавлена в лог. Пример: |
2 |
user_name |
varchar(100) |
Имя пользователя базы данных. Примеры: |
3 |
database_name |
varchar(100) |
Имя базы данных. Примеры: |
4 |
process_id |
varchar(10) |
Идентификатор системного процесса (с префиксом Пример: |
5 |
thread_id |
varchar(50) |
Идентификатор потока (с префиксом Пример: |
6 |
remote_host |
varchar(100) |
На мастере возвращает IP-адрес клиентского хоста. На сегментах возвращает IP-адрес мастер-хоста. Примеры: |
7 |
remote_port |
varchar(10) |
Значение удаленного порта. Пример: |
8 |
session_start_time |
timestamp with time zone |
Время начала сессии |
9 |
transaction_id |
int |
Идентификатор транзакции верхнего уровня на мастере. Этот идентификатор является родителем любых подтранзакций. На сегментах идентифицирует локальную транзакцию, участвующую в распределенной транзакции |
10 |
gp_session_id |
text |
Идентификатор сессии (с префиксом |
11 |
gp_command_count |
text |
Количество команд, которые мастер получил от клиента (с префиксом Пример: |
12 |
gp_segment |
text |
Идентификатор сегмента (content).
Имеет префикс Примеры: |
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) |
Уровень критичности события. Примеры: |
18 |
sql_state_code |
varchar(10) |
Код состояния SQL для данного сообщения. Пример: |
19 |
event_message |
text |
Текст лога или сообщения об ошибке. Примеры: |
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 |
Файл исходного кода, в котором было создано сообщение. Пример: |
29 |
file_line |
int |
Строка файла исходного кода, в котором было создано сообщение. Пример: |
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