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和图形





zabbix监控redis多实例cpu mem-自动发现的更多相关文章

  1. zabbix监控redis多实例(low level discovery)

    对于多实例部署的tomcat.redis等应用,可以利用zabbix的low level discovery功能来实现监控,减少重复操作.  注:Zabbix版本: Zabbix 3.0.2 一.服务 ...

  2. zabbix监控vCenter报错,无法自动发现主机

    公司机房停电检修,检修完成后重新上电,发现VCSA起不来了,尝试多次无法解决,无奈只好重装.重装VCSA 6.5U2之后又发现无法自动发现主机,报错如下: 'config.vpxd.stats.max ...

  3. 01:zabbix监控redis

    一.zabbix 自动发现并监控redis多实例 1.1 编写脚本 1.1.1 redis_low_discovery.sh 用于发现redis多实例 [root@redis02 homed]# ca ...

  4. 监控redis进程,如果没有自动重启

    监控redis进程,如果没有自动重启 #Time:2016-01-22#Version:1.0 #Author:chh-huang #设置环境变量source /etc/profile#source ...

  5. Zabbix应用六:Zabbix监控Redis

    利用Zabbix监控Redis Zabbix监控redis就比较简单了,因为zabbix官方提供了监控redis的模版和脚本,而且脚本有nodejs和python两种,下载地址:https://git ...

  6. Zabbix整合MegaCLI实现物理硬盘的自动发现和监控

    MegaCLI是LSI提供的用户空间管理RAID卡(LSI芯片)工具,适用于大多数的Dell服务器. MegaCLI介绍: http://zh.community.dell.com/techcente ...

  7. Zabbix 监控redis

    Zabbix 监控redis 1.监控脚本,github上的 [root@localhost ~]# cat /etc/zabbix/script/redis-status.sh #!/bin/bas ...

  8. 最新 centos7下zabbix 监控redis状态

    准备 先准备两台服务器,已经部署好了zabbix-sever和zabbix-agent zabbix-server 192.168.1.70 centos7.2 zabbix-agent 192.16 ...

  9. 如何用zabbix监控mysql多实例

    agent上起了多了 mysql实例,占用不同的端口,agent 仅在初始状况下,塞入脚本和 键配置,然后重启. 以后维护的时候(mysql端口变动),要做到 不能 动agent,力争 只在 web端 ...

随机推荐

  1. Nagios基本搭建

    Nagios简述: 1.一款用来监视系统和网络的开源软件 2.利用其从多的插件实现对本机和远端服务的监控 3.当被监控对象异常时,回及时向管理员警告 4.提供一批预设好的监控插件,用户可以直接调用 5 ...

  2. QT踩坑记录1-Q_OBJECT编译问题

    QT踩坑记录1-Q_OBJECT编译问题 QTC++Bugs 错误输出 Q_OBJECT 宏错误的地方会编译出现这样的错误, 无法找到.... 由于自己不想再看到这个错误, 此处 复制自 参考连接1, ...

  3. 怎么在java 8的map中使用stream

    怎么在java 8的map中使用stream 简介 Map是java中非常常用的一个集合类型,我们通常也需要去遍历Map去获取某些值,java 8引入了Stream的概念,那么我们怎么在Map中使用S ...

  4. 全网最清晰的ConstraintLayout教程

    ConstraintLayout是AndroidStudio2.2新增的一个功能,那么这个到底是什么呢?首先第一点我们知道传统的安卓开发,页面基本都是XML编写实现,特别在一些复杂的页面上需要嵌套多层 ...

  5. mysql查询连接数

    最近公司的测试服务器数据库经常是连接爆满,几次加大了依旧满了. 明明只有几个人在用这个数据库,但是连接数到了三四百.于是就想是谁一直开着连接不释放,于是写了个SQL查了下连接使用情况. SQL如下: ...

  6. Vue.js 条件渲染 v-if、v-show、v-else

    v-if  v-if 完全根据表达式的值在DOM中生成或移除一个元素.如果v-if表达式赋值为false,那么对应的元素就会从DOM中移除:否则,对应元素的一个克隆将被重新插入DOM中. 1 2 3 ...

  7. [LOJ2865] P4899 [IOI2018] werewolf 狼人

    P4899 [IOI2018] werewolf 狼人 LOJ#2865.「IOI2018」狼人,第一次AC交互题 kruskal 重构树+主席树 其实知道重构树的算法的话,难度就主要在主席树上 习惯 ...

  8. P5960 差分约束算法模板

    差分约束 差分约束,一般用来解决有\(n\)个未知数,\(m\)个不等式方程的问题,形如: \[\begin{cases} \ x_{a_1}-x_{b_1}\leq y_1\\ \ x_{a_2}- ...

  9. 5分钟入门pandas

    pandas是在数据处理.数据分析以及数据可视化上都有比较多的应用,这篇文章就来介绍一下pandas的入门.劳动节必须得劳动劳动 1. 基础用法 以下代码在jupyter中运行,Python 版本3. ...

  10. JavaScript 循环判断练习题

    JavaScript 循环判断练习题 小明有一组水果("苹果","梨子","香蕉","葡萄","西瓜" ...