Задание 2: Журнал отчета
В этом задании посмотрим как работает журнал отчета и запись сообщений в файл.
Журнал отчета
При настройках по умолчанию Pangolin Manager передает сообщения systemd:
[student@srv1 ~]$ sudo systemctl status pangolin-manager
Вывод команды:
● pangolin-manager.service - Runners to orchestrate a high-availability PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/pangolin-manager.service; enabled; preset: disabled)
Active: active (running) since Tue 2026-09-08 07:56:42 UTC; 9s ago
Process: 184249 ExecStartPre=/bin/mkdir -p /var/run/postgresql (code=exited, status=0/SUCCESS)
Process: 184250 ExecStartPre=/bin/chown -R postgres:postgres /var/run/postgresql (code=exited, status=0/SUCCESS)
Main PID: 184251 (pangolin-manage)
Tasks: 17 (limit: 22804)
Memory: 136.1M (peak: 139.3M)
CPU: 1.172s
CGroup: /system.slice/pangolin-manager.service
├─184251 /opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml
├─184268 /usr/pangolin-6.7/bin/postgres -D /pgdata/06/data/ --config-file=/pgdata/06/data/postgresql.conf --listen_addresses=0.0.0.0 --port=5433 --cluster_name=Po>
├─184271 "postgres: Pobeda: logger "
├─184272 "postgres: Pobeda: checkpointer "
├─184273 "postgres: Pobeda: background writer "
├─184274 "postgres: Pobeda: startup waiting for 000000030000000000000006"
├─184275 "postgres: Pobeda: idle sessions terminator "
├─184277 "postgres: Pobeda: integrity check launcher "
├─184278 "postgres: Pobeda: license checker "
├─184279 "postgres: Pobeda: authproc "
├─184280 "postgres: Pobeda: password policy cache "
└─184287 "postgres: Pobeda: patroni postgres 127.0.0.1(40060) idle"
Sep 08 07:56:42 srv1 systemd[1]: Starting Runners to orchestrate a high-availability PostgreSQL...
Sep 08 07:56:42 srv1 systemd[1]: Started Runners to orchestrate a high-availability PostgreSQL.
Sep 08 07:56:43 srv1 pangolin-manager.bin[184251]: 2026-09-08 07:56:43,097 INFO: LOG output redirection: new log destination is /pgerrorlogs/srv1/pangolin-manager/pangolin-man>
Последние строки вывода статуса сервиса показывают сообщения, переданные сервисом pangolin-manager демону systemd.
Сообщения, переданные systemd можно читать с помощью команды journalctl:
[student@srv1 ~]$ sudo journalctl -u pangolin-manager.service
...
Sep 08 07:51:19 srv1 systemd[1]: Stopping Runners to orchestrate a high-availability PostgreSQL...
Sep 08 07:51:21 srv1 systemd[1]: pangolin-manager.service: Deactivated successfully.
Sep 08 07:51:21 srv1 systemd[1]: Stopped Runners to orchestrate a high-availability PostgreSQL.
Sep 08 07:51:21 srv1 systemd[1]: pangolin-manager.service: Consumed 2min 46.856s CPU time, 278.4M memory peak.
Sep 08 07:56:42 srv1 systemd[1]: Starting Runners to orchestrate a high-availability PostgreSQL...
Sep 08 07:56:42 srv1 systemd[1]: Started Runners to orchestrate a high-availability PostgreSQL.
Sep 08 07:56:43 srv1 pangolin-manager.bin[184251]: 2026-09-08 07:56:43,097 INFO: LOG output redirection: new log destination is /pgerrorlogs/srv1/pangolin-manager/pangolin-manager-{date}>
...
Несомненным преимуществом таких журналов является возможность весьма изощренной фильтрации сообщений. Так, например, если требуется прочитать все сообщения Pangolin Manager со вчерашнего дня, это можно сделать так:
[student@srv1 ~]$ sudo journalctl -u pangolin-manager.service -S yesterday
Sep 07 09:50:45 srv1 systemd[1]: Stopping Runners to orchestrate a high-availability PostgreSQL...
Sep 07 09:50:46 srv1 systemd[1]: pangolin-manager.service: Deactivated successfully.
Sep 07 09:50:46 srv1 systemd[1]: Stopped Runners to orchestrate a high-availability PostgreSQL.
Sep 07 09:50:46 srv1 systemd[1]: pangolin-manager.service: Consumed 9min 383ms CPU time.
Sep 07 10:15:25 srv1 systemd[1]: Starting Runners to orchestrate a high-availability PostgreSQL...
Sep 07 10:15:25 srv1 systemd[1]: Started Runners to orchestrate a high-availability PostgreSQL.
Sep 07 10:15:26 srv1 pangolin-manager.bin[112497]: 2026-09-07 10:15:26,524 INFO: LOG output redirection: new log destination is /pgerrorlogs/srv1/pangolin-manager/pangolin-manager-{date}>
...
Обратите внимание на строку вывода:
Sep 07 10:15:26 srv1 pangolin-manager.bin[112497]: 2026-09-07 10:15:26,524 INFO: LOG output redirection: new log destination is /pgerrorlogs/srv1/pangolin-manager/pangolin-manager-{date}>
Она говорит, что с этого момента дальнейшая запись сообщений НЕ передается в systemd, а вместо этого записывается в файл.
Запись сообщений в файл
Итак, при старте Pangolin Manager происходит переключение записи сообщений в файл.
По умолчанию файл расположен в соответствии со следующей настройкой в файле конфигурации:
[student@srv1 ~]$ sudo -u postgres sed -n '/^[ \t]*log:/,+6p' /etc/pangolin-manager/postgres.yml
log:
dir: /pgerrorlogs/srv1/pangolin-manager
file_name: pangolin-manager-%Y-%m-%d_%H%M%S.log
destination: file
file_mode: 600
redirect_min_size: 10
Параметры настройки следующие:
dir– каталог, в котором находятся файлы журналов сообщений;file_name– шаблон для имен файлов журналов;file_mode– права доступа к файлу в восьмеричной нотации;redirect_min_size– если в файловой системе остается менее этого количества Кб, запись сообщений производится в системный журнал сообщений;destination– либоfile, либоsyslog.
Менять настройки можно как в конфигурационном файле /etc/pangolin-manager/postgres.yml в секции log, а можно и с помощью переменных окружения:
Параметр | Переменная окружения | Действие для применения |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Для пользователя ОС postgres настроен удобный псевдоним для вывода сообщений, записанных в файл журнала:
[student@srv1 ~]$ sudo su - postgres
===============================================================
You are connected to Pangolin Cluster (Pobeda)
- Hostname : srv1
- IP Address : <IP-Address1>
---------------------------------------------------------------
- node ( master ) : <IP-Address1>
- node ( replica ) : <IP-Address2>
- arbiter : <IP-Address3>
- Manager version : 2.1.13
- Pangolin version : 6.7.0
===============================================================
[postgres@srv1 ~]$ ptlog
2025-11-27 14:56:41,913 INFO: no action. I am (<IP-Address1>), a secondary, and following a leader (<IP-Address2>)
2025-11-27 14:56:51,901 INFO: no action. I am (<IP-Address1>), a secondary, and following a leader (<IP-Address2>)
2025-11-27 14:57:01,916 INFO: no action. I am (<IP-Address1>), a secondary, and following a leader (<IP-Address2>)
...
Другие журналы
Помимо сообщений Pangolin Manager есть еще etcd и сам СУБД Pangolin, и у каждого свой журнал. Для пользователя postgres уже настроены псевдонимы для быстрого доступа к ним.
Вывод сообщений etcd:
[postgres@srv1 ~]$ elog
{"level":"info","ts":"2025-11-27T03:16:05.199500+0300","caller":"wal/wal.go:785","msg":"created a new WAL segment","path":"/var/lib/etcd/member/wal/0000000000000001-000000000006cc6a.wal"}
{"level":"info","ts":"2025-11-27T09:51:01.892617+0300","caller":"etcdserver/server.go:1490","msg":"triggering snapshot","local-member-id":"9c7923a64b6bafc8","local-member-applied-index":500005,"local-member-snapshot-index":400004,"local-member-snapshot-count":100000}
{"level":"info","ts":"2025-11-27T09:51:01.907485+0300","caller":"etcdserver/server.go:2553","msg":"saved snapshot","snapshot-index":500005}
{"level":"info","ts":"2025-11-27T09:51:01.907701+0300","caller":"etcdserver/server.go:2583","msg":"compacted Raft logs","compact-index":495005}
Сообщения СУБД Pangolin:
[postgres@srv1 ~]$ pglog | head
2025-11-27 17:00:51 MSK [184268]: [12-1] app=,user=,db=,client=,type=postmaster LOG: product version: Platform V Pangolin DB 6.7.0
2025-11-27 17:00:51 MSK [184268]: [13-1] app=,user=,db=,client=,type=postmaster LOG: product build info: build 26 (21:39:41 20.03.2026) commit f28ce0fac88b4ffa22294349d98367d49e608abc
2025-11-27 17:00:51 MSK [184268]: [14-1] app=,user=,db=,client=,type=postmaster LOG: starting PostgreSQL 15.15 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Platform V SberLinux 11.5.0-11), 64-bit
2025-11-27 17:00:51 MSK [184268]: [15-1] app=,user=,db=,client=,type=postmaster LOG: listening on IPv4 address "0.0.0.0", port 5433
2025-11-27 17:00:51 MSK [184268]: [16-1] app=,user=,db=,client=,type=postmaster LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5433"
2025-11-27 17:00:51 MSK [184274]: [1-1] app=startup,user=,db=,client=[bgworker],type=startup LOG: database system was shut down at 2026-09-08 10:51:20 MSK
2025-11-27 17:00:51 MSK [184274]: [2-1] app=startup,user=,db=,client=[bgworker],type=startup LOG: entering standby mode
2025-11-27 17:00:51 MSK [184275]: [1-1] app=idle sessions terminator,user=,db=,client=[bgworker],type=idle sessions terminator LOG: idle terminator started
2025-11-27 17:00:51 MSK [184274]: [3-1] app=startup,user=,db=,client=[bgworker],type=startup LOG: consistent recovery state reached at 0/60000C0
2025-11-27 17:00:51 MSK [184274]: [4-1] app=startup,user=,db=,client=[bgworker],type=startup LOG: invalid record length at 0/60000C0: wanted 26, got 0
Подведем итоги
Вопрос 1
Вопрос 1: Куда передаются сообщения Pangolin Manager непосредственно после его старта?
Вопрос 2
Вопрос 2: Для пользователя postgres сконфигурированы псевдонимы. Какой из них используется для проверки журнала сообщений сервиса Pangolin Manager?
Вопрос 3
Вопрос 3: С помощью какого псевдонима команды удобно просматривать журнал сообщений etcd?