给zabbix更换nagios图标

  • Post author:
  • Post category:其他


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 '[0-9].*'`

    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文件
然后继续下一个目录

图标显示如下图



版权声明:本文为bluetom520原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。