Можно ли изменить тег, который управляемая служба systemd использует для ведения журнала? Например, мой индивидуальный сервис report-daemon.service
определяется как
# ...
[Service]
ExecStart=/usr/bin/php # ...
# ...
появляется как php
вместо того report-daemon
(похоже, тег выводится из ExecStart
)
$ sudo journalctl --unit report-daemon
# ...
May 30 16:26:11 delta php[994]: Found 0 new revisions for Ctytn4a6zjw
May 30 16:26:12 delta php[994]: Found 0 new revisions for efE8xuvUjAo
# ...
На странице руководства нет никаких опций для установки этого параметра в файле модуля. Можно ли где-нибудь поменять тег?
SyslogIdentifier = Устанавливает имя процесса («тег системного журнала») для префикса строк журнала, отправляемых в систему ведения журнала или в буфер журнала ядра, с помощью. Если не установлен, по умолчанию используется имя выполняемого процесса. Этот параметр полезен только в том случае, если для StandardOutput = или StandardError = установлено значение journal, syslog или kmsg (или те же настройки в сочетании с + console), и он применяется только к сообщениям журнала, записанным в stdout или stderr.
https://www.freedesktop.org/software/systemd/man/systemd.exec.html#SyslogIdentifier=
Это отменяет SYSLOG_IDENTIFIER
поле в journalctl
вывод.
# cat /etc/systemd/system/prvzn.service | grep prvzn
ExecStart=/opt/infra/prvzn exec --config-dir ${CONFIG_DIR}
SyslogIdentifier=prvzn-foobar
Результат в таких строках journalctl:
# journalctl | grep prvzn | tail -n1
Apr 30 08:29:16 ro01 prvzn-foobar[31787]: prvzn (info)2018/04/30 08:29:16 evaluation successful.
Я использую смесь разных версий Ubuntu (14.04, 16.04, 17.10) и CentOS (7) ... моя собственная борьба заключается в том, что systemd быстро меняется, и многие параметры конфигурации не работают последовательно или в некоторых случаях не работают. t доступен даже между версиями. Проверьте страницы руководства для вашей конкретной версии systemd. ymmv
Обновление 1: подробный вариант будет отображаться в длинном формате и, следовательно, включает UNIT:
[root@localhost]# journalctl --unit newnginx -o verbose
-- Logs begin at Sun 2015-04-05 10:36:30 BST, end at Mon 2015-06-01 08:17:58 BST. --
Sun 2015-05-31 10:27:38.344553 BST [s=4cc44a9cf9344c948fd4716fe024439e;i=3198;b=be3381af5b1d4743a4ccc1e346eab405;m=1548bfaf08;t=5175d51fadf41;x=eb6bb8ee2b2be47e]
PRIORITY=6
_UID=0
_GID=0
_BOOT_ID=be3381af5b1d4743a4ccc1e346eab405
_MACHINE_ID=9619293167aa4f76b45b745e9f4e8935
_HOSTNAME=localhost.localdomain
_CAP_EFFECTIVE=1fffffffff
_SYSTEMD_CGROUP=/
SYSLOG_FACILITY=3
SYSLOG_IDENTIFIER=systemd
_TRANSPORT=journal
_PID=1
_COMM=systemd
_EXE=/usr/lib/systemd/systemd
_CMDLINE=/usr/lib/systemd/systemd --system --deserialize 21
_SELINUX_CONTEXT=system_u:system_r:init_t:s0
CODE_FILE=src/core/unit.c
CODE_LINE=1115
CODE_FUNCTION=unit_status_log_starting_stopping_reloading
MESSAGE_ID=7d4958e842da4a758f6c1cdc7b36dcc5
MESSAGE=Starting nginx - high performance web server...
UNIT=newnginx.service
_SOURCE_REALTIME_TIMESTAMP=1433064458344553
Sun 2015-05-31 10:27:38.354983 BST [s=4cc44a9cf9344c948fd4716fe024439e;i=3199;b=be3381af5b1d4743a4ccc1e346eab405;m=1548bfd0ee;t=5175d51fb0127;x=bc50f03db39f8d09]
PRIORITY=6
_UID=0
_GID=0
_BOOT_ID=be3381af5b1d4743a4ccc1e346eab405
_MACHINE_ID=9619293167aa4f76b45b745e9f4e8935
_HOSTNAME=localhost.localdomain
_CAP_EFFECTIVE=1fffffffff
_SYSTEMD_CGROUP=/
SYSLOG_FACILITY=3
_SELINUX_CONTEXT=system_u:system_r:init_t:s0
_TRANSPORT=stdout
Обновление 2: сценарий Python для печати требуемых записей:
from systemd import journal
j = journal.Reader()
j.this_boot()
j.add_match(_SYSTEMD_UNIT="newnginx.service")
for entry in j:
print('{} {}'.format(entry['_SYSTEMD_UNIT'], entry['MESSAGE']))
Взгляните на этот пример из nginx:
[root@localhost tmp]# journalctl --unit nginx
-- Logs begin at Sun 2015-04-05 10:36:30 BST, end at Sun 2015-05-31 11:12:29 BST. --
May 31 10:20:41 localhost.localdomain systemd[1]: Starting nginx - high performance web server...
May 31 10:20:41 localhost.localdomain nginx[111169]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
May 31 10:20:41 localhost.localdomain nginx[111169]: nginx: configuration file /etc/nginx/nginx.conf test is successful
May 31 10:20:41 localhost.localdomain systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
May 31 10:20:41 localhost.localdomain systemd[1]: Started nginx - high performance web server.
May 31 10:27:05 localhost.localdomain systemd[1]: Stopping nginx - high performance web server...
May 31 10:27:05 localhost.localdomain systemd[1]: Stopped nginx - high performance web server.
May 31 10:58:36 localhost.localdomain systemd[1]: Stopped nginx - high performance web server.
May 31 11:12:29 localhost.localdomain systemd[1]: Starting nginx - high performance web server...
May 31 11:12:29 localhost.localdomain nginx[112202]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
May 31 11:12:29 localhost.localdomain nginx[112202]: nginx: configuration file /etc/nginx/nginx.conf test is successful
May 31 11:12:29 localhost.localdomain systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
May 31 11:12:29 localhost.localdomain systemd[1]: Started nginx - high performance web server.
Кто-то приходит и делает пс, чтобы найти и убить nginx:
[root@localhost tmp]# ps -ef | grep nginx
root 112205 1 0 11:12 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 112207 112205 0 11:12 ? 00:00:00 nginx: worker process
root 112212 111775 0 11:12 pts/4 00:00:00 grep --color=auto nginx
[root@localhost tmp]# kill -9 112205
Журнал теперь содержит:
[root@localhost tmp]# journalctl --unit nginx
-- Logs begin at Sun 2015-04-05 10:36:30 BST, end at Sun 2015-05-31 11:12:57 BST. --
May 31 10:20:41 localhost.localdomain systemd[1]: Starting nginx - high performance web server...
May 31 10:20:41 localhost.localdomain nginx[111169]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
May 31 10:20:41 localhost.localdomain nginx[111169]: nginx: configuration file /etc/nginx/nginx.conf test is successful
May 31 10:20:41 localhost.localdomain systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
May 31 10:20:41 localhost.localdomain systemd[1]: Started nginx - high performance web server.
May 31 10:27:05 localhost.localdomain systemd[1]: Stopping nginx - high performance web server...
May 31 10:27:05 localhost.localdomain systemd[1]: Stopped nginx - high performance web server.
May 31 10:58:36 localhost.localdomain systemd[1]: Stopped nginx - high performance web server.
May 31 11:12:29 localhost.localdomain systemd[1]: Starting nginx - high performance web server...
May 31 11:12:29 localhost.localdomain nginx[112202]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
May 31 11:12:29 localhost.localdomain nginx[112202]: nginx: configuration file /etc/nginx/nginx.conf test is successful
May 31 11:12:29 localhost.localdomain systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
May 31 11:12:29 localhost.localdomain systemd[1]: Started nginx - high performance web server.
May 31 11:12:57 localhost.localdomain systemd[1]: nginx.service: main process exited, code=killed, status=9/KILL
May 31 11:12:57 localhost.localdomain kill[112215]: Usage:
May 31 11:12:57 localhost.localdomain kill[112215]: kill [options] <pid|name> [...]
May 31 11:12:57 localhost.localdomain kill[112215]: Options:
May 31 11:12:57 localhost.localdomain kill[112215]: -a, --all do not restrict the name-to-pid conversion to processes
May 31 11:12:57 localhost.localdomain kill[112215]: with the same uid as the present process
May 31 11:12:57 localhost.localdomain kill[112215]: -s, --signal <sig> send specified signal
May 31 11:12:57 localhost.localdomain kill[112215]: -q, --queue <sig> use sigqueue(2) rather than kill(2)
May 31 11:12:57 localhost.localdomain kill[112215]: -p, --pid print pids without signaling them
May 31 11:12:57 localhost.localdomain kill[112215]: -l, --list [=<signal>] list signal names, or convert one to a name
May 31 11:12:57 localhost.localdomain kill[112215]: -L, --table list signal names and numbers
May 31 11:12:57 localhost.localdomain kill[112215]: -h, --help display this help and exit
May 31 11:12:57 localhost.localdomain kill[112215]: -V, --version output version information and exit
May 31 11:12:57 localhost.localdomain kill[112215]: For more details see kill(1).
May 31 11:12:57 localhost.localdomain systemd[1]: nginx.service: control process exited, code=exited status=1
May 31 11:12:57 localhost.localdomain systemd[1]: Unit nginx.service entered failed state.
Наблюдайте, как столбец, в котором вы видите только php содержит имя процесса, который воздействует на модуль nginx systemd, там перечислены systemd, nginx, kill. Помогает ли это объяснить.
Имя устройства дается ему по имени файла. На Centos 7 я сделал:
(cfs)[root@localhost system]# pwd
/usr/lib/systemd/system
^?(cfs)[root@localhost system]# cp nginx.service newnginx.service
Остановите оригинальный nxginx:
(cfs)[root@localhost system]# service nginx stop
Redirecting to /bin/systemctl stop nginx.service
(cfs)[root@localhost system]# service h^Cinx stop
Посмотрите и запустите newnginx:
(cfs)[root@localhost system]# service newnginx status
Redirecting to /bin/systemctl status newnginx.service
newnginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/newnginx.service; disabled)
Active: inactive (dead)
Docs: http://nginx.org/en/docs/
(cfs)[root@localhost system]# service newnginx start
Redirecting to /bin/systemctl start newnginx.service
Journalctl теперь перечисляет newnginx
Ед. изм:
(cfs)[root@localhost system]# journalctl --unit newnginx
-- Logs begin at Sun 2015-04-05 10:36:30 BST, end at Sun 2015-05-31 10:27:38 BST. --
May 31 10:27:38 localhost.localdomain systemd[1]: Starting nginx - high performance web server...
May 31 10:27:38 localhost.localdomain nginx[111311]: nginx: the configuration file /etc/nginx/nginx.conf syntax is o
May 31 10:27:38 localhost.localdomain nginx[111311]: nginx: configuration file /etc/nginx/nginx.conf test is success
May 31 10:27:38 localhost.localdomain systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
May 31 10:27:38 localhost.localdomain systemd[1]: Started nginx - high performance web server.
Теперь есть два модуля nginx systemd:
# systemctl list-unit-files --all | grep nginx
newnginx.service disabled
nginx.service disabled