From bd0a19aa177688b8f97b8531e8003e7ff232a54f Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Fri, 14 Jan 2022 10:24:07 -0800 Subject: [PATCH] [rsyslog]Setting log file size to 16Mb (#9504) Why I did it The existing log file size in sonic is 1 Mb. Over a period of time this leads to huge number of log files which becomes difficult for monitoring applications to handle. Instead of large number of small files, the size of the log file is not set to 16 Mb which reduces the number of files over a period of time. How I did it Changed the size parameter and related macros in logrotate config for rsyslog How to verify it Execute logrotate manually and verify the limit when the file gets rotated. Signed-off-by: Sudharsan Dhamal Gopalarathnam --- files/build_templates/sonic_debian_extension.j2 | 4 ++++ .../image_config/logrotate/logrotate-config.service | 12 ++++++++++++ files/image_config/logrotate/logrotate-config.sh | 4 ++++ .../logrotate/{logrotate.d/rsyslog => rsyslog.j2} | 6 +++++- 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 files/image_config/logrotate/logrotate-config.service create mode 100755 files/image_config/logrotate/logrotate-config.sh rename files/image_config/logrotate/{logrotate.d/rsyslog => rsyslog.j2} (97%) diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 6cd852e6e8ea..09574aff7bc9 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 000000000000..b965e4b32425 --- /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 000000000000..76caec6f035d --- /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 60894a00f769..dd360dc8608e 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))