zabbix监控添加学习笔记

时间:2021-08-09
本文章向大家介绍zabbix监控添加学习笔记,主要包括zabbix监控添加学习笔记使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

  在实际生产环境中,除了CPU、内存等一些系统信息可以挂载zabbix的自带模板Template OS Linux;但是一些公司开发的定制服务需要自己写模板或者监控项去监控;

一、监控公司的java服务

1、编写监控脚本

#!/bin/bash
#version: 1.0
#author: zhide.zhang
#email: 1072051214@qq.com
#create time: 2021年 07月 29日 星期四 18:10:48 CST
#返回1为java进程正常,返回0则java进程未运行;
status(){
if [ -n "$numid" ];then
     echo "1"
else
     echo "0"
fi
  }

case $1 in
    zuul)
        numid=`ps aux |grep zuul.jar |grep -v grep | awk '{print $2}'`
        status
        ;;
    user-service)
        numid=`ps aux |grep user-service.jar |grep -v grep | awk '{print $2}'`
        status
        ;;
    auth-service)
        numid=`ps aux |grep auth-service.jar |grep -v grep | awk '{print $2}'`
        status
        ;;
esac

#cat /etc/zabbix/zabix_agentd.d/java-service.conf
UserParameter=java.status[*],/etc/zabbix/script/java-service.sh $1

  在agent端脚本和配置文件编写完成之后需要重启zabbix-agent服务:systemctl restart zabbix-agent.service

2、添加监控项

  如果多个服务器都部署的是相同的java服务,则可以定义一个模板,将该模板挂载到相应的主机;

2.1、定义模板名称

 2.2、定义监控项

   键值:java.status是在上面java-service.conf配置文件中定义的,中括号中的zuul.java是在java-service.sh脚本中定义的项目;

2.3、定义触发器

当返回值=0时,则告警;表示java服务已经停止;

二、java服务自动发现

   当公司的服务器上部署的java服务各不相同,有多有少,此时手动写java监控脚本和添加java服务监控项就是个大工程;此时,java服务自动发现就排上用场了;

   zabbix官方文档:https://www.zabbix.com/documentation/3.4/zh/manual/discovery/low_level_discovery#discovery_of_file_systems

1、编写java服务自动发现脚本

#!/bin/bash
java_server=($(ps aux |grep "java -jar"|grep -v grep |awk '{print $13}'))

printf "{\n"
printf '\t"data":[\n'
for ((i=0;i<${#java_server[@]};i++))
do
        printf '\t\t{\n'
        num=$(echo $((${#java_server[@]}-1)))
        if [ "$i" == ${num} ];
        then
                printf "\t\t\t\"{#JAVA_NAME}\":\"${java_server[$i]}\"}\n"
        else
                printf "\t\t\t\"{#JAVA_NAME}\":\"${java_server[$i]}\"},\n"
        fi
done
printf "\t]\n"
printf "}\n"

  要以json格式呈现;

2、编写自动发现服务配置文件

cat java.service.conf
UserParameter=java.service,/etc/zabbix/script/java.service.sh

  重启zabbix-agent服务:systemctl restart zabbix-agent.service

3、配置服务自动发现模板

   这地方的键值java.service是在java.service.conf文件中定义的;

   这地方可以用zabbix内置的进程监控键值proc.num来做监控项;

四、磁盘IO使用情况自动发现

1、磁盘IO自动发现脚本

#!/bin/bash
 diskarray=(`cat /proc/diskstats |grep -E "\bsd[a-z]\b|\bxvd[a-z]\b|\bvd[a-z]\b"|awk '{print $3}'|sort|uniq   2>/dev/null`)

 length=${#diskarray[@]}
printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
        printf '\n\t\t{'
        printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"
        if [ $i -lt $[$length-1] ];then
                printf ','
        fi
done
printf  "\n\t]\n"
printf "}\n"

2、磁盘IO状态脚本

#/bin/bash

device=$1
item=$2

IOSTAT_PID=`ps aux | grep "iostat -dxkt 1" | grep -v grep | awk '{print $2}'`
if [ -z "$IOSTAT_PID" ];then
    `nohup /usr/bin/iostat -dxkt 1  > /tmp/iostat_output 2>/dev/null &`
    sleep 2
fi

case $item in
#         rrqm)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $2}'
#            ;;
#         wrqm)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $3}'
#            ;;
#          rps)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $4}'
#            ;;
#          wps)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $5}'
#            ;;
#        rKBps)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $6}'
#            ;;
#        wKBps)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $7}'
#            ;;
#     avgrq-sz)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $8}'
#            ;;
#     avgqu-sz)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $9}'
#            ;;
#        await)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $10}'
#            ;;
#      r_await)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $11}'
#            ;;
#      w_await)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $12}'
#            ;;
#        svctm)
#            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $13}'
#            ;;
         util)
            echo `/usr/bin/tail -n20 /tmp/iostat_output |grep "$device" |tail -1|awk '{print $14}'`
            ;;
esac

3、编写自动发现配置文件

cat disk-status.conf
UserParameter=disk.discovery,/etc/zabbix/script/disk.discovery.sh
UserParameter=disk.status[*],/etc/zabbix/script/disk.status.sh $1 $2

4、定义自动发现规则

   当磁盘util利用率连续采集3次的值的平均值超过80则报警;

原文地址:https://www.cnblogs.com/zhangzhide/p/15117792.html