ncc.zabbix_fbsd_templates

Yohn Y. 2024-10-17 Parent:073195ae32a4 Child:f5d65a7f34b3

10:8e4f72f0be61 Browse Files

+ Мониторим не только сами активные сетевые сервисы, но и их зависимости, #1 + Версия, для отслеживания состояния набора скиптов через zabbix, #3 + Возможность мониторинга дополнительных пакетов, задаётся в конфиге, #2 + Не позволяем запиститься с отсутствующей директорией состояний, #4

src/aw.fbsd-mon-helper/bin/lounch.sh src/aw.fbsd-mon-helper/lib/common.sh src/aw.fbsd-mon-helper/lib/pkg.sh src/aw.fbsd-mon-helper/version zbx_export_templates.yaml

     1.1 --- a/src/aw.fbsd-mon-helper/bin/lounch.sh	Tue Oct 15 22:57:53 2024 +0300
     1.2 +++ b/src/aw.fbsd-mon-helper/bin/lounch.sh	Thu Oct 17 22:38:18 2024 +0300
     1.3 @@ -4,6 +4,12 @@
     1.4  APP_ROOT="$(dirname "$BIN_ROOT")"
     1.5  STATE_ROOT="$APP_ROOT/var"
     1.6  
     1.7 +if ! [ -d "$STATE_ROOT" ]; then
     1.8 +  echo "NO STATE ROOT DIR: ${STATE_ROOT}" >&2
     1.9 +  exit 1
    1.10 +fi
    1.11 +
    1.12 +
    1.13  cat /dev/null > "$STATE_ROOT/status"
    1.14  
    1.15  . "$APP_ROOT/lib/log.sh"
    1.16 @@ -21,6 +27,8 @@
    1.17    exit 1
    1.18  fi
    1.19  
    1.20 +USER_MON_PKG_LIST="$TMP_ROOT/user_pkg_mon"
    1.21 +touch "${USER_MON_PKG_LIST}"
    1.22  
    1.23  my_exit () {
    1.24    if [ -d "$TMP_ROOT" ] ; then
    1.25 @@ -30,8 +38,8 @@
    1.26  
    1.27  trap my_exit 0
    1.28  
    1.29 +. "$APP_ROOT/lib/common.sh"
    1.30  . "$APP_ROOT/config.sh"
    1.31 -. "$APP_ROOT/lib/common.sh"
    1.32  . "$APP_ROOT/lib/fbsd_up.sh"
    1.33  . "$APP_ROOT/lib/pkg.sh"
    1.34  
     2.1 --- a/src/aw.fbsd-mon-helper/lib/common.sh	Tue Oct 15 22:57:53 2024 +0300
     2.2 +++ b/src/aw.fbsd-mon-helper/lib/common.sh	Thu Oct 17 22:38:18 2024 +0300
     2.3 @@ -4,4 +4,8 @@
     2.4  
     2.5  sleep_some () {
     2.6    sleep "$(get_rand_sec)"
     2.7 +}
     2.8 +
     2.9 +add_pkg_mon () {
    2.10 +  echo "$1" >> "${USER_MON_PKG_LIST}"
    2.11  }
    2.12 \ No newline at end of file
     3.1 --- a/src/aw.fbsd-mon-helper/lib/pkg.sh	Tue Oct 15 22:57:53 2024 +0300
     3.2 +++ b/src/aw.fbsd-mon-helper/lib/pkg.sh	Thu Oct 17 22:38:18 2024 +0300
     3.3 @@ -3,6 +3,7 @@
     3.4  
     3.5  v_pkg_detail_status="$STATE_ROOT/pkg_detail"
     3.6  v_pkg_update_status="$STATE_ROOT/pkg_update"
     3.7 +v_pkg_detail_status_list="${TMP_ROOT}/pkg_detail_status_list"
     3.8  
     3.9  pkg_init () {
    3.10    if ! [ -d "$v_pkg_detail_status" ]; then
    3.11 @@ -15,6 +16,37 @@
    3.12    log "Update pakages"
    3.13    pkg update 2>&1 | log
    3.14    # Обновление базы аудита происходит на получении общих данных по пакетам
    3.15 +
    3.16 +  touch "${v_pkg_detail_status_list}"
    3.17 +}
    3.18 +
    3.19 +pkg_get_detail_pkg_list () {
    3.20 +  local vl_pkg_fullname
    3.21 +  local vl_buf
    3.22 +
    3.23 +  cat "${USER_MON_PKG_LIST}" | while read vl_buf; do
    3.24 +    vl_pkg_fullname=$(pkg query '%n-%v' "${vl_buf}")
    3.25 +    [ -n "${vl_pkg_fullname}" ] && echo "${vl_pkg_fullname}" >> "${v_pkg_detail_status_list}"
    3.26 +  done
    3.27 +
    3.28 +  service -e | awk '$1 ~ "^/usr/local" {print $1}' | while read vl_buf; do
    3.29 +    if ! [ -f "$vl_buf" ] ; then
    3.30 +      continue
    3.31 +    fi
    3.32 +
    3.33 +    vl_pkg_fullname="$(pkg which "$vl_buf" | awk '$0 ~ "was installed by package" {print $6}')"
    3.34 +
    3.35 +    if [ -z "$vl_pkg_fullname" ] ; then
    3.36 +      log "$vl_buf have no matched pkg"
    3.37 +      continue
    3.38 +    fi
    3.39 +
    3.40 +    {
    3.41 +      echo "${vl_pkg_fullname}"
    3.42 +      pkg query '%rn' "${vl_pkg_fullname}"
    3.43 +      pkg query '%dn' "${vl_pkg_fullname}"
    3.44 +    } >> "${v_pkg_detail_status_list}"
    3.45 +  done
    3.46  }
    3.47  
    3.48  pkg_make_detail () {
    3.49 @@ -25,61 +57,54 @@
    3.50    local vl_status_file
    3.51    local vl_pkg_status
    3.52  
    3.53 -  service -e | awk '$1 ~ "^/usr/local" {print $1}' | while read svc_file; do
    3.54 -      if ! [ -f "$svc_file" ] ; then
    3.55 -        continue
    3.56 -      fi
    3.57 +  pkg_get_detail_pkg_list
    3.58 +  cat "${v_pkg_detail_status_list}" | sort | uniq | while read vl_pkg_fullname; do
    3.59 +    log "Working with $vl_pkg_fullname"
    3.60  
    3.61 -      vl_pkg_fullname="$(pkg which "$svc_file" | awk '$0 ~ "was installed by package" {print $6}')"
    3.62 -      if [ -z "$vl_pkg_fullname" ] ; then
    3.63 -        log "$svc_file have no matched pkg"
    3.64 -        continue
    3.65 -      fi
    3.66 +    vl_pkg_name="$(pkg query '%n' "$vl_pkg_fullname")"
    3.67 +    vl_pkg_repo="$(pkg query '%R' "$vl_pkg_fullname")"
    3.68 +    vl_pkg_ver="$(pkg query '%v' "$vl_pkg_fullname")"
    3.69 +    vl_pkg_status="$(pkg version -r "$vl_pkg_repo" -qUn "$vl_pkg_name" | awk '{print $2}')"
    3.70  
    3.71 -      vl_pkg_name="$(pkg query '%n' "$vl_pkg_fullname")"
    3.72 -      vl_pkg_repo="$(pkg query '%R' "$vl_pkg_fullname")"
    3.73 -      vl_pkg_ver="$(pkg query '%v' "$vl_pkg_fullname")"
    3.74 -      vl_pkg_status="$(pkg version -r "$vl_pkg_repo" -qUn "$vl_pkg_name" | awk '{print $2}')"
    3.75 +    case "$vl_pkg_status" in
    3.76 +      = )
    3.77 +        vl_pkg_status=OK
    3.78 +        ;;
    3.79  
    3.80 -      case "$vl_pkg_status" in
    3.81 -        = )
    3.82 -          vl_pkg_status=OK
    3.83 -          ;;
    3.84 +      "<" )
    3.85 +        vl_pkg_status="NEED UPDATE"
    3.86 +        ;;
    3.87  
    3.88 -        "<" )
    3.89 -          vl_pkg_status="NEED UPDATE"
    3.90 -          ;;
    3.91 +      ">" )
    3.92 +        vl_pkg_status="REPO VERSION LOWER"
    3.93 +        ;;
    3.94  
    3.95 -        ">" )
    3.96 -          vl_pkg_status="REPO VERSION LOWER"
    3.97 -          ;;
    3.98 +      "?" )
    3.99 +        vl_pkg_status="NO PACKAGE IN REPO"
   3.100 +        ;;
   3.101  
   3.102 -        "?" )
   3.103 -          vl_pkg_status="NO PACKAGE IN REPO"
   3.104 -          ;;
   3.105 -
   3.106 -        "!" )
   3.107 -          vl_pkg_status="ERROR"
   3.108 -          log_err -s "${vl_pkg_name}: pkg can not compare version of package"
   3.109 -          ;;
   3.110 +      "!" )
   3.111 +        vl_pkg_status="ERROR"
   3.112 +        log_err -s "${vl_pkg_name}: pkg can not compare version of package"
   3.113 +        ;;
   3.114  
   3.115 -        * )
   3.116 -          log_err -s "${vl_pkg_name}: unknown status ${vl_pkg_status}"
   3.117 -          vl_pkg_status="ERROR"
   3.118 -          ;;
   3.119 +      * )
   3.120 +        log_err -s "${vl_pkg_name}: unknown status ${vl_pkg_status}"
   3.121 +        vl_pkg_status="ERROR"
   3.122 +        ;;
   3.123  
   3.124 -      esac
   3.125 +    esac
   3.126  
   3.127 -      vl_status_file="${v_pkg_detail_status}/${vl_pkg_name}"
   3.128 -      pkg query 'installed=%t\nmainteiner=%m\nsize=%sb\nlocked=%k' "$vl_pkg_fullname" \
   3.129 -        > "${vl_status_file}"
   3.130 +    vl_status_file="${v_pkg_detail_status}/${vl_pkg_name}"
   3.131 +    pkg query 'installed=%t\nmainteiner=%m\nsize=%sb\nlocked=%k' "$vl_pkg_fullname" \
   3.132 +      > "${vl_status_file}"
   3.133  
   3.134 -      printf 'ver=%s\nrepo=%s\nstatus=%s\n' "${vl_pkg_ver}" "${vl_pkg_repo}" "${vl_pkg_status}" >> "$vl_status_file"
   3.135 -      pkg audit "$vl_pkg_fullname" \
   3.136 -        | awk '!($0 ~ "[0-9]* problem\\(s\\) in [0-9]* installed package\\(s\\) found") {print $0}' \
   3.137 -        > "${vl_status_file}.audit"
   3.138 +    printf 'ver=%s\nrepo=%s\nstatus=%s\n' "${vl_pkg_ver}" "${vl_pkg_repo}" "${vl_pkg_status}" >> "$vl_status_file"
   3.139 +    pkg audit "$vl_pkg_fullname" \
   3.140 +      | awk '!($0 ~ "[0-9]* problem\\(s\\) in [0-9]* installed package\\(s\\) found") {print $0}' \
   3.141 +      > "${vl_status_file}.audit"
   3.142  
   3.143 -    done
   3.144 +  done
   3.145  }
   3.146  
   3.147  pkg_check_up_status () {
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/src/aw.fbsd-mon-helper/version	Thu Oct 17 22:38:18 2024 +0300
     4.3 @@ -0,0 +1,1 @@
     4.4 +v0.r202410.1
     4.5 \ No newline at end of file
     5.1 --- a/zbx_export_templates.yaml	Tue Oct 15 22:57:53 2024 +0300
     5.2 +++ b/zbx_export_templates.yaml	Thu Oct 17 22:38:18 2024 +0300
     5.3 @@ -7,7 +7,7 @@
     5.4      - uuid: 188bbd004fd94b4d8bbaee4333ca8077
     5.5        template: 'AWNET FreeBSD Template'
     5.6        name: 'AWNET FreeBSD Template'
     5.7 -      description: 'Версия: v0.r202410.2'
     5.8 +      description: 'Версия: v0.r202410.3'
     5.9        groups:
    5.10          - name: Templates/AWNET
    5.11        items:
    5.12 @@ -188,6 +188,15 @@
    5.13                name: 'Во время сбора данных посредником произошли ошибки'
    5.14                opdata: '{ITEM.VALUE}'
    5.15                priority: AVERAGE
    5.16 +        - uuid: e3968cfbd4244ada8e7ab7c8a1758e44
    5.17 +          name: 'Версия набора скриптов'
    5.18 +          key: 'vfs.file.contents["{$AW.FBSD.HELPER_PATH}/version"]'
    5.19 +          value_type: TEXT
    5.20 +          trends: '0'
    5.21 +          preprocessing:
    5.22 +            - type: DISCARD_UNCHANGED_HEARTBEAT
    5.23 +              parameters:
    5.24 +                - 24h
    5.25        discovery_rules:
    5.26          - uuid: 27e0563f78b146d1bd00263ea2b98e9a
    5.27            name: 'Контроль состояния активированных сервисов'