ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

zabbix10 ---- base template

2021-10-30 20:36:21  阅读:160  来源: 互联网

标签:grep mem echo ---- zabbix base awk template print


zabbix10 ---- base template

zabbix

base template

基础模板制作

可以在基础模板之上进行调整
物理机基础模板,监控硬件相关信息及资源利用率
虚拟机基础模板,通常用于监视资源和使用应用程序

IO监控

磁盘的寻道时间、旋转延迟和数据传输时间:

  • 寻道时间:是指磁头移动到正确的磁道上所花费的时间,寻道时间越短则I/O处理就越快,目前磁盘的寻道时间一般在3-15毫秒左右。
  • 旋转延迟:是指将磁盘片旋转到数据所在的扇区到磁头下面所花费的时间,旋转延迟取决于磁盘的转速,通常使用磁盘旋转周期所需要时间的1/2之一表示,比如7200转的磁盘平均旋转延迟大约为601000/7200/2=4.17毫秒,公式的意思为(每分钟60秒1000毫秒每秒/7200转每分钟/2),如果是15000转的则为60*1000/15000/2=2毫秒。
  • 数据传输时间:指的是读取到数据后传输数据的时间,主要取决于传输频率,这个值等于数据大小除以传输速率,目前的磁盘接口每秒的传输速度可以达到600MB,因此可以忽略不计

磁盘的寻道时间、旋转延迟和数据传输时间

  • 常见的机械磁盘平均寻道时间值
    7200转/分的磁盘平均物理寻道时间:9毫秒
    10000转/分的磁盘平均物理寻道时间:6毫秒
    15000转/分的磁盘平均物理寻道时间:4毫秒

  • 常见磁盘的平均延迟时间
    7200转的机械盘平均延迟:601000/7200/2=4.17ms
    10000转的机械盘平均延迟:60
    1000/100002=3ms
    15000转的机械盘平均延迟:60*1000/15000/2=2ms

  • 每秒最大IOPS的计算方法
    7200转的磁盘IOPS计算方式:100毫秒/(9毫秒的寻道时间+4.17毫秒的平均旋转延迟时间=1000/13.13=75.9 IOPS
    10000转的磁盘的IOPS计算方式:1000毫秒/(6毫秒的寻道时间+3毫秒的平均旋转延迟时间)=1000/9=111 IOPS
    15000的磁盘的IOPS计算方式:1000毫秒/(4毫秒的寻道时间+2毫秒的平均旋转延迟时间)=1000/6=166.6 IOPS

示例

采集脚本

/etc/zabbix/zabbix_agentd.d/cpu_use.sh
cpu_usage(){
    NUM=`/usr/bin/top -bn 1 | grep Cpu | awk '{print $2}' | awk -F "."  '{print $1}'`
    echo  ${NUM}
}

main(){
   case $1 in 
    cpu_usage)
           cpu_usage;
        ;;
    esac    
}

main $@ 

/etc/zabbix/zabbix_agentd.d/mem.sh
grep 7 /etc/redhat-release &> /dev/null

if [ $? -eq 0 ];then
mem_total(){
    TOTAL=`free |grep -i mem |awk '{print $2}'`
    echo ${TOTAL}
}    
mem_use(){
    USE=`free  |grep -i mem | awk '{print $3}'`
    echo ${USE}
}
mem_free(){
    FREE=`free  |grep -i mem |awk '{print ($4+$6)}'`
    echo ${FREE}
}
mem_usage(){
    USAGE=`free  |grep -i mem | awk '{print  ($3)/$2*100}' | awk -F "." '{print $1}'`
    echo ${USAGE}
}
else
mem_total(){
    TOTAL=`free |grep -i mem |awk '{print $2}'`
    echo ${TOTAL}
}
mem_use(){
    USE=`free  |grep -i mem | awk '{print $3}'`
    echo ${USE}
}
mem_free(){
    #FREE=`free  |grep -i mem |awk '{print $3+$5}'`
    FREE=`free  |grep -i mem |awk '{print ($4+$6+$7)}'`
    echo ${FREE}
}
mem_usage(){
    USAGE=`free  |grep -i mem | awk  '{print  ($3)/$2*100}' | awk -F "." '{print $1}'`
    echo ${USAGE}
}   
 
fi

