1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/bin/bash
- # Just die if not root.
- if [ ${UID} -ne 0 ]; then
- echo "FATAL: Need to run as root."
- exit 1
- fi
- # Shutdown handler.
- trap_shutdown() {
- echo "Shutting down..."
- exit 0
- }
- trap trap_shutdown SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM
- # Announce collection period.
- PERIOD=10
- if [ -n "$1" ]; then
- PERIOD=$1
- fi
- REPORT_LENGTH=$((2 * PERIOD - 1))
- echo "Collecting and reporting system activity statistics every ${PERIOD} seconds..."
- # Clean up /var/log/sa on startup if so requested.
- case ${STARTUP_SCRATCH:-0} in
- 1|yes|true)
- echo "Removing existing SA1 data due to scratch-on-startup being ${STARTUP_SCRATCH}..."
- rm -f /var/log/sa/sa*
- ;;
- *)
- echo "Skipping scratch-on-startup..."
- ;;
- esac
- # Add a record of rotation to existing logs if so requested.
- case ${STARTUP_ROTATE:-0} in
- 1|yes|true)
- echo "Marking existing SA1 data as rotated due to rotate-on-startup being ${STARTUP_ROTATE}..."
- /usr/lib64/sa/sa1 --rotate
- ;;
- *)
- echo "Skipping rotate-on-startup..."
- ;;
- esac
- # Mark a reboot.
- /usr/lib64/sa/sa1 --boot
- # Remember the hour-of-day.
- PREV_HOUR="$(date +%H)"
- # Do the loop.
- while [ 1 ]; do
- # Start sa1.
- /usr/lib64/sa/sa1 ${PERIOD} 1
- # Produce the report.
- REPORT_FROM=$(date +%H:%M:%S -d "${REPORT_LENGTH} seconds ago")
- REPORT_UNTIL=$(date +%H:%M:%S)
- /usr/bin/sadf -s ${REPORT_FROM} -e ${REPORT_UNTIL} -j -- -A > /var/log/sa/sysstat-dump.json
- # Have we awoken in a new day? Rotation record, please!
- NEW_HOUR="$(date +%H)"
- if [ ${NEW_HOUR} -lt ${PREV_HOUR} ]; then
- echo "Marking last saXX as rotated..."
- /usr/lib64/sa/sa1 --rotate
- # TODO: remove the old file
- fi
- PREV_HOUR=${NEW_HOUR}
- sleep ${PERIOD}
- done
- # End of entrypoint-sysstat.sh
|