rsyslog потребляет много ресурсов

После обновления сервера столкнулся с тем, что rsyslog начал потреблять очень много ресурсов, более 150% процессорного времени, которое стоит денег на облачном хостинге.

Проблема оказалась в том, что демон rsyslogd не может читать процесс /proc/kmsg, у него нет прав.

Решается проблема просто, нужно создать файл /etc/init/rsyslog-kmsg.conf:

# rsyslog-kmsg — feed /proc/kmsg into rsyslog
#
# This service is used to feed output from /proc/kmsg into rsyslog so
# it does not need to be privileged.

description «feed /proc/kmsg into rsyslog»

start on starting rsyslog
stop on stopped rsyslog

respawn

pre-start script
  mkdir -p /var/run/rsyslog
  chown syslog:syslog /var/run/rsyslog

  [ -e /var/run/rsyslog/kmsg ] || mkfifo -m 600 /var/run/rsyslog/kmsg 
  chown syslog:syslog /var/run/rsyslog/kmsg
end script

exec dd bs=1 if=/proc/kmsg of=/var/run/rsyslog/kmsg

post-stop script
  rm /var/run/rsyslog/kmsg
end script

После чего выполнить:

$ sudo ln -s /lib/init/upstart-job /etc/init.d/rsyslog-kmsg

В файл /etc/rsyslog.conf добавить:

$KLogPath /var/run/rsyslog/kmsg

После чего перестартовать rsyslog:

$ sudo service rsyslog restart

15 февраля 2013

linux