main(){
    case $1 in 
        mem_total)
            mem_total;
            ;;
        mem_use)
            mem_use;
            ;;
        mem_free)
            mem_free;
            ;;
        mem_usage)
            mem_usage;
            ;;
        *)
        echo $0 mem_total/mem_use/mem_free/mem_usage
    esac
}

main $@

/etc/zabbix/zabbix_agentd.d/iotop_total.sh
disk_read(){
  NUM=`/usr/bin/sudo iotop -b -n 3 | grep "Total DISK READ" | grep -v grep | awk  -F "|" '{print $1}' | awk -F ":" '{print $2}' |  tail -n1 | awk -F "/" '{print $1}'`
  NUM2=`echo $NUM | awk '{print $1}'`
  UNIT=`echo $NUM | awk '{print $2}'`
  if [ $UNIT == "B" ];then
    echo $NUM2
  elif [ $UNIT == "K" ];then
    NUM3=$(echo "$NUM2 * 1024" | bc)
    echo $NUM3
  elif [ $UNIT == "M" ];then
    NUM3=$(echo "$NUM2 * 1024 * 1024" | bc)
    echo $NUM3
  elif [ $UNIT == "G" ];then
    NUM3=$(echo "$NUM2 * 1024 * 1024 * 1024" | bc)
    echo $NUM3
  fi
}

disk_write(){
  NUM=`/usr/bin/sudo iotop -b -n 3 | grep "Total DISK WRITE :" |  grep -v grep | awk  -F "|" '{print $2}' | awk -F ":" '{print $2}' | tail -n1 | awk -F "/" '{print $1}'`
  NUM2=`echo $NUM | awk '{print $1}'`
  UNIT=`echo $NUM | awk '{print $2}'`
  if [ $UNIT == "B" ];then
    echo $NUM2
  elif [ $UNIT == "K" ];then
    NUM3=$(echo "$NUM2 * 1024" | bc)
    echo $NUM3
  elif [ $UNIT == "M" ];then
    NUM3=$(echo "$NUM2 * 1024 * 1024" | bc)
    echo $NUM3
  elif [ $UNIT == "G" ];then
    NUM3=$(echo "$NUM2 * 1024 * 1024 * 1024" | bc)
    echo $NUM3
  fi
}

main(){
    case $1 in
        disk_read)
           disk_read;
           ;;
        disk_write)
            disk_write;
            ;;
        *)
            echo $0 disk_read/disk_write
    esac
}
main $@

配置agent

/etc/zabbix/zabbix_agentd.d/userparameter_all.conf
UserParameter=disk_total[*],/etc/zabbix/zabbix_agentd.d/iotop_total.sh "$1" 
UserParameter=cpu_use[*],/etc/zabbix/zabbix_agentd.d/cpu_use.sh "$1" 
UserParameter=mem_status[*],/etc/zabbix/zabbix_agentd.d/mem.sh "$1" 

grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.0/24
ServerActive=192.168.10.3
Hostname=192.168.10.15
Include=/etc/zabbix/zabbix_agentd.d/*.conf

验证数据采集

[root@zabbix-server ~]# zabbix_get -s 192.168.10.15 -k mem_status["mem_use"]  
92708
[root@zabbix-server ~]# zabbix_get -s 192.168.10.15 -k cpu_use[cpu_usage]
20
[root@zabbix-server ~]# zabbix_get -s 192.168.10.15 -k system.cpu.load[,avg15]
0.380000
[root@zabbix-server ~]# zabbix_get -s 192.168.10.15 -k disk_total[disk_write]
4024.32

导入基础模板

采集CPU、内存、磁盘、网络相关数据

监控项


触发器


图形


自动发现规则


web导入基础模板


添加主机监控


验证数据采集




小结

1、不同应用场景使用不同模板,比如物理机一套模板,虚拟机一套模板
2、创建模板步骤,核心是编写脚本收集数据
3、创建模板步骤
编写脚本对某个对象取值
在agent配置上启动自定义监控项
脚本是否需要提权,如sudo,对某个命令 zabbix ALL=(ALL) NOPASSWD:ALL
zabbix server或者zabbix proxy使用zabbix_get去取zabbix agent自定义监控项的值
在zabbix web添加自定义模板,并将需要的主机应用到此模板

标签:grep,mem,echo,----,zabbix,base,awk,template,print
来源: https://www.cnblogs.com/final233/p/15487206.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有