zoukankan      html  css  js  c++  java
  • 用fabric部署维护kle日志收集系统

    最近搞了一个logstash kafka elasticsearch kibana 整合部署的日志收集系统。部署参考lagstash + elasticsearch + kibana 3 + kafka 日志管理系统部署 02

    上线过程中有一些环节,觉得还是值的大家注意的比如:

    1,应用运维和研发人员要讨论一下日志格式的定义,

    2,在logstash取日志和消费端logstash消费日志麻、过滤日志的时候怎么要高效,避免服务本身告成系统压力过大,如果每天要处理过亿日志量,性能不注意,哈哈,可以使劲想像,会有什么后果,

    3,kafka和es集群的配置,监控等,及重启服务时应注意的事情,

    4,目前 kle日志收集在实时展示比较有优势,那历史数据,也就是说在es中的索引需要清理旧的数据,索引需要优化提高kibana检索速度等。

    在维护过程中也遇 到了一些问题,比如批量部署生产端logstash,配置文件,更新配置文件脚本,巡检服务是否正常等,综上,所以利用fabric弄一个简单的管理脚本,还是很好玩的。 源代码已上传这里,下面主要是对一些主要功能及源码做一说明,以便过几个月看到时候,还提醒一下自己。哈哈

    项目目录如下;

    ├── bin
    │   ├── __init__.py
    │   ├── logstash_dev.py
    │   ├── test.txt
    │   └── update_config.sh
    ├── branches
    ├── conf
    │   ├── config.conf
    │   ├── __init__.py
    │   ├── __init__.pyc
    │   ├── setting.py
    │   └── setting.pyc
    ├── config
    ├── description
    ├── file
    │   ├── config
    │   │   ├── appapi
    │   │   │   ├── logstash_shipper_production.conf
    │   │   │   └── logstash_shipper_production.conf.bak
    │   │   ├── consume
    │   │   │   ├── consume_fiter.txt
    │   │   │   ├── consume_input.sh
    │   │   │   ├── consume_input.txt
    │   │   │   ├── consume_output.txt
    │   │   │   ├── get_typelist.sh
    │   │   │   ├── get_typelist.txt
    │   │   │   ├── logstash_indexer_consume.conf
    │   │   │   └── logstash_indexer_consume.conf.template
    │   │   ├── g1web
    │   │   │   ├── logstash_shipper_production.conf
    │   │   │   └── logstash_shipper_production.conf.template
    │   │   ├── houtai
    │   │   │   └── logstash_shipper_production.conf
    │   │   └── wapapi
    │   │       └── logstash_shipper_production.conf
    │   └── logstash
    │       ├── install_logstash.sh
    │       └── logstashd
    

    说明: bin目录放执行脚本 conf 目录放业务服务器信息(config.conf)、调用配置文件(setting.py) file 目录放需要推送到终端的配置文件或安装包

    logstash_dev 应用逻辑如下:

    1.logstash_dev说明

    ./update_config.sh test.txt
    向config.conf 生成和更新env.roles需要业务组和主机信息
    ./
    fab -f logstash_dev.py --shortlist  #可以列出目前定义的执行任务有那些
    如下:
    
    root@wqk-K43SD:/var/www/fabric_project/logstash_dev/bin# fab -f logstash_dev.py --shortlist
    /var/www/fabric_project/logstash_dev
    G1WEB
    JDK_DEP
    check_load
    check_localhost
    jdk_check
    logstash_check
    logstash_production
    logstash_production_config_update
    logstash_service
    logstashd_update
    
    执行任务
    
    fab -f logstash_dev.py G1WEB   
    

    只要会点python 了解一点fabric原理 logstash_dev.py里的东东比较好定义的,因主要是调用的shell

    2. setting.py这里面的东西,是我最容易忘记的

    #!/usr/bin/env python
    # coding:utf8
    #author: shantuwqk@163.com
    
    
    from fabric.colors import *
    from fabric.api import *
    import re
    import sys,os
    import ConfigParser
    
    #sys.path.append('/var/www/python_program/fabric_project/ops_manager')
    
    nowdir = os.getcwd()
    BASEDIR = '/'.join(nowdir.split('/')[:-1])
    CONFIGFILE = "%s/conf/config.conf"%BASEDIR
    PWDFILE = "%s/conf/.ippwd.txt"%BASEDIR
    print BASEDIR
    
    
    
    env.user = 'root'
    env.roledefs = {}
    env.passwords = {}
    
    #下面主要是实现加载配置文件已解析成字典给env.roledefs
    def Handle_Conf_Role():
        CONF = ConfigParser.ConfigParser()
        CONF.read(CONFIGFILE)
        g = CONF.items('HostGroup')
        for gh in g:
            env.roledefs[gh[0]] = []
            for h in gh[1].split(','):
                env.roledefs[gh[0]].append(h)
        return env.roledefs
    
    #下面主要实现解决主机密码文件,解析成env.passwords字典
    def Handle_Host_Pass():
        with open(PWDFILE,'r') as f:
            for line in f.readlines():
                for g,hlist in Handle_Conf_Role().items():
                    for h in hlist:
                        b = re.match(r'^%s .*' %h,line,re.M|re.I)
                        if b:
                            c = b.group()
                            k = c.split()[0]
                            v = c.split()[1]
                            nc='%s@%s:22'%(env.user,k)
                            env.passwords[nc] = v
    
            return env.passwords
    
    
    
    if __name__ == '__main__':
        print Handle_Conf_Role()
        print Handle_Host_Pass()
    

    3.后期想法,实现对logstash kafka zookeeper es等想关服务及应用配置文件的管理

  • 相关阅读:
    迷失第一季/全集Lost 1迅雷下载
    星际之门SG1第一至十季/全集Stargate SG-1迅雷下载
    广告狂人第一至七季/全集Mad Men迅雷下载
    唐顿庄园第一至五季/全集Downton Abbey迅雷下载
    越狱第一至五季/全集迅雷下载
    邪恶力量第一至九季/全集Supernatural迅雷下载
    豪斯医生第一季/全集House M.D 1迅雷下载
    绝命毒师第五季/全集Breaking Bad迅雷下载
    绝命毒师第一季/全集Breaking Bad迅雷下载
    冰血暴第一季/全集Fargo迅雷下载
  • 原文地址:https://www.cnblogs.com/shantu/p/4589823.html
Copyright © 2011-2022 走看看