该项目适合中小型公司日志查询工作。大型公司可以使用elk等。该系统其实就是调用了absible命令去查日志,然后把输出的信息输到页面查看。

日志查询系统

维护手册

作者:陈土锋

日期:2020年6月11日

目录

前言

1、该程序是根据xxxxxx目前系统管理层面开发而成,故仅适用于xxxxxx系统平台。

2、该系统开发初心为减少运维协助研发查询线上生产日志、线上配置和线上其他环境而开发出来的。

3、架构使用了Python3+Django+uwsgi+nginx 基础架构。

4、底层调用ansible命令

一、系统底层逻辑说明

1.1 前端代码通过form表单提交用户交互信息到后端。

1.2 后端接受到输入信息,经过逻辑处理之后调用服务器的ansible命令来执行远程命令。

1.3 远程命令返回的结果,再通过文本格式展示到前端页面供用户查看。

1.4 如果文本文件行数过多,则用户可以通过下载的连接下载到文本到本地查看查看。

二、环境说明

2.1 服务器安装ansible命令(前提)

2.2 ansible服务器必须能通过下面命令格式去执行远程命令:

如:ansible slivr --sudo -m shell -a "ls -l "

如果是root用户则在sudoer文件加入root用户sudo权限即可,这样无需修改代码。

2.3 安装Python3

2.4 安装虚拟环境

2.5 安装Django 1.8 版本(最新版Django3.5需要改下代码的URL转发方式)

三、系统搭建

3.1 安装Python3

3.1.1 安装依赖环境

输入命令:yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

3.1.2下载Python3

1.进入opt文件目录下,cd opt/

2.下载python3   (可以到官方先看最新版本多少)

输入命令 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz

3.1.3 安装Python3

安装在/usr/local/python3(具体安装位置看个人喜好)

(1)创建目录:  mkdir -p /usr/local/python3

(2)解压下载好的Python-3.x.x.tgz包(具体包名因你下载的Python具体版本不不同⽽而不不同,如:我下载的是Python3.7.1.那我这里就是Python-3.7.1.tgz)

输入命令 tar -zxvf Python-3.7.1.tgz

解压后出现python的文件夹

进入解压后的目录,编译安装。(编译安装前需要安装编译器yum install gcc)

(3)进入python文件夹,生成编译脚本(指定安装目录):

cd Python-3.7.1

./configure --prefix=/usr/local/python3

#/usr/local/python3为上面步骤创建的目录

(4)编译:make

(5)编译成功后,编译安装:make install

安装成功:

(6)检查python3.7的编译器:/usr/local/python3/bin/python3.7

3.1.4 建立Python3和pip3的软链:

ln -s /usr/local/python3/bin/python3 /usr/bin/python3

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

3.1.5 并将/usr/local/python3/bin加入PATH

(1)vim /etc/profile

(2)按“I”,然后贴上下面内容:

# vim ~/.bash_profile

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/python3/bin

export PATH

source ~/.bash_profile

3.2 安装虚拟环境

3.2.1 生产环境虚拟环境包路径:

需要用到下面这些包:可以用一台联网的linux系统用pip命令下载到本地再上传到离线的服务器。

appdirs-1.4.3-py2.py3-none-any.whl

distlib-0.3.0.zip

filelock-3.0.12-py3-none-any.whl

importlib_metadata-1.6.0-py2.py3-none-any.whl

importlib_resources-1.4.0-py2.py3-none-any.whl

pbr-5.4.5-py2.py3-none-any.whl

six-1.14.0-py2.py3-none-any.whl

stevedore-1.32.0-py2.py3-none-any.whl

virtualenv-20.0.18-py2.py3-none-any.whl

virtualenv_clone-0.5.4-py2.py3-none-any.whl

virtualenvwrapper-4.8.2-py2.py3-none-any.whl

zipp-3.1.0-py3-none-any.whl

3.2.2 先安装distlib-0.3.0.zip

unzip distlib-0.3.0.zip

cd distlib-0.3.0

python3 setup.py build

python3 setup.py install

再安装所有的whl包:

pip3 install *.whl

3.2.3 配置环境

mkdir /root/.virtualenvs

用locate virtualenvwrapper.sh 找出这个文件的路径,一般在安装的python3 bin目录下

vim ~/.bashrc

export WORKON_HOME=/root/.virtualenvs

source /usr/local/python3/bin/virtualenvwrapper.sh

vim  /usr/local/python3/bin/virtualenvwrapper.sh

找到VIRTUALENVWRAPPER_PYTHON关键字,在下面的if上面添加红色代码,python路径要对。

