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

[经验分享] 自动统计Kafka集群日志

[复制链接]

尚未签到

发表于 2019-1-31 09:54:29 | 显示全部楼层 |阅读模式
  编写python脚本 statistic.py
#!/usr/bin/python
"""pip install kazoo"""
"""pip install kafka-python"""
import time
import threading
from kazoo.client import KazooClient
from  kafka.consumer import KafkaConsumer
import elasticsearch
EARLYRES={}
def _get_partitions_logsize( topic,zookeepers,broker_list ):
    zk=KazooClient( hosts = zookeepers,read_only = True )
    try:
        zk.start()
       # res={}
    path = "/brokers/topics/"+topic+"/partitions"
    if zk.exists( path ):
        partitions = zk.get_children( path )
        eachsave = {}
        consumer = KafkaConsumer( topic,group_id="kafka_monitor",metadata_broker_list=broker_list.split(",") )
        fetch = consumer._offsets.fetch
        for partition in partitions:
            logsize = fetch[ ( topic, int(partition ) ) ]
            eachsave[ int( partition ) ] = logsize
    else:
        return {}
    return eachsave
    except Exception as e:
     #   print e
    return {}
    finally:
    zk.stop()
def analyze_logsize( zookeepers,broker_list ) :
    zk = KazooClient(hosts=zookeepers,read_only=True)
    try:
        zk.start()
        path = "/brokers/topics/"
        sum=0
        if zk.exists(path):
            topics = zk.get_children( path )
            for topic in topics:
                add_dict = {}
                nowpartitions = _get_partitions_logsize(topic,zookeepers,broker_list)
                if nowpartitions !=  {}:
                    for partition in nowpartitions:
                        sum += nowpartitions [ partition ]
            return sum   
        else:
            pass
    except Exception as e:
        pass
        print e
    finally:
        zk.stop()
if __name__ == '__main__':
    a = analyze_logsize( "127.0.0.1:2181/kafka/1001", "127.0.0.1" )
    utc = time.localtime( time.time() )
    File = open ( "/usr/home/shixi_kaiwen/script/develop/logsizecheck/2016/increment_day."+time.strftime( '%m-%d ',utc),"w" )
    File2 = open ( "/usr/home/shixi_kaiwen/script/develop/logsizecheck/2016/lastlogsize","r+")
    last = int ( File2.read() )
    increment = a - last
    increment = str ( increment )
    File.write( increment )
    File.close()
    File2.close()
    File3 = open( "/usr/home/shixi_kaiwen/script/develop/logsizecheck/2016/lastlogsize", "w")
    File3.write ( str( a ) )
    File3.close()
    print "last = ",last
    print "now_logsize = ",a
    print "increment = ",increment  在其目录下创建lastlogsize文件

  echo "" > ./lastlogsize
  添加crontab任务
  crontab -e   

    1 16 * * * python /usr/home/shixi_kaiwen/script/develop/logsizecheck/2016/statistic.py >> python /usr/home/shixi_kaiwen/script/develop/logsizecheck/2016/statistic.py >> /usr/home/shixi_kaiwen/script/develop/logsizecheck/2016/output.log 2>&1  





运维网声明 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-669913-1-1.html 上篇帖子: kafka入门 下篇帖子: KAFKA安装+配置详解+常用操作+监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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