ncc.zabbix_fbsd_templates

Yohn Y. 2024-10-13 Child:42f11a826ab9

0:0f46afe818e3 Browse Files

.. init

src/aw.fbsd-mon-helper/bin/lounch.sh src/aw.fbsd-mon-helper/config.dist.sh src/aw.fbsd-mon-helper/lib/common.sh src/aw.fbsd-mon-helper/lib/fbsd_up.sh src/aw.fbsd-mon-helper/lib/log.sh src/aw.fbsd-mon-helper/lib/pkg.sh tools/make_dist.sh zbx_export_templates.yaml

     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/aw.fbsd-mon-helper/bin/lounch.sh	Sun Oct 13 18:44:51 2024 +0300
     1.3 @@ -0,0 +1,44 @@
     1.4 +#!/bin/sh
     1.5 +export PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
     1.6 +BIN_ROOT="$(dirname "$(readlink -f "$0")")"
     1.7 +APP_ROOT="$(dirname "$BIN_ROOT")"
     1.8 +STATE_ROOT="$APP_ROOT/var"
     1.9 +
    1.10 +cat /dev/null > "$STATE_ROOT/status"
    1.11 +
    1.12 +. "$APP_ROOT/lib/log.sh"
    1.13 +
    1.14 +
    1.15 +if ! [ -f "$APP_ROOT/config.sh" ] ; then
    1.16 +  echo "UNCONFIGURED!!!!" >&2
    1.17 +  exit 1
    1.18 +fi
    1.19 +
    1.20 +TMP_ROOT="$(mktemp -dq aw-fbsd-monitoring-XXXXXXXXXXXX)"
    1.21 +_err_status=$?
    1.22 +if [ ${_err_status} -ne 0 ] ; then
    1.23 +  log_err -s "Cannot make TMP_ROOT, error status ${_err_status}"
    1.24 +  exit 1
    1.25 +fi
    1.26 +
    1.27 +
    1.28 +my_exit () {
    1.29 +  if [ -d "$TMP_ROOT" ] ; then
    1.30 +    rm -frv "$TMP_ROOT" 2>&1 | log
    1.31 +  fi
    1.32 +}
    1.33 +
    1.34 +trap my_exit 0
    1.35 +
    1.36 +. "$APP_ROOT/config.sh"
    1.37 +. "$APP_ROOT/lib/common.sh"
    1.38 +. "$APP_ROOT/lib/fbsd_up.sh"
    1.39 +. "$APP_ROOT/lib/pkg.sh"
    1.40 +
    1.41 +log "Start process, but sleep some..."
    1.42 +sleep_some
    1.43 +
    1.44 +{
    1.45 +  fbsd_up_do
    1.46 +  pkg_do
    1.47 +} 2>&1 | log_err -s 2>&1 | to_status
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/src/aw.fbsd-mon-helper/config.dist.sh	Sun Oct 13 18:44:51 2024 +0300
     2.3 @@ -0,0 +1,1 @@
     2.4 +ADMIN_MAIL="root"
     2.5 \ No newline at end of file
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/src/aw.fbsd-mon-helper/lib/common.sh	Sun Oct 13 18:44:51 2024 +0300
     3.3 @@ -0,0 +1,7 @@
     3.4 +get_rand_sec () {
     3.5 +  awk 'BEGIN{srand();print int((rand() * 100) % 60)}'
     3.6 +}
     3.7 +
     3.8 +sleep_some () {
     3.9 +  sleep "$(get_rand_sec)"
    3.10 +}
    3.11 \ No newline at end of file
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/src/aw.fbsd-mon-helper/lib/fbsd_up.sh	Sun Oct 13 18:44:51 2024 +0300
     4.3 @@ -0,0 +1,64 @@
     4.4 +#!/bin/sh
     4.5 +# Работа с обновлениями FreeBSD
     4.6 +
     4.7 +v_fbsd_up_binary="/usr/sbin/freebsd-update"
     4.8 +v_fbsd_up_out="$STATE_ROOT/fbsd_update"
     4.9 +v_fbsd_up_status="$STATE_ROOT/fbsd_update.status"
    4.10 +v_fbsd_up_current_ver="$STATE_ROOT/fbsd_update.versions"
    4.11 +
    4.12 +
    4.13 +fbsd_up_init () {
    4.14 +  $v_fbsd_up_binary fetch > "$v_fbsd_up_out"
    4.15 +}
    4.16 +
    4.17 +
    4.18 +fbsd_up_status () {
    4.19 +  echo "$1" > "$v_fbsd_up_status"
    4.20 +}
    4.21 +
    4.22 +
    4.23 +fbsd_up_versions () {
    4.24 +  printf "userland=%s\nkernel=%s\nkcurrent=%s\n" \
    4.25 +    "$(/bin/freebsd-version -u)" \
    4.26 +    "$(/bin/freebsd-version -k)" \
    4.27 +    "$(/bin/freebsd-version -r)" \
    4.28 +    > "${v_fbsd_up_current_ver}"
    4.29 +}
    4.30 +
    4.31 +
    4.32 +fbsd_up_do () {
    4.33 +  log_start "fbsd_up_do"
    4.34 +
    4.35 +  fbsd_up_init
    4.36 +  fbsd_up_versions
    4.37 +  {
    4.38 +    $v_fbsd_up_binary updatesready
    4.39 +    local _ret="$?"
    4.40 +
    4.41 +    case "$_ret" in
    4.42 +      0 )
    4.43 +        if [ "$(cat "$v_fbsd_up_status")" != "NEED UPDATE" ]; then
    4.44 +          mail -s "$(hostname -f): FREEBSD UPDATE NEEDED" "$ADMIN_MAIL" < "$v_fbsd_up_out"
    4.45 +        fi
    4.46 +
    4.47 +        fbsd_up_status "NEED UPDATE"
    4.48 +       ;;
    4.49 +
    4.50 +      1 )
    4.51 +        fbsd_up_status "RUN ERROR"
    4.52 +        ;;
    4.53 +
    4.54 +      2 )
    4.55 +        fbsd_up_status "OK"
    4.56 +        ;;
    4.57 +
    4.58 +      * )
    4.59 +        fbsd_up_status "RUN ERROR"
    4.60 +        log_err "fbsd_up: updatesready return unknown code ${_ret}"
    4.61 +        ;;
    4.62 +
    4.63 +      esac
    4.64 +  } 2>&1 | log
    4.65 +
    4.66 +  log_end
    4.67 +}
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/src/aw.fbsd-mon-helper/lib/log.sh	Sun Oct 13 18:44:51 2024 +0300
     5.3 @@ -0,0 +1,38 @@
     5.4 +log_get_timer () {
     5.5 +  date '+%s'
     5.6 +}
     5.7 +
     5.8 +v_log_timer="$(log_get_timer)"
     5.9 +v_log_section="None"
    5.10 +
    5.11 +log () {
    5.12 +  logger -t "aw-fbsd-monitoring" "$@"
    5.13 +}
    5.14 +
    5.15 +to_status () {
    5.16 +  cat | awk -v n="$1" '{print n, " : ", $0}' >> "$STATE_ROOT/status"
    5.17 +}
    5.18 +
    5.19 +log_err () {
    5.20 +  log -p user.err -s "$@" 2<&1 | to_status
    5.21 +}
    5.22 +
    5.23 +
    5.24 +
    5.25 +write_status () {
    5.26 +  local module="$1"
    5.27 +  shift
    5.28 +  echo "$0" | to_status "$module"
    5.29 +}
    5.30 +
    5.31 +log_start () {
    5.32 +  log "$1: start"
    5.33 +  v_log_timer="$(log_get_timer)"
    5.34 +  v_log_section="$1"
    5.35 +}
    5.36 +
    5.37 +log_end () {
    5.38 +  local t
    5.39 +  t="$(( $(log_get_timer) - $v_log_timer ))"
    5.40 +  log "${v_log_section}: end in $t seconds"
    5.41 +}
    5.42 \ No newline at end of file
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/src/aw.fbsd-mon-helper/lib/pkg.sh	Sun Oct 13 18:44:51 2024 +0300
     6.3 @@ -0,0 +1,95 @@
     6.4 +#!/bin/sh
     6.5 +# Различная статистика по пакетам
     6.6 +
     6.7 +v_pkg_detail_status="$STATE_ROOT/pkg_detail"
     6.8 +v_pkg_update_status="$STATE_ROOT/pkg_update"
     6.9 +
    6.10 +pkg_init () {
    6.11 +  if ! [ -d "$v_pkg_detail_status" ]; then
    6.12 +    mkdir -p "$v_pkg_detail_status"
    6.13 +  else
    6.14 +    # Удаляем старые директории, в которые давно не не пишутся данные по пакетам
    6.15 +    log "Clean old detail pakages"
    6.16 +    find "$v_pkg_detail_status" -type f -ctime +1 -print0 | xargs -0n 1 rm -frv 2>&1 | log
    6.17 +  fi
    6.18 +  log "Update pakages"
    6.19 +  pkg update 2>&1 | log
    6.20 +  # Обновление базы аудита происходит на получении общих данных по пакетам
    6.21 +}
    6.22 +
    6.23 +pkg_make_detail () {
    6.24 +  local vl_pkg_origin
    6.25 +  local vl_pkg_repo
    6.26 +  local vl_pkg_name
    6.27 +  local vl_pkg_ver
    6.28 +  local vl_status_file
    6.29 +  local vl_pkg_status
    6.30 +
    6.31 +  service -e | awk '$1 ~ "^/usr/local" {print $1}' | while read svc_file; do
    6.32 +      if ! [ -f "$svc_file" ] ; then
    6.33 +        continue
    6.34 +      fi
    6.35 +
    6.36 +      vl_pkg_origin="$(pkg which -o "$svc_file" | awk '$0 ~ "was installed by package" {print $6}')"
    6.37 +      if [ -z "$vl_pkg_origin" ] ; then
    6.38 +        log "$svc_file have no matched pkg"
    6.39 +        continue
    6.40 +      fi
    6.41 +
    6.42 +      vl_pkg_name="$(basename "$vl_pkg_origin")"
    6.43 +      vl_pkg_repo="$(pkg query '%R' "$vl_pkg_origin")"
    6.44 +      vl_pkg_ver="$(pkg query '%v' "$vl_pkg_origin")"
    6.45 +      vl_pkg_status="$(pkg version -qUO "$vl_pkg_origin" | awk '{print $2}')"
    6.46 +
    6.47 +      case "$vl_pkg_status" in
    6.48 +        = )
    6.49 +          vl_pkg_status=OK
    6.50 +          ;;
    6.51 +
    6.52 +        "<" )
    6.53 +          vl_pkg_status="NEED UPDATE"
    6.54 +          ;;
    6.55 +
    6.56 +        ">" )
    6.57 +          vl_pkg_status="REPO VERSION LOWER"
    6.58 +          ;;
    6.59 +
    6.60 +        "?" )
    6.61 +          vl_pkg_status="NO PACKAGE IN REPO"
    6.62 +          ;;
    6.63 +
    6.64 +        "!" )
    6.65 +          vl_pkg_status="ERROR"
    6.66 +          log_err -s "${vl_pkg_origin}: pkg can not compare version of package"
    6.67 +          ;;
    6.68 +
    6.69 +        * )
    6.70 +          log_err -s "${vl_pkg_origin}: unknown status ${vl_pkg_status}"
    6.71 +          vl_pkg_status="ERROR"
    6.72 +          ;;
    6.73 +
    6.74 +      esac
    6.75 +
    6.76 +      vl_status_file="${v_pkg_detail_status}/${vl_pkg_name}"
    6.77 +      pkg query 'installed=%t\nmainteiner=%m\nsize=%sb\nlocked=%k' "$vl_pkg_origin" \
    6.78 +        > "${vl_status_file}"
    6.79 +
    6.80 +      printf 'ver=%s\nrepo=%s\nstatus=%s\n' "${vl_pkg_ver}" "${vl_pkg_repo}" "${vl_pkg_status}" >> "$vl_status_file"
    6.81 +      pkg audit "${vl_pkg_name}-${vl_pkg_ver}" \
    6.82 +        | awk '!($0 ~ "[0-9]* problem\\(s\\) in [0-9]* installed package\\(s\\) found") {print $0}' \
    6.83 +        > "${vl_status_file}.audit"
    6.84 +
    6.85 +    done
    6.86 +}
    6.87 +
    6.88 +pkg_do () {
    6.89 +  log_start "pkg_do"
    6.90 +
    6.91 +  pkg_init
    6.92 +  pkg version -qUL = | awk '$2 != ">" {print $1}' > "$v_pkg_update_status"
    6.93 +  pkg audit -qF > "${v_pkg_update_status}.audit"
    6.94 +
    6.95 +  pkg_make_detail
    6.96 +
    6.97 +  log_end
    6.98 +}
    6.99 \ No newline at end of file
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/tools/make_dist.sh	Sun Oct 13 18:44:51 2024 +0300
     7.3 @@ -0,0 +1,15 @@
     7.4 +#!/bin/sh
     7.5 +src_root="$(dirname "$(dirname "$(readlink -f "$0")")")"
     7.6 +dist_root="$(readlink -f "$src_root/../dist")"
     7.7 +
     7.8 +ts="$(date "+%Y%m%d-%H%M%S")"
     7.9 +
    7.10 +echo "###"
    7.11 +tar -cvzf "$dist_root/aw.fbsd-mon-helper_$ts.tgz" \
    7.12 +   --owner=root --group=root \
    7.13 +   -C "$src_root/src" \
    7.14 +   aw.fbsd-mon-helper
    7.15 +
    7.16 +echo "==="
    7.17 +echo "$dist_root/aw.fbsd-mon-helper_$ts.tgz"
    7.18 +stat "$dist_root/aw.fbsd-mon-helper_$ts.tgz"
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/zbx_export_templates.yaml	Sun Oct 13 18:44:51 2024 +0300
     8.3 @@ -0,0 +1,432 @@
     8.4 +zabbix_export:
     8.5 +  version: '7.0'
     8.6 +  template_groups:
     8.7 +    - uuid: 22941f4e01294888a9bed3aae15f6ef9
     8.8 +      name: Templates/AWNET
     8.9 +  templates:
    8.10 +    - uuid: 188bbd004fd94b4d8bbaee4333ca8077
    8.11 +      template: 'AWNET FreeBSD Template'
    8.12 +      name: 'AWNET FreeBSD Template'
    8.13 +      description: 'Версия: v0.r202410.1'
    8.14 +      groups:
    8.15 +        - name: Templates/AWNET
    8.16 +      items:
    8.17 +        - uuid: 29891c0f0d2f4297bdfa049c49a3b50f
    8.18 +          name: 'Версия ОС: Ядро системы'
    8.19 +          type: DEPENDENT
    8.20 +          key: aw.fbsd.version.kernel
    8.21 +          delay: '0'
    8.22 +          history: 90d
    8.23 +          value_type: TEXT
    8.24 +          trends: '0'
    8.25 +          preprocessing:
    8.26 +            - type: JSONPATH
    8.27 +              parameters:
    8.28 +                - $.kernel
    8.29 +          master_item:
    8.30 +            key: 'vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/fbsd_update.versions"]'
    8.31 +          tags:
    8.32 +            - tag: Module
    8.33 +              value: 'FreeBSD OS Version'
    8.34 +        - uuid: d7fe2bdc7af04a0cb981cca668835bc7
    8.35 +          name: 'Версия ОС: Ядро системы, находящееся в работе'
    8.36 +          type: DEPENDENT
    8.37 +          key: aw.fbsd.version.kernel.running
    8.38 +          delay: '0'
    8.39 +          history: 90d
    8.40 +          value_type: TEXT
    8.41 +          trends: '0'
    8.42 +          preprocessing:
    8.43 +            - type: JSONPATH
    8.44 +              parameters:
    8.45 +                - $.kcurrent
    8.46 +          master_item:
    8.47 +            key: 'vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/fbsd_update.versions"]'
    8.48 +          tags:
    8.49 +            - tag: Module
    8.50 +              value: 'FreeBSD OS Version'
    8.51 +        - uuid: 6e4bcce1f68b46009f79c9d563448810
    8.52 +          name: 'Версия ОС: Системное окружение'
    8.53 +          type: DEPENDENT
    8.54 +          key: aw.fbsd.version.userland
    8.55 +          delay: '0'
    8.56 +          history: 90d
    8.57 +          value_type: TEXT
    8.58 +          trends: '0'
    8.59 +          preprocessing:
    8.60 +            - type: JSONPATH
    8.61 +              parameters:
    8.62 +                - $.userland
    8.63 +          master_item:
    8.64 +            key: 'vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/fbsd_update.versions"]'
    8.65 +          tags:
    8.66 +            - tag: Module
    8.67 +              value: 'FreeBSD OS Version'
    8.68 +        - uuid: 21140a98f99b4eadb62a632adc76fcf0
    8.69 +          name: 'Ошибки в системном журнале'
    8.70 +          type: ZABBIX_ACTIVE
    8.71 +          key: 'logrt["/var/log/warning_msg\.log$","@FreeBSD syslog file warning filter",utf8]'
    8.72 +          history: 90d
    8.73 +          value_type: LOG
    8.74 +          trends: '0'
    8.75 +          tags:
    8.76 +            - tag: Module
    8.77 +              value: 'Системный журнал'
    8.78 +          triggers:
    8.79 +            - uuid: a9049f62969a465ca9e7dcaa5de8a988
    8.80 +              expression: 'nodata(/AWNET FreeBSD Template/logrt["/var/log/warning_msg\.log$","@FreeBSD syslog file warning filter",utf8],2m)=0'
    8.81 +              name: 'Ошибки в системном журнале'
    8.82 +              opdata: '{ITEM.VALUE}'
    8.83 +              priority: WARNING
    8.84 +        - uuid: 17d8486f93914945b4ccbda2eda4d7ab
    8.85 +          name: 'Обновление ОС: Статус'
    8.86 +          key: 'vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/fbsd_update.status"]'
    8.87 +          delay: 5m
    8.88 +          value_type: TEXT
    8.89 +          trends: '0'
    8.90 +          preprocessing:
    8.91 +            - type: DISCARD_UNCHANGED_HEARTBEAT
    8.92 +              parameters:
    8.93 +                - 12h
    8.94 +          tags:
    8.95 +            - tag: Module
    8.96 +              value: 'FreeBSD Update'
    8.97 +          triggers:
    8.98 +            - uuid: a2f05289705041989108fc1a7984c8bc
    8.99 +              expression: 'last(/AWNET FreeBSD Template/vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/fbsd_update.status"])<>"ОК"'
   8.100 +              name: 'Статус обновления ОС не оптимален'
   8.101 +              opdata: '{ITEM.VALUE}'
   8.102 +              priority: WARNING
   8.103 +              dependencies:
   8.104 +                - name: 'Требуется обновление ОС'
   8.105 +                  expression: 'last(/AWNET FreeBSD Template/vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/fbsd_update.status"])="NEED UPDATE"'
   8.106 +            - uuid: f37d4bcb3db74a0e82db4e766d70667e
   8.107 +              expression: 'last(/AWNET FreeBSD Template/vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/fbsd_update.status"])="NEED UPDATE"'
   8.108 +              name: 'Требуется обновление ОС'
   8.109 +              priority: HIGH
   8.110 +        - uuid: 57dff18486ff4135b68f628aeb23b34e
   8.111 +          name: '_ Сырые данные по версии ОС'
   8.112 +          key: 'vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/fbsd_update.versions"]'
   8.113 +          delay: 5m
   8.114 +          history: '0'
   8.115 +          value_type: TEXT
   8.116 +          trends: '0'
   8.117 +          preprocessing:
   8.118 +            - type: DISCARD_UNCHANGED_HEARTBEAT
   8.119 +              parameters:
   8.120 +                - 12h
   8.121 +            - type: JAVASCRIPT
   8.122 +              parameters:
   8.123 +                - |
   8.124 +                  var buf = value.split('\n');
   8.125 +                  var res = {}
   8.126 +                  
   8.127 +                  for (var i in buf) {
   8.128 +                      var _ln_buf = buf[i].trim().split('=');
   8.129 +                      res[_ln_buf[0]] = _ln_buf[1]
   8.130 +                  }
   8.131 +                  
   8.132 +                  return JSON.stringify(res)
   8.133 +          tags:
   8.134 +            - tag: Module
   8.135 +              value: 'FreeBSD OS Version'
   8.136 +        - uuid: 56b0005c135049268acef9e9f9e9e34e
   8.137 +          name: 'Дополнительное ПО: Статус контроля актуальности версий установленного ПО'
   8.138 +          key: 'vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/pkg_update"]'
   8.139 +          delay: 5m
   8.140 +          value_type: TEXT
   8.141 +          trends: '0'
   8.142 +          preprocessing:
   8.143 +            - type: DISCARD_UNCHANGED_HEARTBEAT
   8.144 +              parameters:
   8.145 +                - 12h
   8.146 +          tags:
   8.147 +            - tag: Module
   8.148 +              value: 'FreeBSD Packages'
   8.149 +          triggers:
   8.150 +            - uuid: a3ee871d2a924b4799ca03b64fa4a6da
   8.151 +              expression: 'length(last(/AWNET FreeBSD Template/vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/pkg_update"]))<>0'
   8.152 +              name: 'Существуют пакеты, требующие обновления'
   8.153 +              opdata: '{ITEM.VALUE}'
   8.154 +              priority: WARNING
   8.155 +        - uuid: 28db291bbe504d1eaaa32b89426bb487
   8.156 +          name: 'Дополнительное ПО: Статус аудита наличия известных уязвимостей в установленном дополнительном ПО'
   8.157 +          key: 'vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/pkg_update.audit"]'
   8.158 +          delay: 5m
   8.159 +          value_type: TEXT
   8.160 +          trends: '0'
   8.161 +          preprocessing:
   8.162 +            - type: DISCARD_UNCHANGED_HEARTBEAT
   8.163 +              parameters:
   8.164 +                - 12h
   8.165 +          tags:
   8.166 +            - tag: Module
   8.167 +              value: 'FreeBSD Packages'
   8.168 +          triggers:
   8.169 +            - uuid: 0003ac7f34434551aa79985d6262123f
   8.170 +              expression: 'length(last(/AWNET FreeBSD Template/vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/pkg_update.audit"]))<>0'
   8.171 +              name: 'В системе установлены пакеты с известными уязвимостями'
   8.172 +              opdata: '{ITEM.VALUE}'
   8.173 +              priority: HIGH
   8.174 +        - uuid: ef2114c7186b4b3694ddebac39b6c8ad
   8.175 +          name: 'Мониторинг FreeBSD: Статус посредника'
   8.176 +          key: 'vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/status"]'
   8.177 +          delay: 5m
   8.178 +          history: 21d
   8.179 +          value_type: TEXT
   8.180 +          trends: '0'
   8.181 +          preprocessing:
   8.182 +            - type: DISCARD_UNCHANGED_HEARTBEAT
   8.183 +              parameters:
   8.184 +                - 12h
   8.185 +          tags:
   8.186 +            - tag: Module
   8.187 +              value: 'FreeBSD Monitoring Helper'
   8.188 +          triggers:
   8.189 +            - uuid: f15f1943b2854a61be6a3b48b6d69262
   8.190 +              expression: 'length(last(/AWNET FreeBSD Template/vfs.file.contents["{$AW.FBSD.HELPER_PATH}/var/status"]))<>0'
   8.191 +              name: 'Во время сбора данных посредником произошли ошибки'
   8.192 +              opdata: '{ITEM.VALUE}'
   8.193 +              priority: AVERAGE
   8.194 +      discovery_rules:
   8.195 +        - uuid: 27e0563f78b146d1bd00263ea2b98e9a
   8.196 +          name: 'Контроль состояния активированных сервисов'
   8.197 +          key: 'vfs.dir.get["{$AW.FBSD.HELPER_PATH}/var/pkg_detail",,"\.audit$",file,,1]'
   8.198 +          delay: 5m
   8.199 +          item_prototypes:
   8.200 +            - uuid: 3415bbb02573448d81e27ea945a1f5fb
   8.201 +              name: 'Дополнительное ПО / {#NAME}: Дата установки пакета'
   8.202 +              type: DEPENDENT
   8.203 +              key: 'aw.fbsd.pkg.services.installed[{#NAME}]'
   8.204 +              delay: '0'
   8.205 +              units: unixtime
   8.206 +              preprocessing:
   8.207 +                - type: JSONPATH
   8.208 +                  parameters:
   8.209 +                    - $.installed
   8.210 +              master_item:
   8.211 +                key: 'vfs.file.contents[{#FILEPATH}]'
   8.212 +              tags:
   8.213 +                - tag: Module
   8.214 +                  value: 'FreeBSD Packages'
   8.215 +                - tag: Package
   8.216 +                  value: '{#NAME}'
   8.217 +            - uuid: e4b1e5283e2a4b17ac00a3b535fd912c
   8.218 +              name: 'Дополнительное ПО / {#NAME}: Статус блокировки пакета'
   8.219 +              type: DEPENDENT
   8.220 +              key: 'aw.fbsd.pkg.services.locked[{#NAME}]'
   8.221 +              delay: '0'
   8.222 +              valuemap:
   8.223 +                name: 'Статус блокировки пакета'
   8.224 +              preprocessing:
   8.225 +                - type: JSONPATH
   8.226 +                  parameters:
   8.227 +                    - $.locked
   8.228 +              master_item:
   8.229 +                key: 'vfs.file.contents[{#FILEPATH}]'
   8.230 +              tags:
   8.231 +                - tag: Module
   8.232 +                  value: 'FreeBSD Packages'
   8.233 +                - tag: Package
   8.234 +                  value: '{#NAME}'
   8.235 +              trigger_prototypes:
   8.236 +                - uuid: dc8fa7bc388449fa811d49314af28ed5
   8.237 +                  expression: 'last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.locked[{#NAME}])=1'
   8.238 +                  name: 'Пакет {#NAME} заблокирован для обновления'
   8.239 +                  priority: WARNING
   8.240 +            - uuid: d0535081d1ac4c14a4aa519571b02991
   8.241 +              name: 'Дополнительное ПО / {#NAME}: Ответственный разработчик'
   8.242 +              type: DEPENDENT
   8.243 +              key: 'aw.fbsd.pkg.services.mainteiner[{#NAME}]'
   8.244 +              delay: '0'
   8.245 +              value_type: TEXT
   8.246 +              trends: '0'
   8.247 +              preprocessing:
   8.248 +                - type: JSONPATH
   8.249 +                  parameters:
   8.250 +                    - $.mainteiner
   8.251 +              master_item:
   8.252 +                key: 'vfs.file.contents[{#FILEPATH}]'
   8.253 +              tags:
   8.254 +                - tag: Module
   8.255 +                  value: 'FreeBSD Packages'
   8.256 +                - tag: Package
   8.257 +                  value: '{#NAME}'
   8.258 +              trigger_prototypes:
   8.259 +                - uuid: 6484dc9e837b4ecfb793f8296985991a
   8.260 +                  expression: 'last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.mainteiner[{#NAME}],#2)<>last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.mainteiner[{#NAME}],#1)'
   8.261 +                  name: 'У пакета {#NAME} сменился ответственный'
   8.262 +                  priority: INFO
   8.263 +            - uuid: 69470e867f1d4433b7e6d7219602ca52
   8.264 +              name: 'Дополнительное ПО / {#NAME}: Репозиторий пакета'
   8.265 +              type: DEPENDENT
   8.266 +              key: 'aw.fbsd.pkg.services.repo[{#NAME}]'
   8.267 +              delay: '0'
   8.268 +              value_type: TEXT
   8.269 +              trends: '0'
   8.270 +              preprocessing:
   8.271 +                - type: JSONPATH
   8.272 +                  parameters:
   8.273 +                    - $.repo
   8.274 +              master_item:
   8.275 +                key: 'vfs.file.contents[{#FILEPATH}]'
   8.276 +              tags:
   8.277 +                - tag: Module
   8.278 +                  value: 'FreeBSD Packages'
   8.279 +                - tag: Package
   8.280 +                  value: '{#NAME}'
   8.281 +              trigger_prototypes:
   8.282 +                - uuid: 5b068e0fd4ca473babf00612fa1821a6
   8.283 +                  expression: 'last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.repo[{#NAME}],#2)<>last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.repo[{#NAME}],#1)'
   8.284 +                  name: 'Изменился репозиторий пакета {#NAME}'
   8.285 +                  priority: INFO
   8.286 +            - uuid: 5bb725ee69884993ba5283aae3aefa7a
   8.287 +              name: 'Дополнительное ПО / {#NAME}: Размер пакета'
   8.288 +              type: DEPENDENT
   8.289 +              key: 'aw.fbsd.pkg.services.size[{#NAME}]'
   8.290 +              delay: '0'
   8.291 +              units: B
   8.292 +              preprocessing:
   8.293 +                - type: JSONPATH
   8.294 +                  parameters:
   8.295 +                    - $.size
   8.296 +              master_item:
   8.297 +                key: 'vfs.file.contents[{#FILEPATH}]'
   8.298 +              tags:
   8.299 +                - tag: Module
   8.300 +                  value: 'FreeBSD Packages'
   8.301 +                - tag: Package
   8.302 +                  value: '{#NAME}'
   8.303 +            - uuid: 6bc473bc4067419294f129b3aa80edbf
   8.304 +              name: 'Дополнительное ПО / {#NAME}: Статус пакета'
   8.305 +              type: DEPENDENT
   8.306 +              key: 'aw.fbsd.pkg.services.status[{#NAME}]'
   8.307 +              delay: '0'
   8.308 +              value_type: TEXT
   8.309 +              trends: '0'
   8.310 +              preprocessing:
   8.311 +                - type: JSONPATH
   8.312 +                  parameters:
   8.313 +                    - $.status
   8.314 +              master_item:
   8.315 +                key: 'vfs.file.contents[{#FILEPATH}]'
   8.316 +              tags:
   8.317 +                - tag: Module
   8.318 +                  value: 'FreeBSD Packages'
   8.319 +                - tag: Package
   8.320 +                  value: '{#NAME}'
   8.321 +              trigger_prototypes:
   8.322 +                - uuid: 8e54df4ea92e4a10bde8bada7d56ab5b
   8.323 +                  expression: 'last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.status[{#NAME}])="NEED UPDATE"'
   8.324 +                  name: 'Пакет {#NAME} требует обновления'
   8.325 +                  priority: AVERAGE
   8.326 +                - uuid: 88294d630f9d46078aaaca2b5e119e94
   8.327 +                  expression: 'last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.status[{#NAME}])="ERROR"'
   8.328 +                  name: 'Статус пакета {#NAME} не может быть получен'
   8.329 +                  priority: WARNING
   8.330 +                - uuid: aa02a5e035554053bbe0bb70bc4e37d5
   8.331 +                  expression: '(last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.status[{#NAME}])<>"OK") and last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.status[{#NAME}])<>"REPO VERSION LOWER"'
   8.332 +                  name: 'Статус пакета {#NAME} не оптимален'
   8.333 +                  priority: WARNING
   8.334 +                  dependencies:
   8.335 +                    - name: 'Пакет {#NAME} требует обновления'
   8.336 +                      expression: 'last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.status[{#NAME}])="NEED UPDATE"'
   8.337 +                    - name: 'Статус пакета {#NAME} не может быть получен'
   8.338 +                      expression: 'last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.status[{#NAME}])="ERROR"'
   8.339 +            - uuid: 2baa4f2b386944f9943c7367b5dce632
   8.340 +              name: 'Дополнительное ПО / {#NAME}: Версия пакета'
   8.341 +              type: DEPENDENT
   8.342 +              key: 'aw.fbsd.pkg.services.ver[{#NAME}]'
   8.343 +              delay: '0'
   8.344 +              value_type: TEXT
   8.345 +              trends: '0'
   8.346 +              preprocessing:
   8.347 +                - type: JSONPATH
   8.348 +                  parameters:
   8.349 +                    - $.ver
   8.350 +              master_item:
   8.351 +                key: 'vfs.file.contents[{#FILEPATH}]'
   8.352 +              tags:
   8.353 +                - tag: Module
   8.354 +                  value: 'FreeBSD Packages'
   8.355 +                - tag: Package
   8.356 +                  value: '{#NAME}'
   8.357 +            - uuid: 48c7bf3ee0be46bfa5a97d6e1cfe4472
   8.358 +              name: 'Дополнительное ПО / {#NAME}: Статус аудита на наличие уязвимостей'
   8.359 +              key: 'vfs.file.contents["{#FILEPATH}.audit"]'
   8.360 +              delay: 5m
   8.361 +              value_type: TEXT
   8.362 +              trends: '0'
   8.363 +              preprocessing:
   8.364 +                - type: DISCARD_UNCHANGED_HEARTBEAT
   8.365 +                  parameters:
   8.366 +                    - 12h
   8.367 +              tags:
   8.368 +                - tag: Module
   8.369 +                  value: 'FreeBSD Packages'
   8.370 +                - tag: Package
   8.371 +                  value: '{#NAME}'
   8.372 +              trigger_prototypes:
   8.373 +                - uuid: 67a535b0206d4d25b18f1e1d2df05eae
   8.374 +                  expression: 'length(last(/AWNET FreeBSD Template/vfs.file.contents["{#FILEPATH}.audit"]))<>0'
   8.375 +                  name: 'Пакет {#NAME} имеет известные уязвимости'
   8.376 +                  priority: HIGH
   8.377 +            - uuid: 2d63f4f435ec4168bc1a6ce0eb4deddb
   8.378 +              name: '_ Дополнительное ПО / {#NAME}: Сырые данные'
   8.379 +              key: 'vfs.file.contents[{#FILEPATH}]'
   8.380 +              delay: 5m
   8.381 +              history: '0'
   8.382 +              value_type: TEXT
   8.383 +              trends: '0'
   8.384 +              preprocessing:
   8.385 +                - type: DISCARD_UNCHANGED_HEARTBEAT
   8.386 +                  parameters:
   8.387 +                    - 12h
   8.388 +                - type: JAVASCRIPT
   8.389 +                  parameters:
   8.390 +                    - |
   8.391 +                      var buf = value.split('\n');
   8.392 +                      var res = {}
   8.393 +                      
   8.394 +                      for (var i in buf) {
   8.395 +                          var _ln_buf = buf[i].trim().split('=');
   8.396 +                          res[_ln_buf[0]] = _ln_buf[1]
   8.397 +                      }
   8.398 +                      return JSON.stringify(res)
   8.399 +              tags:
   8.400 +                - tag: Module
   8.401 +                  value: 'FreeBSD Packages'
   8.402 +                - tag: Package
   8.403 +                  value: '{#NAME}'
   8.404 +          trigger_prototypes:
   8.405 +            - uuid: 2d3d49dab3c1482a92ad8c5ebfcf9ab7
   8.406 +              expression: 'last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.installed[{#NAME}],#2)<>last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.installed[{#NAME}],#1) or last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.ver[{#NAME}],#2)<>last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.ver[{#NAME}],#1)'
   8.407 +              recovery_mode: RECOVERY_EXPRESSION
   8.408 +              recovery_expression: 'last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.installed[{#NAME}],#2)=last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.installed[{#NAME}],#1) and last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.ver[{#NAME}],#2)=last(/AWNET FreeBSD Template/aw.fbsd.pkg.services.ver[{#NAME}],#1)'
   8.409 +              name: 'Пакет {#NAME} обновлён'
   8.410 +              priority: INFO
   8.411 +          lld_macro_paths:
   8.412 +            - lld_macro: '{#FILEPATH}'
   8.413 +              path: $.pathname
   8.414 +            - lld_macro: '{#NAME}'
   8.415 +              path: $.basename
   8.416 +      macros:
   8.417 +        - macro: '{$AW.FBSD.HELPER_PATH}'
   8.418 +          value: /opt/aw.fbsd-mon-helper
   8.419 +          description: 'Путь к каталогу посредника мониторинга'
   8.420 +        - macro: '{$AW.FBSD.IGNORE_PKGS}'
   8.421 +          description: 'Регулярка игнорируемых пакетов при выдаче информации о пакетах, требующих обновления'
   8.422 +      valuemaps:
   8.423 +        - uuid: c9a1a4e83e2745b6b8f90c3be826323a
   8.424 +          name: 'Статус блокировки пакета'
   8.425 +          mappings:
   8.426 +            - value: '0'
   8.427 +              newvalue: '✅️ ОК'
   8.428 +            - value: '1'
   8.429 +              newvalue: '⚠️ Пакет заблокирован для обновления'
   8.430 +  triggers:
   8.431 +    - uuid: f061b328bf4b490499b947601149d048
   8.432 +      expression: 'last(/AWNET FreeBSD Template/aw.fbsd.version.kernel) <> last(/AWNET FreeBSD Template/aw.fbsd.version.kernel.running)'
   8.433 +      name: 'Ядро системы, находящееся в работе, не соответствует установленному.'
   8.434 +      opdata: 'Установлено:  "{ITEM.LASTVALUE1}": в работе: "{ITEM.LASTVALUE2}"'
   8.435 +      priority: WARNING