uikyhtr 发表于 2017-2-7 10:54:13

给zabbix更换nagios图标

Zabbix的maps用来图形化显示监控设备的拓扑图,并且以不同的标记显示故障事件,通过该图表很直观的显示设备的整体情况,nagios中monitoringexchange.org上下载的图标还是很漂亮的,zabbix自带的图标就逊色多了,下面就讲怎么把nagios的图标添加到zabbix的图片库中。下载链接如下
[*]链接: https://pan.baidu.com/s/1c2eGl8k 密码: 7cv7
[*]github: https://github.com/bluetom520/zabbix-icon
脚本如下,png和gif有些问题,不能显示,只能导入gd2格式
[*]#!/bin/sh
[*]##懒懒的天空
[*]### GLOBALS
[*]IMG_EXT="{gd2,jpg}"
[*]SQL_FILE="my_images_mysql.sql"
[*]SQL_INS="INSERT INTO images VALUES ("
[*]SQL_IMAGEID_RANGE=0
[*]SQL_IMAGETYPE=1
[*]SQL_NAME=""
[*]SQL_IMAGE=""
[*]
[*]### ERROR
[*]NORMAL=0
[*]ERR_ARGS=1
[*]ERR_NO_DIR=2
[*]ERR_NO_FILE=3
[*]RETVAL=$NORMAL
[*]
[*]########################################################################
[*]### Actual Main
[*]########################################################################
[*]main() {
[*]    local dir=$1
[*]    local num=`mysql -uroot -p123456 zabbix -e "SELECT MAX(imageid) FROM images;"|grep -e '.*'`
[*]
[*]    num=$(($num+ 1))
[*]    # check the number of command argument
[*]    if [ $# -lt 1 ]; then
[*]      return $ERR_ARGS
[*]    fi
[*]
[*]    # check target dir
[*]    [ ! -d $dir ] && return $ERR_NO_DIR
[*]
[*]    # check target file
[*]    check_image_file $dir || return $?
[*]
[*]    # make sql file
[*]    make_sql_file $num
[*]
[*]    return $RETVAL
[*]}
[*]
[*]########################################################################
[*]### Check image files existence
[*]########################################################################
[*]check_image_file() {
[*]
[*]    local dir=$1
[*]    local file_num=0
[*]
[*]    file_num=$(eval ls $dir/*.$IMG_EXT 2>/dev/null | wc -l)
[*]    [ $file_num -eq 0 ] && return $ERR_NO_FILE
[*]
[*]    return $RETVAL
[*]}
[*]
[*]########################################################################
[*]### Make SQL file to insert image files
[*]########################################################################
[*]make_sql_file() {
[*]
[*]    local f=
[*]
[*]    [ -f $SQL_FILE ] && rm -f $SQL_FILE
[*]
[*]    SQL_IMAGEID=$1
[*]    for f in $(eval ls $dir/*.$IMG_EXT 2>/dev/null)
[*]    do
[*]      SQL_NAME=$(basename $f | cut -d. -f1)
[*]      SQL_IMAGE="0x$(od -tx1 $f | awk '{for(i=2; i<=NF; i++) printf("%s", toupper($i))}')"
[*]      echo "$SQL_INS $SQL_IMAGEID, $SQL_IMAGETYPE, '$SQL_NAME', $SQL_IMAGE);" >> $SQL_FILE
[*]      SQL_IMAGEID=$(($SQL_IMAGEID + 1))
[*]      echo -n "." # in progress
[*]    done
[*]
[*]    echo -e "\ncompleted"
[*]    return $RETVAL
[*]}
[*]
[*]
[*]########################################################################
[*]### Check error and display error message
[*]########################################################################
[*]check_error() {
[*]
[*]    local result=$1
[*]
[*]    case $result in
[*]      $ERR_ARGS)
[*]            usage
[*]            ;;
[*]      $ERR_NO_DIR)
[*]            echo "cannot find target dir"
[*]            ;;
[*]      $ERR_NO_FILE)
[*]            echo "cannot find \"*.$IMG_EXT\" files"
[*]            ;;
[*]      *)
[*]            echo "unknown error"
[*]            ;;
[*]    esac
[*]
[*]    return $result
[*]}
[*]
[*]########################################################################
[*]### Usage
[*]########################################################################
[*]usage() {
[*]    echo "Usage: make_img_insert_sql.sh <dir> <start_imageid>"
[*]}
[*]
[*]########################################################################
[*]### Script Main
[*]########################################################################
[*]main "$@" || check_error $?
执行脚本
[*]脚本保存为make_img_insert_sql.sh
[*]vendors为图标目录 png导入不识别
[*]sh make_img_insert_sql.sh vendors
[*]会生成my_images_mysql.sql 文
[*]cat my_images_mysql.sql |mysql -uzabbix -pzabbix zabbix
[*]每执行完毕删除上一次的sql文件
[*]然后继续下一个目录
图标显示如下图


页: [1]
查看完整版本: 给zabbix更换nagios图标