博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zabbix3.4.2监控zookeeper
阅读量:2338 次
发布时间:2019-05-10

本文共 4272 字,大约阅读时间需要 14 分钟。

参考 https://www.cnblogs.com/yxy-linux/p/8023660.html

环境

centos 7.3
zabbix-3.4.2
python2.7

###############################################################安装配置zabbix agent端###########################################################################

1、安装zabbix  agent

    安装依赖包

    yum -y install gcc gcc-c++ nc autoconf automake zlib zlib-devel openssl openssl-devel pcre* make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel

    创建 用户

    groupadd zabbix
    useradd zabbix -s /sbin/nologin -M -g zabbix

    安装zabbix  

    tar -zxvf zabbix-3.4.2.tar.gz 
    cd zabbix-3.4.2/

    ./configure --prefix=/usr/local/zabbix-3.4.2/ --enable-agent       

    make install
    
2、修改配置文件
vim /usr/local/zabbix-3.4.2/etc/zabbix_agentd.conf

[root@localhost zabbix-3.4.2]# grep '^[a-Z]' etc/zabbix_agentd.conf

LogFile=/tmp/zabbix_agentd.log
StartAgents=0
ServerActive=10.10.134.117
Hostname=10.2.11.50
RefreshActiveChecks=120
Include=/usr/local/zabbix-3.4.2/etc/zabbix_agentd.conf.d/*.conf

其他默认即可

3、拷贝脚本到zabbix agent端  用户采集zookeeper状态信息

创建脚本目录用户存放各种脚本   方便以后管理
mkdir -p /usr/local/zabbix-3.4.2/script

 把imok.py mntr.py roles.py 拷贝到/usr/local/zabbix-3.4.2/scripts
 并赋予执行权限
 chmod +x imok.py mntr.py roles.py

4、添加一个新的配置文件
cd /usr/local/zabbix-3.4.2/etc/zabbix_agentd.conf.d/
vim zookeeper.conf 

UerParameter=zookeeper.mntr[*],/usr/local/zabbix-3.4.2/scirpt/mntr.py $1

UerParameter=zookeeper.imok,/usr/local/zabbix-3.4.2/scirpt/imok.py
UerParameter=zookeeper.roles,/usr/local/zabbix-3.4.2/scirpt/roles.py

5、启动zabbix agent

/usr/local/zabbix-3.4.2/sbin/zabbix_agentd -c /usr/local/zabbix-3.4.2/etc/zabbix_agentd.conf

测试:
到zabbix server端  
    ./zabbix_get -s 10.2.11.50 -k zookeeper.status[all]
查看是否已有字典形式的数据
    {'zk_followers': 0, 'zk_outstanding_requests': 0, 
    'zk_approximate_data_size': 3017854, 'zk_packets_sent': 49844628, 
    'zk_pending_syncs': 0, 'zk_avg_latency': 0, 'zk_version': '3.4.8--1, built on 02/06/2016 03:18 GMT', 
    'zk_watch_count': 7036, 'zk_packets_received': 44019531, 'zk_open_file_descriptor_count': 79, 
    'zk_server_ruok': 'imok', 'zk_server_state': 'follower', 'zk_synced_followers': 0, 
    'zk_max_latency': 1549, 'zk_num_alive_connections': 53, 'zk_min_latency': 0, 'zk_ephemerals_count': 3288, 
    'zk_znode_count': 7442, 'zk_max_file_descriptor_count': 65535}
    
    
    
    
#################zabbix server端配置#######################################

登录到web界面

##########
把当前目录下的zabbix_zookeeper_model.xml文件导入到zabbix server
##########
配置------模板-----导入------选择   abbix_zookeeper_model.xml

至此zabbix监控zookeeper完成

 

 

#################imok.py################

#!/usr/bin/python

import socket
from cStringIO import StringIO
def run():
    try:
    
    s=socket.socket()
    s.connect(('localhost',2181))
    s.send('ruok')
    data_mntr=s.recv(2048)
    s.close()
    except socket.error as e:
    return 10
    else:
    h = StringIO(data_mntr)
    if h:    
            if h.readline() == "imok":
            return 0
        else:
        return 10
    else:
        return 10

if __name__ == "__main__":

    print run()
 

#################mntr.py#############################

#!/usr/bin/python

import socket
from cStringIO import StringIO
import sys

def run(param):

    try:
    s=socket.socket()
    s.connect(('localhost',2181))
    s.send('mntr')
    data_mntr=s.recv(2048)
    s.close()
    except socket.error as e:
    return -10
    else:
    h=StringIO(data_mntr)
    if h:
         for line in  h.readlines():
        key,value=map(str.strip,line.split('\t'))
            if key == param:
                 return value
        else:
            return -10
    return -10

if __name__ == "__main__":

   params = sys.argv[1]
   print run(params)

 

#################roles.py#########################

#!/usr/bin/python

import socket
#from StringIO import StringIO
from cStringIO import StringIO

def run():
    try:
        s=socket.socket()
    s.connect(('localhost',2181))
    s.send('mntr')
    data_mntr=s.recv(2048)
    s.close()
    except socket.error as e:
    return 10
    else:
    h=StringIO(data_mntr)
    if h:
        for line in  h.readlines():
        key,value=map(str.strip,line.split('\t'))
                if key == "zk_server_state":
                    if value == "leader":
                    return 2
            elif value == "follower":
                    return 1
        else:
        return 10
        else:
            return 10

if __name__ == "__main__":
   print run()

#################脚本说明#########################33

测脚本 参考  http://blog.51cto.com/john88wang/1745339

环境
centos 7
python 2.7
  

zabbix监控zookeeper脚本

1、imok  判断zookeeper服务是否正常
./imok   返回1则为正常  返回10则不正常

2、mntr  传单个的参数能获取到对应值

举例: 

响应一个客户端请求的时间,建议这个时间大于10个Tick就报警
./mntr  zk_avg_latency

3、roles  判断当前zookeeper的角色  follower或 leader   
./roles
如果leader 返回  2
如果 follower 返回1
这样方便显示在 zabbix图形界面
 

你可能感兴趣的文章
Python PAT (Basic Level) Practice 1006 换个格式输出整数
查看>>
Python PAT (Basic Level) Practice 1009 说反话
查看>>
Python PAT (Basic Level) Practice 1011 A+B 和 C
查看>>
Python PAT (Basic Level) Practice 1017 A除以B
查看>>
Python PAT (Basic Level) Practice 1042 字符统计
查看>>
spring dubbo 2.7.3 zookeeper 项目构建
查看>>
spring dubbo 报错
查看>>
如何在非 bean 对象中注入 dubbo service
查看>>
前后端分离 ajax java跨域配置 spring boot 、 spring security
查看>>
java spring boot 拦截所有请求 显示请求路径 方法 ip 等
查看>>
java spring boot jackson 配置 null字符串为"" null数组为[]
查看>>
java redistemplate 配置序列化
查看>>
ArcEngine中加载和读取Style文件或.serverstyle文件
查看>>
递归算法及经典递归例子代码实现
查看>>
Word Ladder
查看>>
Word Ladder II
查看>>
Longest Consecutive Sequence
查看>>
Surrounded Regions
查看>>
Palindrome Partitioning
查看>>
Palindrome Partitioning II
查看>>