ncc.zabbix_fbsd_templates

Yohn Y. 2026-02-15 Parent:dab245c08aae Child:40a104df6589

25:c1d9bf2ab39e Browse Files

.. v1.r202602.4 * Исправлена ошибка с неверным перенаправлением логов ошибок, приводящая к отправке сообщений не в файл, а в демону cron * Если в результате плохой связности не удалось оюновить базы данных пакетов или аудита, не делаем ничего с имеющимися данными. Это позаоляет не флапать мониторингом на плохих каналах.

src/aw.fbsd-mon-helper/lib/log.sh src/aw.fbsd-mon-helper/lib/pkg.sh src/aw.fbsd-mon-helper/version

     1.1 --- a/src/aw.fbsd-mon-helper/lib/log.sh	Sat Oct 04 12:27:40 2025 +0300
     1.2 +++ b/src/aw.fbsd-mon-helper/lib/log.sh	Sun Feb 15 18:19:43 2026 +0300
     1.3 @@ -2,6 +2,7 @@
     1.4    date '+%s'
     1.5  }
     1.6  
     1.7 +
     1.8  v_log_timer="$(log_get_timer)"
     1.9  v_log_section="None"
    1.10  
    1.11 @@ -9,28 +10,31 @@
    1.12    logger -t "aw-fbsd-monitoring" "$@"
    1.13  }
    1.14  
    1.15 +
    1.16  to_status () {
    1.17    cat | awk -v n="$1" '{print n, " : ", $0}' >> "$STATE_ROOT/status"
    1.18  }
    1.19  
    1.20 +
    1.21  log_err () {
    1.22 -  log -p user.err -s "$@" 2<&1 | to_status
    1.23 +  log -p user.err -s "$@" 2>&1 | to_status
    1.24  }
    1.25  
    1.26  
    1.27 -
    1.28  write_status () {
    1.29    local module="$1"
    1.30    shift
    1.31    echo "$0" | to_status "$module"
    1.32  }
    1.33  
    1.34 +
    1.35  log_start () {
    1.36    log "$1: start"
    1.37    v_log_timer="$(log_get_timer)"
    1.38    v_log_section="$1"
    1.39  }
    1.40  
    1.41 +
    1.42  log_end () {
    1.43    local t
    1.44    t="$(( $(log_get_timer) - $v_log_timer ))"
     2.1 --- a/src/aw.fbsd-mon-helper/lib/pkg.sh	Sat Oct 04 12:27:40 2025 +0300
     2.2 +++ b/src/aw.fbsd-mon-helper/lib/pkg.sh	Sun Feb 15 18:19:43 2026 +0300
     2.3 @@ -5,6 +5,7 @@
     2.4  v_pkg_detail_status_tmp="${TMP_ROOT}/pkg_detail"
     2.5  
     2.6  v_pkg_update_status="${TMP_ROOT}/pkg_update"
     2.7 +v_pkg_update_status_subs="${TMP_ROOT}/pkg_update.subs"
     2.8  v_pkg_update_status_res="${STATE_ROOT}/pkg_update"
     2.9  v_pkg_detail_status_list="${TMP_ROOT}/pkg_detail_status_list"
    2.10  
    2.11 @@ -13,12 +14,20 @@
    2.12      mkdir -p "$v_pkg_detail_status"
    2.13    fi
    2.14  
    2.15 -  if ! [ -d "${v_pkg_detail_status_tmp}" ] ; then
    2.16 +  if ! [ -d "${v_pkg_detail_status_tmp}" ]; then
    2.17      mkdir -p "${v_pkg_detail_status_tmp}"
    2.18    fi
    2.19  
    2.20 +  if ! [ -d "${v_pkg_update_status_subs}" ]; then
    2.21 +    mkdir -p "${v_pkg_update_status_subs}"
    2.22 +  fi
    2.23 +
    2.24    log "Update pakages"
    2.25 -  pkg update 2>&1 | log
    2.26 +  (
    2.27 +    pkg update 2>&1
    2.28 +    echo $? > "${v_pkg_update_status_subs}/pkg_update"
    2.29 +
    2.30 +  ) | log
    2.31    # Обновление базы аудита происходит на получении общих данных по пакетам
    2.32  
    2.33    touch "${v_pkg_detail_status_list}"
    2.34 @@ -170,8 +179,13 @@
    2.35  
    2.36    # -
    2.37    # Удаляем старые файлы, в которые давно не не пишутся данные по пакетам
    2.38 -  log "Clean old files -- detail and audit pakages"
    2.39 -  find "$v_pkg_detail_status" -type f -cmin +30 -print0 | xargs -0n 1 rm -frv 2>&1 | log
    2.40 +  if [ "$(cat "${v_pkg_update_status_subs}/pkg_update")" -eq 0 ] ; then
    2.41 +    log "Clean old files -- detail and audit pakages"
    2.42 +    find "$v_pkg_detail_status" -type f -cmin +30 -print0 | xargs -0n 1 rm -frv 2>&1 | log
    2.43 +
    2.44 +  else
    2.45 +    log "WARN: pkg update end with error, do nothing"
    2.46 +  fi
    2.47  }
    2.48  
    2.49  
    2.50 @@ -189,11 +203,29 @@
    2.51    else
    2.52      pkg_init
    2.53  
    2.54 -    pkg_check_up_status
    2.55 -    pkg audit -qrF > "${v_pkg_update_status}.audit"
    2.56 -    mv -f "${v_pkg_update_status}.audit" "${v_pkg_update_status_res}.audit"
    2.57 +    if [ "$(cat "${v_pkg_update_status_subs}/pkg_update")" -ne 0 ] ; then
    2.58 +      log_err "Error on update packages. pkg update status: $(cat "${v_pkg_update_status_subs}/pkg_update")"
    2.59 +
    2.60 +    else
    2.61 +      pkg_check_up_status
    2.62 +      pkg_make_detail
    2.63 +    fi
    2.64 +
    2.65 +    pkg audit -qrF \
    2.66 +      > "${v_pkg_update_status}.audit" \
    2.67 +      2> "${v_pkg_update_status_subs}/pkg_audit_err"
    2.68  
    2.69 -    pkg_make_detail
    2.70 +    # Финт ушами, поскольку pkg audit возвращает 1 если всё нормально, но есть пакеты с уязвимостями
    2.71 +    # и если не всё нормально тоже...
    2.72 +    if [ "$(cat "${v_pkg_update_status_subs}/pkg_audit_err" | wc -l)" -eq 0 ] ; then
    2.73 +      mv -f "${v_pkg_update_status}.audit" "${v_pkg_update_status_res}.audit"
    2.74 +
    2.75 +    else
    2.76 +      log_err "Error on fetch vuln data. pkg audit err:"
    2.77 +      cat "${v_pkg_update_status_subs}/pkg_audit_err" | awk '{print "PKG AUDIT ERR:", $0}' | log_err
    2.78 +      touch "${v_pkg_update_status_res}.audit"
    2.79 +    fi
    2.80 +
    2.81    fi
    2.82  
    2.83    pkg_finaly
     3.1 --- a/src/aw.fbsd-mon-helper/version	Sat Oct 04 12:27:40 2025 +0300
     3.2 +++ b/src/aw.fbsd-mon-helper/version	Sun Feb 15 18:19:43 2026 +0300
     3.3 @@ -1,1 +1,1 @@
     3.4 -v1.r202510.1
     3.5 +v1.r202602.4