Skip to content

python解析sflow报文并存储到mysql

Notifications You must be signed in to change notification settings

HunterVillage/sflow_traffic

 
 

Repository files navigation

sflow_traffic

python解析sflow或TCP报文(多种格式)并存储到mysql,可多个机器部署

说明

sflowtool version: 5.02
Python version 2.7.5
抓包程序获取的数据,根据ip+port获取服务之间的调用关系,并存储到mysql

可以抓取两种报文

  • sflow报文 调用start.shsflowactive ,同时需要下载sflowtool
    • sflowtoolsflow报文转为netsFlow报文并发到本机指定端口(udp)
    • getTraffic文件getIp函数里调用parseSflow函数
  • 经过GRE封装过的报文 调用start.shtrafficActive函数即可
    • getTraffic文件getIp函数里调用parseTCP函数

补充

关于两种GRE格式解析,我遇到的问题
如果遇到类似dpkt解析不了的GRE报文(不限于GRE),可以按照以下方式进行扩展:

ETH_TYPE_ERSPAN1 = 0x88be    # 指的是protocol Type的值  
...  
Ethernet.set_type(ETH_TYPE_ERSPAN1, Ethernet)  

启动

sh start.sh

定时设定

格式:'HH:mm:ss',例'1:20:00'表示凌晨1点20, 如果设定时间的小时数大于当前时间的小时数则,会在当天执行一次,例当前时间'10:20:00',设定时间11:00:00,则会在40分钟后第一次执行。如果设定时间为10:59:00,则会在第二天开始的10:59:00第一次执行

tip: 每天都会在指定时间执行

目录结构

├── addpath.py                          //环境变量配置  
├── conf.py                             //配置文件   
├── dao.py                              //数据库操作 
├── formart_server
│   ├── __init__.py
│   └── f_s.py                          //对数据格式化以便存储到对应表里
├── getDefaultIp
│   ├── __init__.py
│   ├── getDefaultIp.py                 //获取抓包网卡ip
├── getTraffic.py                       //主程序
├── get_service
│   ├── __init__.py
│   └── get_data.py                     //根据ip+port获取对应服务
├── log.py                              //日志配置 
├── log_history                         //日志文件存储目录    
├── intervalTime.py                     //自定义定时器,每天指定时间执行任务
├── requirements.txt
├── start.sh                            //启动文件  

About

python解析sflow报文并存储到mysql

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.7%
  • Shell 3.3%