设为首页 收藏本站
查看: 1012|回复: 0

[经验分享] ZABBIX监控一台服务器上多实例memcache落地经验步骤

[复制链接]

尚未签到

发表于 2019-1-20 09:51:57 | 显示全部楼层 |阅读模式
  上一次给大家分享了工作中监控多实例tomcat的自发现zabbix做法,今天带给大家的就是一台服务器上监控多memcache的一个落地经验。
  首先我带大家看一下多实例memcache做法,话不多说,咱们开工:
  由于是多实例,所以就需要用到zabbix的自动发现功能(LLD)基本思路如下:
1、写自动发现脚本。
2、写状态取值脚本。
3、添加配置文件。
4、添加权限。
5、配置zabbix web。
  

  zabbix我采用yum安装所以路径是/etc/zabbix  首先创建一个目录为:     mkdir  -p /etc/zabbix/scripts
这里我们要用到两个脚本:
  cd /etc/zabbix/scripts

  第一个脚本
  vim  memcached_discovery.py
  [color=#B85C00 !important]#!/usr/bin/env python
  [color=#C29734 !important]import [color=#C29734 !important]os
  [color=#C29734 !important]import [color=#C7C7C7 !important]json
  [color=#ABFC04 !important]t[color=#FFD700 !important]=[color=#ABFC04 !important]os[color=#C29734 !important].popen[color=#C9D2D1 !important]([color=#B2AF75 !important]""[color=#B2AF75 !important]"sudo netstat -nltp|awk -F: '/memcached/&&/LISTEN/{print $2}'|awk '{print $1}'| grep -v grep | grep -v '^$'   "[color=#B2AF75 !important]""[color=#C9D2D1 !important])
  [color=#ABFC04 !important]ports[color=#006FE0 !important] [color=#FFD700 !important]=[color=#006FE0 !important] [color=#C9D2D1 !important][[color=#C9D2D1 !important]]
  [color=#0185D7 !important]for[color=#006FE0 !important] [color=#C29734 !important]port [color=#0185D7 !important]in[color=#006FE0 !important]  [color=#ABFC04 !important]t[color=#C29734 !important].readlines[color=#C9D2D1 !important]([color=#C9D2D1 !important])[color=#FFD700 !important]:
  [color=#006FE0 !important]        [color=#ABFC04 !important]r[color=#006FE0 !important] [color=#FFD700 !important]=[color=#006FE0 !important] [color=#ABFC04 !important]os[color=#C29734 !important].path[color=#C29734 !important].basename[color=#C9D2D1 !important]([color=#ABFC04 !important]port[color=#C29734 !important].strip[color=#C9D2D1 !important]([color=#C9D2D1 !important])[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#ABFC04 !important]ports[color=#006FE0 !important] [color=#FFD700 !important]+=[color=#006FE0 !important] [color=#C9D2D1 !important][[color=#C9D2D1 !important]{[color=#B2AF75 !important]'{#MCPORT}'[color=#FFD700 !important]:[color=#ABFC04 !important]r[color=#C9D2D1 !important]}[color=#C9D2D1 !important]]
  [color=#C29734 !important]print [color=#ABFC04 !important]json[color=#C29734 !important].dumps[color=#C9D2D1 !important]([color=#C9D2D1 !important]{[color=#B2AF75 !important]'data'[color=#FFD700 !important]:[color=#ABFC04 !important]ports[color=#C9D2D1 !important]}[color=#C9D2D1 !important],[color=#ABFC04 !important]sort_keys[color=#FFD700 !important]=[color=#BBA7C5 !important]True[color=#C9D2D1 !important],[color=#ABFC04 !important]indent[color=#FFD700 !important]=[color=#EB5B04 !important]4[color=#C9D2D1 !important],[color=#ABFC04 !important]separators[color=#FFD700 !important]=[color=#C9D2D1 !important]([color=#B2AF75 !important]','[color=#C9D2D1 !important],[color=#B2AF75 !important]':'[color=#C9D2D1 !important])[color=#C9D2D1 !important])
  第二个脚本
  vim memcached_status.sh
  [color=#B85C00 !important]#!/bin/bash
  #  1)yum install nc
  [color=#FF8C00 !important]#  2)python memcached_discovery.py
  [color=#FF8C00 !important]#########################
  [color=#ABFC04 !important]IP[color=#FFD700 !important]=[color=#EB5B04 !important]127.0.0.1[color=#006FE0 !important]
  [color=#ABFC04 !important]PORT[color=#FFD700 !important]=[color=#B2AF75 !important]"$1"
  [color=#ABFC04 !important]METRIC[color=#FFD700 !important]=[color=#B2AF75 !important]"$2"
  [color=#006FE0 !important]
  [color=#0185D7 !important]if[color=#006FE0 !important] [color=#C9D2D1 !important][[color=#006FE0 !important] [color=#C9D2D1 !important]$[color=#FF8C00 !important]# -lt 2 ];then
  [color=#006FE0 !important]    [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#B2AF75 !important]"please set argument"
  [color=#006FE0 !important]    [color=#92AFC1 !important]exit[color=#006FE0 !important] [color=#EB5B04 !important]1
  [color=#0185D7 !important]fi
  [color=#ABFC04 !important]STATUS[color=#FFD700 !important]=[color=#C9D2D1 !important]`[color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#B2AF75 !important]"stats"[color=#006FE0 !important] [color=#FFD700 !important]|[color=#006FE0 !important] [color=#C7C7C7 !important]nc[color=#006FE0 !important] [color=#ABFC04 !important]$IP[color=#006FE0 !important] [color=#ABFC04 !important]$PORT[color=#006FE0 !important] [color=#FFD700 !important]|[color=#006FE0 !important] [color=#92AFC1 !important]grep[color=#006FE0 !important] [color=#FFD700 !important]-[color=#C7C7C7 !important]w[color=#006FE0 !important] [color=#B2AF75 !important]"$METRIC"[color=#006FE0 !important] [color=#FFD700 !important]|[color=#006FE0 !important] [color=#92AFC1 !important]awk[color=#006FE0 !important] [color=#B2AF75 !important]'{print $3}'[color=#C9D2D1 !important]`
  [color=#0185D7 !important]case[color=#006FE0 !important] [color=#ABFC04 !important]$METRIC[color=#006FE0 !important] [color=#0185D7 !important]in
  [color=#006FE0 !important]    [color=#B2AF75 !important]'version'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'uptime'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS[color=#006FE0 !important]
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'curr_connections'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'total_connections'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'cmd_get'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'cmd_set'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'get_hits'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'get_misses'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'bytes_read'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'bytes_written'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'curr_items'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'total_items'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'expired_unfetched'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#B2AF75 !important]'evicted_unfetched'[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#ABFC04 !important]$STATUS
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#006FE0 !important]    [color=#FFD700 !important]*[color=#C9D2D1 !important])
  [color=#006FE0 !important]        [color=#92AFC1 !important]echo[color=#006FE0 !important] [color=#B2AF75 !important]"Not selected metric"
  [color=#006FE0 !important]        [color=#92AFC1 !important]exit[color=#006FE0 !important] [color=#EB5B04 !important]0
  [color=#006FE0 !important]        [color=#C9D2D1 !important];[color=#C9D2D1 !important];
  [color=#0185D7 !important]esac
  ok,两个脚本解决因为我zabbix配置文件里指定的.conf位置是zabbix_agentd.d下
  所以cd /etc/zabbix/zabbix_agnetd.d
  下边创建key
  vim userparameter_memcached.conf
  UserParameter=memcached.discovery
  • ,python /etc/zabbix/scripts/memcached_discovery.py
      UserParameter=memcached
  • ,/bin/bash /etc/zabbix/scripts/memcached_status.sh $1 $2
      保存退出!
      添加zabbix权限
      vim /etc/sudoers.d/zabbix
      Defaults:zabbix    !requiretty
      zabbix ALL=(ALL) NOPASSWD: SUPERVISORCTLZB
      Cmnd_Alias SUPERVISORCTLZB = /sbin/ss,/usr/sbin/ss,/sbin/dmidecode,/usr/sbin/dmidecode,/sbin/service,/usr/sbin/service,/bin/netstat
      ok,记得要么关闭防火墙要么添加规则并添加zabbix权限  否则会监控时出现json格式的问题
      下边就在web上导入模板添加模板就好了,这些都是基础的不在复述,下边给大家模板:
      
      
      3.0
      2017-04-05T09:25:04Z
      
      
      Template For Base
      
      
      
      
      Template Linux Memcached Discovery
      Template Linux Memcached Discovery
      
      
      
      Template For Base
      
      
      
      
      Memcached_Status
      
      
      
      
      
      Linux Memcached Discovery
      0
      
      
      memcached.discovery
      60
      0
      
      
      
      0
      0
      
      0
      
      
      
      
      0
      
      
      
      
      
      
      0
      
      
      
      30
      Discovery of redis ports on Linux
      
      
      Memcached-$1-bytes_read
      0
      
      0
      
      memcached[{#MCPORT},bytes_read]
      60
      90
      365
      0
      3
      
      
      1
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-bytes_written
      0
      
      0
      
      memcached[{#MCPORT},bytes_written]
      60
      90
      365
      0
      3
      
      
      1
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-cmd_get
      0
      
      0
      
      memcached[{#MCPORT},cmd_get]
      60
      90
      365
      0
      3
      
      
      1
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-cmd_set
      0
      
      0
      
      memcached[{#MCPORT},cmd_set]
      60
      90
      365
      0
      3
      
      
      1
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-curr_connections
      0
      
      0
      
      memcached[{#MCPORT},curr_connections]
      60
      90
      365
      0
      3
      
      
      0
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-evicted_unfetched
      0
      
      0
      
      memcached[{#MCPORT},evicted_unfetched]
      60
      90
      365
      0
      3
      
      
      0
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-expired_unfetched
      0
      
      0
      
      memcached[{#MCPORT},expired_unfetched]
      60
      90
      365
      0
      3
      
      
      0
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-get_hits
      0
      
      0
      
      memcached[{#MCPORT},get_hits]
      60
      90
      365
      0
      3
      
      
      1
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-get_misses
      0
      
      0
      
      memcached[{#MCPORT},get_misses]
      60
      90
      365
      0
      3
      
      
      1
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-total_connections
      0
      
      0
      
      memcached[{#MCPORT},total_connections]
      60
      90
      365
      0
      3
      
      
      0
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-total_items
      0
      
      0
      
      memcached[{#MCPORT},total_items]
      60
      90
      365
      0
      3
      
      
      0
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-uptime
      0
      
      0
      
      memcached[{#MCPORT},uptime]
      3600
      90
      365
      0
      3
      
      
      0
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-version
      0
      
      0
      
      memcached[{#MCPORT},version]
      3600
      90
      365
      0
      3
      
      
      0
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      Memcached-$1-shutdown
      0
      
      0
      
      net.tcp.listen[{#MCPORT}]
      60
      90
      365
      0
      3
      
      
      0
      
      
      0
      0
      
      0
      
      1
      
      
      
      0
      0
      
      
      
      
      
      
      0
      
      
      Memcached_Status
      
      
      
      
      
      
      
      
      
      {Template Linux Memcached Discovery:net.tcp.listen[{#MCPORT}].last()}<>1
      Memcached-{HOST.NAME}-{#MCPORT} shutdown
      
      0
      4
      
      0
      
      
      
      
      
      
      
      
      
      
      
      
      
      至此,zabbix监控多实例memcache已经完成! 那个监控单点的怎么监控呢?
      1:环境准备:
      [root@agent scripts]# cat /etc/redhat-release
      CentOS release 6.7 (Final)
      [root@agent scripts]# sestatus
      SELinux status:                 disabled
      [root@agent scripts]# /etc/init.d/iptables stop
      这里我的memcached服务器的ip是192.168.56.99
      2:安装nc工具
      本文的监控脚本中需要使用nc工具
      yum install -y nc
      3:配置自定义监控项
      上传脚本
      [root@agent ~]# mkdir /etc/zabbix/scripts/ -p
      [root@agent ~]# cd /etc/zabbix/scripts/
      [root@agent scripts]# ls
      memcache_monitor.sh
      脚本需要给执行权限!
      脚本内容如下:
      [root@agent scripts]# cat memcache_monitor.sh
      #!/bin/bash
      Status=$1
      CACHEFILE="/tmp/memcache_monitor.txt"
      # Check and run the script
      TIMEFLM=`stat -c %Y $CACHEFILE`
      TIMENOW=`date +%s`
      if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then
      rm -f $CACHEFILE
      fi
      if [ ! -f $CACHEFILE  ];then
      echo -e "stats\nquit"|nc 127.0.0.1 11211|grep STAT >$CACHEFILE 2>/dev/null
      fi
      awk '/ '$Status' /{print $NF}' $CACHEFILE
      创建zabbix agent的自定义监控项配置文件
      [root@agent scripts]# cd /etc/zabbix/zabbix_agentd.d/
      [root@agent zabbix_agentd.d]# cat memcache_monitor.conf
      UserParameter=memcached_stats
  • ,/etc/zabbix/scripts/memcache_monitor.sh $1
      重启zabbix-agent使刚才的配置文件生效
      [root@agent scripts]# /etc/init.d/zabbix-agent restart
      Shutting down Zabbix agent:                               [  OK  ]
      Starting Zabbix agent:                                    [  OK  ]
      4:在zabbix-server上测试
      [root@zabbix-server01 ~]# zabbix_get -s 192.168.56.99 -k memcached_stats[uptime]
      10518
      [root@zabbix-server01 ~]# zabbix_get -s 192.168.56.99 -k memcached_stats[bytes]
      74
      5:web上配置
      导入模板
      链接模板到主机

      在Latest data中看到最新的数据,恭喜你,成功了!
      系统运维工程师:李超





  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665458-1-1.html 上篇帖子: 使用python写一个监控mysql的脚本,在zabbix web上加上模板 下篇帖子: zabbix 2.0.0部署文档
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表