1 场景

应用使开发写的,但应用使部署再服务器上,而开发没有ssh登陆服务器的权限。

so,开发总是请运维查日志,下载日志。

so and so,运维要花很多时间帮开发去搞日志。

这是件很没意义的事,所以必须kill

2 解决思路

首先想到的就是大名鼎鼎的ELK,试行了一段时间,结果暴毙。暴毙原因:

a  日志的目的是分析错误,所以info级别的日志没用,需要debug级别的,而业务体量大,导致日志很大,在网络传输、存储、ELK管理集群硬件成本上都是不小的负担。

b  ELK有过滤后再存储的功能,但前提是日志标准化的推进。标准化没有推,所以回到a问题

c 开发人员习惯用文本编辑器(notepad++等)查日志,觉得这个更好用。

所以换成web服务,用django做web框架,saltstack做远程命令执行,在web表格中提交相关日志信息的关键字,把对应服务器上的日志下载到本地。解决了关键问题:

让开发自己去下日志吧~~~

ssh登录线上服务器是不可能滴~~~

step1-基本框架

使用django自带的form模块,在web的form中,使用post提交指令,指向具体的服务器和日志信息

然后在服务端调用saltstack,到目标服务器上执行日志的压缩命令,并且把压缩文件复制到指定目录

在nginx中配置localtion,可以下载到这个文件

使用django自动去下载这个文件

views:

注:xx代表业务参数

from django.shortcuts import render,HttpResponse
from django.http import FileResponse
from .forms import AddForm
import subprocess # Create your views here.
def LogServer(request):
if request.method == 'POST':
form = AddForm(request.POST) if form.is_valid(): # 获取参数
server = form.cleaned_data['server']
subtype = form.cleaned_data['xx']
logpath = form.cleaned_data['logpath'] # 执行命令
zip_cmd = 'cd %s;zip a.zip `ls | grep ^xx%d`' %(logpath,xx)
upload_cmd = 'cp %s;cp a.zip /data/download/' %logpath
salt_cmd = "salt %s cmd.run '%s;%s'" %(server,zip_cmd,upload_cmd)
subprocess.Popen(salt_cmd,stdout=subprocess.PIPE, shell=True) #返回文件给客户端
file_dir = '%s/a.zip' %logpath
file = open(file_dir, 'rb')
response = FileResponse(file)
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = 'attachment;filename="a.zip"'
return response else:
form = AddForm()
return render(request, 'dosql.html', {'form': form})

  

step2-web端可选择应用

业务环境换到分布式上来,在单台服务器上,在web端可以下载指服务组件的日志

应用日志获取-web系统的更多相关文章

  1. 中小型WEB系统权限日志数据表设计

    中小型WEB系统权限日志数据表设计 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjc1MDU3OA==/font/5a6L5L2T/fontsi ...

  2. cmd下windows批处理,获取当前系统时间,生成日志文件名

    示例: rdGetRTData_log%date:~0,4%%date:~5,2%%date:~8,2%.txt 生成格式: rdGetRTData_log20151103.txt 编写Windows ...

  3. 亿级Web系统搭建——单机到分布式集群

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

  4. 亿级Web系统搭建——单机到分布式集群[转]

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

  5. 【web】 亿级Web系统搭建——单机到分布式集群

      当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架 ...

  6. 很不错的文章---【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群

    [导读]徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设. 大规模流量的网站架构,从来都是慢慢“成长”而来.而这 ...

  7. 徐汉彬:亿级Web系统搭建——单机到分布式集群(转载)

    文章转载自http://www.csdn.net/article/2014-11-06/2822529/1 当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的 ...

  8. 徐汉彬:亿级Web系统搭建—单机到分布式集群

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

  9. [转]亿级Web系统搭建:单机到分布式集群

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

随机推荐

  1. cygwin使用笔记

    1.在cygwin里访问Windows盘 cd /cygdrive/c cd c: 2.整合cygwin命令到Windows中 假设cygwin安装在d:/develop/cygwin,则将d:/de ...

  2. bfs 邻接表(需要优化 可能会RE *【模板】)

    //---基于邻接表的bfs #include <stdio.h> #include <string.h> #include <iostream> #include ...

  3. Nginx配置故障转移

    当上游服务器(真实访问服务器),一旦出现故障或者是没有及时相应的话,应该直接轮训到下一台服务器,保证服务器的高可用. 如果上游服务器的某一台宕机了,直接轮训到下一个~ 8080 8081 8082 关 ...

  4. mysql优化20条原则

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...

  5. 网络流量分析——NPMD关注IT运维、识别宕机和运行不佳进行性能优化。智能化分析是关键-主动发现业务运行异常。科来做APT相关的安全分析

    科来 做流量分析,同时也做了一些安全分析(偏APT)——参考其官网:http://www.colasoft.com.cn/cases-and-application/network-security- ...

  6. WebRTC GitHub repo developer's guide

    WebRTC GitHub repo developer's guide https://github.com/LingyuCoder/SkyRTC-demo  WebRTC GitHub repo ...

  7. flume 日志收集单节点

    flume 是 cloudera公司研发的日志收集系统,采用3层结构:1. agent层,用于直接收集日志;2.connect 层,用于接受日志; 3. 数据存储层,用于保存日志.由一到多个maste ...

  8. hdu-5748 Bellovin(LIS)

    题目链接: Bellovin Time Limit: 6000/3000 MS (Java/Others)     Memory Limit: 131072/131072 K (Java/Others ...

  9. hdu-5747 Aaronson(水题)

    题目链接: Aaronson Time Limit: 4000/2000 MS (Java/Others)     Memory Limit: 131072/131072 K (Java/Others ...

  10. Messes in Reading Source Coding of SSD

    这里记录在学习SSD源码过程中用到的相关内容 keras.applications.imagenet_utils.preprocess_input(): 用来将读入的原始图片张量转换成为需要Image ...