VIRTUALENVWRAPPER_PYTHON=/usr/local/python3/bin/python3

if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]

then

source ~/.bashrc

做virtualenv命令软连接:否则后续创建虚拟环境会报错

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

[root@ansible-server2 dwlirui2]# pip3 list--可以看到已经安装了上面的包()

Package Version

------------------- -------

appdirs 1.4.3

distlib 0.3.0

filelock 3.0.12

importlib-metadata 1.6.0

importlib-resources 1.4.0

pbr 5.4.5

pip 20.0.2

setuptools 39.0.1

six 1.14.0

stevedore 1.32.0

virtualenv 20.0.18

virtualenv-clone 0.5.4

virtualenvwrapper 4.8.2

zipp 3.1.0

3.2.3 创建虚拟环境

[root@ansible-server2 dwlirui2]# mkvirtualenv -p python3 env1

创建成功之后你会默认进入虚拟环境,如创建env1:

[root@ansible-server2 dwlirui2]# mkvirtualenv -p python3 env1

created virtual environment CPython3.6.5.final.0-64 in 1210ms

creator CPython3Posix(dest=/root/.virtualenvs/env3, clear=False, global=False)

seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/root/.local/share/virtualenv/seed-app-data/v1.0.1)

activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/predeactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/postdeactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/preactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/postactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/get_env_details

(env1) [root@ansible-server2 dwlirui2]#这个虚拟环境里面安装的软件和外面环境分开的

3.3 安装Django

通过旧的虚拟环境导出来的包:存放到requirements.txt文件里面。

旧环境登陆虚拟环境执行导出命令:pip3 freeze >requirements.txt

cat requirements.txt --下载如下包

certifi==2020.4.5.1

chardet==3.0.4

Django==1.8.2

idna==2.9

requests==2.23.0

urllib3==1.25.8

然后找一台测试环境能联网的机器下载这些包:

[root@vm44 django_instaa]# pip3 download -r requirements.txt

[root@vm44 django_instaa]# ls --总共下载了下面这么多包

backcall-0.1.0.tar.gz idna-2.9-py2.py3-none-any.whl

backcall-0.1.0.zip requests-2.23.0-py2.py3-none-any.whl

certifi-2020.4.5.1-py2.py3-none-any.whl requirements.txt

chardet-3.0.4-py2.py3-none-any.whl

distlib-0.3.0.zip urllib3-1.25.8-py2.py3-none-any.whl

Django-1.8.2-py2.py3-none-any.whl

scp * root@xx.xx.xx.xx:/data/python_install/django_install --把包传到远程离线服务器

离线服务器登陆虚拟环境

workon env1 --以下命令均在虚拟环境执行

cd /data/python_install/django_install

离线虚拟环境先安装:backcall-0.1.0.zip,distlib-0.3.0.zip

以安装backcall-0.1.0.zip为例:

unzip backcall-0.1.0.zip

cd backcall-0.1.0

python3 setup.py build

python3 setup.py install

再安装所有的whl包:

pip3 install *.whl

安装完了之后,确定是否存在下面这些包:

[root@ansible-server2 logs]# workon  env1

(env1) [root@ansible-server2 logs]# pip list

Package    Version

---------- ----------

backcall   0.1.0

certifi    2020.4.5.1

chardet    3.0.4

distlib    0.3.0

Django     1.8.2

idna       2.9

pip        20.0.2

requests   2.23.0

setuptools 46.1.3

urllib3    1.25.8

uWSGI      2.0.18

wheel      0.34.2

3.4 测试项目是否正常运行

我是通过虚拟环境搭建这个的,nginx安装到服务器上面,uwsgi和Django部署到虚拟环境上面。uwsgi和Django在虚拟环境启动。nginx 在服务器层面启动。

项目代码已经备份到10.1.164.15:/share/logs_bak/10.1.99.243/ logsquerybak/logsquery.20200601.tar.gz

3.4.1 项目部署

我的Django项目部署情况:

部署路径:

/biao/hly_yw_project/

即将logsquery.20200601.tar.gz 直接解压到/biao/hly_yw_project 目录。

manage.py 文件路径:/biao/hly_yw_project/logsquery/manage.py

wsgi.py 文件路径:/biao/hly_yw_project/logsquery/logsquery/wsgi.py

settings.py 文件路径:/biao/hly_yw_project/logsquery/logsquery/settings.py

查询出来的文件放到这里:

/biao/hly_yw_project/logsquery/queryapp/static/files/

目前只保留7天的文件:

0 2 * * * find /biao/hly_yw_project/logsquery/queryapp/static/files -name "*.txt" -mtime +7 -type f |xargs rm -f

