给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]