1.自动发现实例端口脚本,用于zbx item prototypes

#!/bin/bash
REDIS_PORT=`ps aux |grep redis-server | grep -v 'grep'|awk -F'[:]' '{print $4}'`
COUNT=`echo "$REDIS_PORT" | wc -l`
INDEX=0
echo '{"data":['
echo "$REDIS_PORT" | while read LINE; do
echo -n '{"{#PORTNUM}":"'$LINE'"}'
INDEX=`expr $INDEX + 1`
if [ $INDEX -lt $COUNT ]; then
echo ','
fi
done
echo ']}'
  • 运行结果如下:
{"data":[
{"{#PORTNUM}":"6379"},
{"{#PORTNUM}":"6380"}]}

2.crontab周期取数脚本,每1分钟运行两次,zbx每30s取值一次

* * * * * /bin/sh /usr/local/zabbix/bin/redis_port_cron.sh
  • 脚本
#!/bin/bash
# redis_port_cron.sh
# 获取CPU使用临时存储
for (( i=0;i < 2;i=(i+1) ));do
TMP_DATA=/tmp/redis_cpu_util_tmp.log
DEST_DATA=/tmp/redis_cpu_util.log
echo "REDIS_PORT CPU_percent MEM_percent MEM_GB" > $TMP_DATA
pid_array=`ps aux |grep redis-server | grep -v 'grep' | awk '{print $2}'`
for pid in ${pid_array[@]}
do
redis_port=`top -c -b -n 1 -p $pid|tail -n 2 |awk -F'[:]' 'NR==1{print $3}'`
redis_cpu_util=`top -c -b -n 1 -p $pid | tail -2|awk 'NR==1{print $9}'`
redis_mem_util=`top -c -b -n 1 -p $pid | tail -2|awk 'NR==1{print $10}'`
redis_mem_MAX=`awk '($1 == "MemTotal:"){print $2/1048576}' /proc/meminfo`
redis_mem_GB=`awk 'BEGIN{print "'$redis_mem_MAX'"*"'$redis_mem_util'"/100}'`
echo $redis_port $redis_cpu_util $redis_mem_util $redis_mem_GB >> $TMP_DATA
done
sleep 20
done
[ -e $TMP_DATA ]&& mv $TMP_DATA $DEST_DATA
  • 运行结果如下,第一列是端口号,第二列是CPU百分比,第三列是内存百分比,将内存转换成GB:
REDIS_PORT CPU_percent MEM_percent MEM_GB
6379 0.0 0.8 0.0146658
6380 0.0 0.4 0.00733288

3.zbx传key值

#!/bin/bash
# redis_custom_check.sh
ZBX_REDIS_PORT="$1"
ZBX_REDIS_KEY="$2"
# source data file
SOURCE_DATA=/tmp/redis_cpu_util.log
# No data file to read from
if [ ! -f "$SOURCE_DATA" ]; then
echo "NO DATA FILE FOR READ"
exit 1
fi
# 1st check the device exists and gets data gathered by cron job
port_count=$(grep -Ec "^$ZBX_REDIS_PORT" $SOURCE_DATA)
if [ $port_count -eq 0 ]; then
echo "NO DATA FOR READ"
exit 1
fi
# 2nd grab the data from the source file
case $ZBX_REDIS_PORT in
CPU_percent ) grep -E "^$ZBX_REDIS_PORT" $SOURCE_DATA | awk '{print $2}';;
MEM_percent ) grep -E "^$ZBX_REDIS_PORT" $SOURCE_DATA | awk '{print $3}';;
MEM_GB) grep -E "^$ZBX_REDIS_PORT" $SOURCE_DATA | awk '{print $4}';;
*) echo "ERROR_WRONG_PARAM"; exit 1;;
esac
exit 0

4.重启zbx agent 测试key

UserParameter=redis.port.discovery,/bin/sh /usr/local/zabbix/bin/redis_port_discovery.sh
UserParameter=redis.instance.util[*],/bin/sh /usr/local/zabbix/bin/redis_custom_check.sh $1 $2
  • 测试key
zabbix_get -s 127.0.0.1 -k redis.instance.util[6379,CPU_percent]
zabbix_get -s 127.0.0.1 -k redis.instance.util[6379,MEM_GB]
zabbix_get -s 127.0.0.1 -k redis.instance.util[6379,MEM_percent]
[root@GZ-LT-DB-redis01 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k redis.instance.util[6379,CPU_percent]
0.0
[root@GZ-LT-DB-redis01 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k redis.instance.util[6379,MEM_GB]
0.0146658
[root@GZ-LT-DB-redis01 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k redis.instance.util[6379,MEM_percent]
0.8

5.建item和图形





最新文章

  1. Filter 数组过滤函数精解示例
  2. 解决ASP.NET 自定义报表部署到IIS浏览时出现ASP.NET会话已结束问题
  3. jdk 1.5新特性说明
  4. PHP的几个特殊符号意义
  5. 基于SSH的数据库中图片的读写
  6. 使用HTML5中的Canves标签制作时钟特效
  7. SQL Serverf 索引 - 索引压缩 、附加特性 &lt;第十篇&gt;
  8. svn检出maven工程到eclipse里面,部署到tomcat的步骤
  9. ES 2015/6 新特性汇总
  10. web版仿微信聊天界面|h5仿微信电脑端案例开发
  11. Kubernetes从懵圈到熟练:读懂这一篇,集群节点不下线
  12. centos7启动网卡报错(Failed to start LSB: Bring up/down networking )
  13. BringWindowToTop完美激活窗口与置顶
  14. VsVim的快捷键
  15. 使用PrintDBGridEh进行打印 (转)
  16. windows 远程连接
  17. Appium环境搭建python篇(mac系统)
  18. HTML &lt;form&gt; target 属性
  19. Partitioning by Palindromes UVA - 11584 简单dp
  20. Android入门级编译错误汇总

热门文章

  1. 2019-2020-1 20199328《Linux内核原理与分析》第四周作业
  2. java中functional interface的分类和使用
  3. 第三方库PyYAML
  4. CentOS配置Tomcat监听80端口,虚拟主机
  5. nodeJS生成xlsx以及设置样式
  6. 解析.xml并保存结点信息至.txt中
  7. Vim Operations
  8. 你这些知识点都不会,你学个锤子SQL数据库!
  9. 疯子的算法总结10--最小生成树Kruscal
  10. css属性、样式、边框、选择器