项目结构是这样的:

3.4.2 项目测试

1、确保Django项目能够正常运行,即能够用Python3 manage.py runserver 0.0.0.0:8000 运行。

(env1) [root@ansible-server2 logs]# cd /biao/hly_yw_project/logsquery/

(env1) [root@ansible-server2 logs]# Python3 manage.py runserver 0.0.0.0:8000

用浏览器访问ip:8000看下能否正常访问下面页面。

四、nginx+uwsgi+Django代理项目

4.1 安装uwsgi

uwsgi是wsgi协议的实现服务。

我是离线安装的。

下载 uwsgi-2.0.18.tar.gz

可以找一台能够联网的服务器通过pip download 命令来下载,传到离线服务器上面。

解压安装:(在虚拟环境里面安装)

workon env1

tar zxf uwsgi-2.0.18.tar.gz

cd uwsgi-2.0.18

python3 setup.py build

python3 setup.py install

pip list 查看是否安装成功

uWSGI 2.0.18

4.2 配置uwsgi

mkdir /etc/uwsgi_conf/

cat /etc/uwsgi_conf/uwsgi.ini

# uwsig使用配置文件启动

[uwsgi]

# 项目所在的根目录

chdir=/biao/hly_yw_project/logsquery

# 指定项目的application,区别于启动命令--wsgi-filemysite/wsgi.py

#logsquery自己应用的名字

module=logsquery.wsgi:application

#the local unix socket file than commnuincate to Nginx

# 指定sock的文件路径,这个sock文件会在nginx的uwsgi_pass配置,用来nginx与uwsgi通信

# 支持ip+port模式以及socket file模式

#socket=/etc/uwsgi_conf/uwsgi.sock

socket=127.0.0.1:9050

# 进程个数

processes = 8

# 每个进程worker数

workers=5

procname-prefix-spaced=queryapp # uwsgi的进程名称前缀

py-autoreload=1 # py文件修改,自动加载

# 指定IP端口,web访问入口

http=0.0.0.0:9051

# 启动uwsgi的用户名和用户组

uid=root

gid=root

# 启用主进程

master=true

# 自动移除unix Socket和pid文件当服务停止的时候

vacuum=true

# 序列化接受的内容,如果可能的话

thunder-lock=true

# 启用线程

enable-threads=true

# 设置一个超时,用于中断那些超过服务器请求上限的额外请求

harakiri=30

# 设置缓冲

post-buffering=4096

# 设置日志目录

daemonize=/var/log/uwsgi_conf/uwsgi.log

# uWSGI进程号存放

pidfile=/etc/uwsgi_conf/uwsgi.pid

#monitor uwsgi status 通过该端口可以监控 uwsgi 的负载情况

# 支持ip+port模式以及socket file模式

# stats=%(chdir)/uwsgi_conf/uwsgi.status

4.3 启动uwsgi

cd /etc/uwsgi_conf/

uwsgi --ini uwsgi.ini

停止:

uwsgi --stop uwsgi.pid

4.4 配置nginx 代理Django

nginx添加一个server:

