Zabbix template bash generator

From UVOO Tech Wiki
Jump to navigation Jump to search
#!/bin/bash
set -eu

create_item(){
  dnshost=$1
  fqdn=$2
  uuidv4_a=$(uuid -v 4 | sed 's/-//g')
  # uuidv4_a=$3
  uuidv4_b=$(uuid -v 4 | sed 's/-//g')
  uuidv4_c=$(uuid -v 4 | sed 's/-//g')
  item_line=$(cat <<EOF
        -
          uuid: ${uuidv4_a}
          name: ${dnshost}_${fqdn}
          type: EXTERNAL
          key: 'dnsname-resolve["${dnshost}", "${fqdn}"]'
          triggers:
            -
              uuid:  ${uuidv4_b}
              expression: 'last(/dns-resolver-tests/dnsname-resolve["${dnshost}", "${fqdn}"])<>0'
              name: 'dns resolve failure ${dnshost} ${fqdn} 1 time'
              priority: WARNING
              description: 'DNS resolution from resolver ${dnshost} for FQDN ${fqdn} has failed 1 time.'
            -
              uuid:  ${uuidv4_c}
              expression: 'last(/dns-resolver-tests/dnsname-resolve["${dnshost}", "${fqdn}"],#3)<>0'
              name: 'dns resolve failure ${dnshost} ${fqdn} 3 times'
              priority: AVERAGE
              description: 'DNS resolution from resolver ${dnshost} for FQDN ${fqdn} has failed 3 times consecutively. Check DNS zone record for deletion or DNS resolver host for issues.'
EOF
  )

  echo "${item_line}"
}



create_header(){
  header_line=$(cat <<EOF
zabbix_export:
  version: '6.0'
  date: '2023-02-10T18:59:20Z'
  groups:
    -
      uuid: 3f372bbb7eca47978fc251a6312cc577
      name: Green
  templates:
    -
      uuid: 840d80e8fc84470ba450e5bddb82a736
      template: dns-resolver-tests
      name: dns-resolver-tests
      groups:
        -
          name: Green
      items:
EOF
  )
  echo "${header_line}"
}


main(){
  create_header
  itemuuids=($(cat itemuuids.txt))
  i=0
  for dnshost in $(cat dnshosts.txt); do
    for fqdn in $(cat fqdns.txt); do
      create_item ${dnshost} ${fqdn}
      # create_item ${dnshost} ${fqdn} ${itemuuids[$i]}
      # i=$(($i + 1))
    done
  done
}

main