1 Star 1 Fork 3

Paul / clue_backend

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

蛛丝马迹-后端

1. 概述

蛛丝马迹(Clue)项目是分布式网络链路监控系统,该项目是后端项目,需要配合前端项目clue_front进行搭配

有以下特点:

  • 精益运维:发现闲置资源,无效网络策略,节能增效
  • 网络可视化:动态生成拓扑,集群情况一目了然
  • 网络透视:生成策略列表,风险策略告警
  • 问题定位:偶现问题事后回溯
  • 对应用透明:金融系统的复杂度高,关联系统多,所有系统均接入Zipkin类调用链不现实(Java, Nodejs, Cobol, Python, Golang, C++, C#)

该后端项目是基于Django来实现的,主要包括服务器端的代码和客户端的agent,服务器端主要是用来提供API接口,客户端agent是用来在客户端上运行的,实时采集数据需要


客户端的agent是在agent目录下,提供了python2和python3两种版本供选择

客户端是使用Scapy来进行实时采集流量数据的,具体可参考我的文章【Scapy】获取流量包


采集流量原理:

image-20201116233512700


注意:该项目无前端页面,只提供API接口,前端页面需要配合前端(clue_front)进行页面的数据展示

2. 效果页面

前端页面的效果(clue_front)


总览页

image-20201107164705669

链路拓扑图

image-20201107164348553

并且点击某个IP可以查该IP的关联:

image-20201107164443790

数据分析页

image-20201107164601475

3. 服务端安装步骤

注意:前提需要安装Python3、supervisor、gunicorn等,建议使用虚拟环境比如pyenv或者是virtualenv等


注意:如没安装Virtualenv的可参考:Python的虚拟环境Virtualenv和Virtualenvwrapper


注意:如没安装supervisor、gunicorn可参考:Flask、Django项目的部署


A. 拉代码

cd /home/data/devops/
git clone https://gitee.com/paultest/clue_backend.git

B. 安装依赖

pip/pip3 install -r requirements.txt

C. 创建数据库,导入SQL


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


D. 修改配置


配置文件:clue_backend\settings.py


环境配置文件:config\dev.py、local.py、prod.py


E. 执行数据库迁移

python3 manage.py makemigrations
python3 manage.py migrate

F. supervisor增加子进程


注意:如没安装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启动

G. 配置nginx

直接拷贝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

3. agent安装步骤

把agent目录拷到对应的客户端,运行对应版本的agent即可,会实时输出流量数据

4. 相关配置

  • 端口:8010
  • 域名:clue-backend.devops.com(生产)、clue-backend.tdevops.com(测试)
  • Django配置:clue_backend/settings.py
  • Django环境配置:clue_backend/config/local.py或dev.py或prod.py
  • 日志地址:/home/data/logs/clue_backend
  • nginx配置:nginx目录,需要把对应文件拷贝到/etc/nginx/conf.d/
  • supervisor配置:supervisor/dev.conf或prod.conf,需要把对应文件拷贝到/etc/supervisord.d下,并且改名clue_backend.conf
  • gunicorn配置:supervisor/gunicorn_conf.py

空文件

简介

蛛丝马迹(Clue)项目是分布式网络链路监控系统的服务器端,这里是服务器端,需要配合前端项目clue_front进行搭配 展开 收起
Python
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/paultest/clue_backend.git
git@gitee.com:paultest/clue_backend.git
paultest
clue_backend
clue_backend
master

搜索帮助