diff --git a/app/Services/LogAnalysis/GoAccess/GoAccess.php b/app/Services/LogAnalysis/GoAccess/GoAccess.php index dabc4d1a2..6fec274ed 100644 --- a/app/Services/LogAnalysis/GoAccess/GoAccess.php +++ b/app/Services/LogAnalysis/GoAccess/GoAccess.php @@ -21,7 +21,7 @@ class GoAccess extends AbstractService public const CRON_FREQUENCY = '0 * * * *'; - public const SCRIPT_VERSION = 1; + public const SCRIPT_VERSION = 2; public const CONF_VERSION = 1; diff --git a/resources/views/ssh/services/log_analysis/goaccess/bin/process.blade.php b/resources/views/ssh/services/log_analysis/goaccess/bin/process.blade.php index 6242503ef..23a0d20c2 100644 --- a/resources/views/ssh/services/log_analysis/goaccess/bin/process.blade.php +++ b/resources/views/ssh/services/log_analysis/goaccess/bin/process.blade.php @@ -61,8 +61,19 @@ fi else # Normal path: direct-file incremental (GoAccess tracks inode/offset). + # Feed only uncompressed logs — GoAccess reads rotated *.gz files as + # binary and aborts the run. Compressed rotations were already ingested + # by earlier runs, and the boundary window above re-reads them via + # `zcat -f` when crossing months. + local files=() f # shellcheck disable=SC2086 - goaccess $LOG_GLOB --log-format="$LOG_FORMAT" --persist --restore --db-path="$db" -o "$out" --date-spec=date --no-progress + for f in $LOG_GLOB; do + [ -e "$f" ] || continue + case "$f" in *.gz) continue ;; esac + files+=("$f") + done + [ "${#files[@]}" -gt 0 ] || return 0 + goaccess "${files[@]}" --log-format="$LOG_FORMAT" --persist --restore --db-path="$db" -o "$out" --date-spec=date --no-progress fi }