蛛丝马迹(Clue)项目是分布式网络链路监控系统,该项目是后端项目,需要配合前端项目clue_front进行搭配
有以下特点:
该后端项目是基于Django来实现的,主要包括服务器端的代码和客户端的agent,服务器端主要是用来提供API接口,客户端agent是用来在客户端上运行的,实时采集数据需要
客户端的agent是在agent目录下,提供了python2和python3两种版本供选择
客户端是使用Scapy来进行实时采集流量数据的,具体可参考我的文章【Scapy】获取流量包
采集流量原理:
注意:该项目无前端页面,只提供API接口,前端页面需要配合前端(clue_front)进行页面的数据展示
前端页面的效果(clue_front)
总览页
链路拓扑图
并且点击某个IP可以查该IP的关联:
数据分析页
注意:前提需要安装Python3、supervisor、gunicorn等,建议使用虚拟环境比如pyenv或者是virtualenv等
注意:如没安装Virtualenv的可参考:Python的虚拟环境Virtualenv和Virtualenvwrapper
注意:如没安装supervisor、gunicorn可参考:Flask、Django项目的部署
cd /home/data/devops/
git clone https://gitee.com/paultest/clue_backend.git
pip/pip3 install -r requirements.txt
SQL文件:sql目录下,导入init.sql即可或者是导入以下sql语句:
CREATE DATABASE `clue_backend` DEFAULT CHARACTER SET utf8mb4;
CREATE TABLE `clue_backend`.`za_flow_data`(
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`host_ip` CHAR(50) DEFAULT '' COMMENT '当前主机IP',
`host_name` CHAR(100) DEFAULT '' COMMENT '当前主机名',
`protocol` CHAR(100) DEFAULT '' COMMENT '数据协议',
`source_ip` CHAR(50) DEFAULT '' COMMENT '源IP',
`source_port` INT(10) DEFAULT 0 COMMENT '源数据的端口',
`dest_ip` CHAR(50) DEFAULT '' COMMENT '目的IP',
`dest_port` INT(10) DEFAULT 0 COMMENT '目的数据的端口',
`len` INT(10) DEFAULT 0 COMMENT '数据长度',
`info` VARCHAR(1000) DEFAULT '' COMMENT '数据指向信息',
`time` TIMESTAMP COMMENT '流量时间',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `IDX_HOST_IP` (`host_ip`),
INDEX `IDX_HOST_NAME` (`host_name`),
INDEX `IDX_PROCOTAL` (`protocol`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
注意:如需要测试数据的话,可以导入demo.sql
配置文件:clue_backend\settings.py
环境配置文件:config\dev.py、local.py、prod.py
python3 manage.py makemigrations
python3 manage.py migrate
注意:如没安装supervisor可参考:Flask、Django项目的部署
把supervisor目录里面的配置(dev.conf或prod.conf)复制进/etc/supervisor.d/里面,并且更改名为:clue_backend.conf
cp -R /home/data/devops/clue_backend/supervisor/dev.conf /etc/supervisord.d
mv /etc/supervisord.d/dev.conf /etc/supervisord.d/clue_backend.conf
注意:拷贝dev.conf或者是prod.conf由具体的环境来决定
dev.conf或prod.conf的内容一般如下:
[program: clue_backend]
user=root
environment = ENV="dev"
directory=/home/data/devops/clue_backend/
command=/root/.virtualenvs/clue_backend/bin/python3 /root/.virtualenvs/clue_backend/bin/gunicorn clue_backend.wsgi:application -c ./supervisor/gunicorn_conf.py
autorestart=true
redirect_stderr=true
stdout_logfile=/home/data/logs/clue_backend/clue.stdout.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups =10
其中,command命令里面python3和gunicorn都是需要绝对路径的,Python3的路径可以通过whereis python3
来获取,而gunicorn的可以通过whereis gunicorn
来获取
加载supervisor子进程并且启动clue_backend
supervisorctl reload
supervisorctl start clue_backend
supervisorctl status clue_backend
注意:如supervisorctl未启动的话,需要先使用命令supervisord -c /etc/supervisord.conf
启动
直接拷贝nginx目录下的clue-backend.devops.com.conf(生产环境)或者是clue-backend.tdevops.com.conf(测试环境)到nginx的配置目录下(一般是/etc/nginx/conf.d)
cp -R /home/data/devops/clue_backend/nginx/clue-backend.tdevops.com.conf /etc/nginx/conf.d/
注意:域名可自定义的
检查nginx是否正确
nginx -t
重新加载nginx
nginx -s reload
在其他机器,设置hosts即可访问:clue-backend.tdevops.com
把agent目录拷到对应的客户端,运行对应版本的agent即可,会实时输出流量数据
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。