美文网首页运维工程师的进阶之路
python 读取openTSDB自动生成网络监控日报(第一版)

python 读取openTSDB自动生成网络监控日报(第一版)

作者: Gswu | 来源:发表于2019-04-09 19:50 被阅读0次

    第一版程序基本上是一条一条添加的,后期维护比较困难
    后续的第二版会引入配置文件。
    前提有一个Net Report.xlsx的日报模板,需要从openTSDB中取出网络监控数据,计算一段时间(24小时)的最大值,填入日报相应的单元格。
    其中的IP我都写了XX,读者自己补充自己的IP

    import requests
    import openpyxl
    import time
    #实现目的:
    #目前所有网络设备(交换机、防火墙)的snmp监控数据都存储在openTSDB中
    #现状是每天管理员需要去cacti手动抄数据
    #目标是实现每天自动从openTSDB中获取前一天的监控数据,记录到表格。
    #后续需要实现excel表格的邮件发送和数据异常判断。
    filename="Net Report.xlsx"
    
    def get_data_by_get(query):
        r = requests.get("http://192.168.XXX.XX:4242/api/query?" + query)
        if len(r.json()) > 0:
            dps = r.json()[0]['dps']
            return dps
        else:
            return None
    
    
    def write_data(ws,row,column,data):
        ws.cell(row, column, value=data)  # 写入数据
    
    
    
    if __name__ == "__main__":
        wb = openpyxl.load_workbook(filename)  # 打开文件
        ws = wb.active  #获取第一个sheet页
    #****************------------------*********************************
        # 防火墙
        ip = '192.168.XXX.XXX'
        # 防火墙前一日cpu使用率最大值
        CPU_Uti = get_data_by_get('start=24h-ago&m=sum:switch.CpuUtilization{endpoint=%s}' % ip)  # 读数据库
        CPUpercent = max(CPU_Uti.values()) / 100  # 计算最大值
        write_data(ws, 2, 3, CPUpercent)  # 写入表格
        # 防火墙(前一日outside-IN 流量最大值,单位M
        FlowOutsideIn = get_data_by_get('start=24h-ago&m=sum:switch.if.In{endpoint=%s,ifindex=16,ifname=outside}' % ip)
        FlowOutsideIn_Max = int(max(FlowOutsideIn.values()) / (1024 * 1024))
        write_data(ws, 2, 6, FlowOutsideIn_Max)
    
    #****************------------------*********************************
        #外网核心交换机
    
        ip = 192.168.XXX.XXX
        # 外网核心交换机前一日cpu使用率最大值
        CPU_Uti = get_data_by_get('start=24h-ago&m=sum:switch.CpuUtilization{endpoint=%s}' % ip)  # 读数据库
        CPUpercent = max(CPU_Uti.values())/100  # 计算最大值
        write_data(ws, 20, 3, CPUpercent)  # 写入表格
        
    
    
    
    
    #****************------------------*********************************
        #按日保存表格
        nameTime = time.strftime('-%Y-%m-%d')
        excelName = 'Net Report' + nameTime + '.xlsx'  #按日期生成表格名称
        wb.save(filename=excelName) #表格保存
        print("excel save complete!!")
        #表格数值判断
        pass
        #邮件发送表格
        pass
        
    
    

    相关文章

      网友评论

        本文标题:python 读取openTSDB自动生成网络监控日报(第一版)

        本文链接:https://www.haomeiwen.com/subject/xiaiiqtx.html