server {

listen       8000;

server_name  10.1.99.243;

#注释下面配置,同时支持https和http访问

#ssl on;

#access_log  off;

access_log /var/log/nginx/nginx.log;

error_log /var/log/nginx/nginx.log;

charset utf-8;

client_max_body_size 100M;

location /static{

alias /biao/hly_yw_project/logsquery/queryapp/static;

}

location /  {

include  /etc/nginx/uwsgi_params;

uwsgi_pass 0.0.0.0:9050;

proxy_read_timeout 3600s;

proxy_send_timeout 3600s;

uwsgi_read_timeout 600;

uwsgi_send_timeout 600;

uwsgi_connect_timeout 600;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

#使用497状态重写到http上面

}

重启nginx或者重载nginx

nginx -s reload

页面访问:

五、Django3.0.7安装

因1.8.2版本有漏洞,需要升级到最新版。最新版有些模块不兼容,代码也有些地方相对1.8.2的有改动。

Django3.0的需要用这个包:

10.1.99.243: /biao/hly_yw_project/logsquery.django3.0.7.tar.gz

其他应用安装方式不变,安装Django3.0.7方式。

安装包备份目录:

10.1.99.243: /usr/local/vvm/logs/django

10.1.164.15:/share/logs_bak/10.1.99.243/django

进入虚拟环境:

workon env1

#解压

tar zxf django3.0.tar.gz

#安装

pip install *whl

其他配置参考1.8.2的

python服务端开发调试日志系统_Python Django项目日志查询系统相关推荐

  1. python服务端开发调试日志系统_Python:如何进行延迟调试日志记录

    我有一些像这样的python: def foo(): logger = logging.getLogger() # do something here logger.debug('blah blah ...

  2. python作业火车票订购系统_Python实现12306火车票查询系统

    最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...

  3. python服务器端开发面试_【网易游戏Python面试】python 服务端开发-看准网

    10.21终面已参加,希望能顺利通过终面拿到offer-❤一共三轮,电话面试+笔试+视频面试,视频面试3V110月19日投的新媒体运营的简历,HR说因为是周末,等工作日再联系我,在周一下午三点我接到了 ...

  4. UE4 TCP通信 (UE客户端与网络调试助手服务端、python服务端通信)

    目录 一.使用UE4建立TCP客户端 二.使用网络调试助手建立服务端 三.基于网络调试助手的服务端与UE客户端通信 四.基于python的TCP服务端与UE客户端通信 一.使用UE4建立TCP客户端 ...

  5. 一场B站服务端开发面试之旅

    作者 | 蓝 来源 | 我是程序员小贱(ID:Lanj1995Q) 此次B站服务端开发面试之旅可谓惊险,不过通过对大部分面试题套路的掌握,不出意外还是拿下了,下面我们来看看这些题是不是常见的不能再常见 ...

  6. python 服务端框架_GitHub - edisonlz/fastor: Python服务端开发框架-极易上手,超出你的想象!...

    欢迎使用Python 服务端开发框架 Fastor Fastor是一款专为Python 打造的API与后端管理系统,通过精心的设计与技术实现,集成了大部分稳定开发组件,memcache , redis ...

  7. 七牛CEO许式伟:服务端开发那些事儿

    [http://www.donews.com/company/201511/2907818.shtm] 七牛CEO许式伟:服务端开发那些事儿 2015-11-09 11:14:05 服务端开发对于任何 ...

  8. java服务端开发 php_PHP使用thrift做服务端开发

    php中文网最新课程 每日17点准时技术干货分享 php使用thrift做服务端开发 thrift采用接口描述语言定义和创建服务,用二进制格式传输数据,体积更小.效率更高,对于高并发.数据量大和多语言 ...

  9. 第13章 Kotlin 集成 SpringBoot 服务端开发(1)

    第13章 Kotlin 集成 SpringBoot 服务端开发 本章介绍Kotlin服务端开发的相关内容.首先,我们简单介绍一下Spring Boot服务端开发框架,快速给出一个 Restful He ...

最新文章

  1. inconfont 字体库应用
  2. SpringBoot Actuator监控【转】
  3. CTFshow php特性 web97
  4. 【java开发系列】—— 集合使用方法
  5. mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析
  6. Tokyo cabinet HDB– 初始化
  7. 【Unity开源项目精选】UniRx:Unity中的响应式编程
  8. 区块链应用构建解决方案Reach拟于今年三季度在Algorand启动Balancer
  9. 封城第12日,冰箱都快塞不下咯(附菜谱分享)
  10. imo云办公室与RTX竞品分析报告
  11. matlab 保存图片大小尺寸_改变figure大小存储图片(matlab)
  12. dd命令参数详解及数据操作实战
  13. 你不得不知道的这6款可免费试用的JavaScript插件
  14. 基于财务预测的基本面因子的分析
  15. 微软surface屏幕测试软件,【微软 Surface Pro 3 平板电脑使用感受】屏幕|软件_摘要频道_什么值得买...
  16. Seq2Seq基本原理
  17. 让最小化安装的CentOS 6.8能够浏览网页
  18. 重磅开源:标星超过 10k+ 的免费接口,API 的搬运工
  19. UV云任务小米运动步数修改PHP网站源码
  20. 海南三亚自由行 享受无拘无束

热门文章

  1. hive 窗口函数(持续更新)
  2. 17173游戏网-王者荣耀代码优化分析(含内链)(更多内容请访问http://www.eduaskx6.com/)...
  3. BTM 领涨「国产」公链,46支区块链概念股涨停
  4. keras学习文档入门
  5. Android最新手机号正则判断(含最新166/198/199开头的手机号)
  6. 基于云开发的智慧校园小程序的设计与实现
  7. python毕业设计作品基于django框架 教室实验室预约系统毕设成品(6)开题答辩PPT
  8. 互联网行业人才的四大特点:不具备这些素质,如何能改变世界?
  9. 文档在线预览:总体思路
  10. 如何设置 OctaneRender 渲染软件离线模式的加密狗?丨使用教程丨软件安装教程丨正版(非破解版)