diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 6cd852e6e8..09574aff7b 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -377,6 +377,10 @@ echo "system-health.service" | sudo tee -a $GENERATED_SERVICE_FILE # Copy logrotate.d configuration files sudo cp -f $IMAGE_CONFIGS/logrotate/logrotate.d/* $FILESYSTEM_ROOT/etc/logrotate.d/ +sudo cp $IMAGE_CONFIGS/logrotate/rsyslog.j2 $FILESYSTEM_ROOT_USR_SHARE_SONIC_TEMPLATES/ +sudo cp $IMAGE_CONFIGS/logrotate/logrotate-config.service $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM +sudo cp $IMAGE_CONFIGS/logrotate/logrotate-config.sh $FILESYSTEM_ROOT/usr/bin/ +echo "logrotate-config.service" | sudo tee -a $GENERATED_SERVICE_FILE # Copy systemd-journald configuration files sudo cp -f $IMAGE_CONFIGS/systemd/journald.conf $FILESYSTEM_ROOT/etc/systemd/ diff --git a/files/image_config/logrotate/logrotate-config.service b/files/image_config/logrotate/logrotate-config.service new file mode 100644 index 0000000000..b965e4b324 --- /dev/null +++ b/files/image_config/logrotate/logrotate-config.service @@ -0,0 +1,12 @@ +[Unit] +Description=Update logrotate configuration +Requires=updategraph.service +After=updategraph.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/logrotate-config.sh + +[Install] +WantedBy=multi-user.target + diff --git a/files/image_config/logrotate/logrotate-config.sh b/files/image_config/logrotate/logrotate-config.sh new file mode 100755 index 0000000000..76caec6f03 --- /dev/null +++ b/files/image_config/logrotate/logrotate-config.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sonic-cfggen -d -t /usr/share/sonic/templates/rsyslog.j2 -a "{\"var_log_kb\":$(df -k /var/log | sed -n 2p | awk '{ print $2 }') }" > /etc/logrotate.d/rsyslog + diff --git a/files/image_config/logrotate/logrotate.d/rsyslog b/files/image_config/logrotate/rsyslog.j2 similarity index 97% rename from files/image_config/logrotate/logrotate.d/rsyslog rename to files/image_config/logrotate/rsyslog.j2 index 60894a00f7..dd360dc860 100644 --- a/files/image_config/logrotate/logrotate.d/rsyslog +++ b/files/image_config/logrotate/rsyslog.j2 @@ -35,7 +35,11 @@ /var/log/swss/swss*.rec /var/log/swss/responsepublisher.rec { +{% if var_log_kb <= 204800 %} size 1M +{% else %} + size 16M +{% endif %} rotate 5000 missingok notifempty @@ -53,7 +57,7 @@ # should be disabled, just in case they get created and rotated RESERVED_SPACE_KB=4096 - VAR_LOG_SIZE_KB=$(df -k /var/log | sed -n 2p | awk '{ print $2 }') + VARL_LOG_SIZE_KB={{var_log_kb}} # Limit usable space to 90% of the partition minus the reserved space for other logs USABLE_SPACE_KB=$(( (VAR_LOG_SIZE_KB * 90 / 100) - RESERVED_SPACE_KB))