应用日志获取-web系统
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系统的更多相关文章
- 中小型WEB系统权限日志数据表设计
中小型WEB系统权限日志数据表设计 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjc1MDU3OA==/font/5a6L5L2T/fontsi ...
- cmd下windows批处理,获取当前系统时间,生成日志文件名
示例: rdGetRTData_log%date:~0,4%%date:~5,2%%date:~8,2%.txt 生成格式: rdGetRTData_log20151103.txt 编写Windows ...
- 亿级Web系统搭建——单机到分布式集群
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
- 亿级Web系统搭建——单机到分布式集群[转]
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
- 【web】 亿级Web系统搭建——单机到分布式集群
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架 ...
- 很不错的文章---【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群
[导读]徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设. 大规模流量的网站架构,从来都是慢慢“成长”而来.而这 ...
- 徐汉彬:亿级Web系统搭建——单机到分布式集群(转载)
文章转载自http://www.csdn.net/article/2014-11-06/2822529/1 当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的 ...
- 徐汉彬:亿级Web系统搭建—单机到分布式集群
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
- [转]亿级Web系统搭建:单机到分布式集群
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
随机推荐
- ThinkPHP Widget模块开发流程
初识ThinkPHP的Widget,现把模块开发的流程发布如下,也方便以后自己查阅: 一.新建数据库表self_modules,sql代码如下 CREATE TABLE `self_modules` ...
- RabbitMQ的安装与客户端的简单实用
本文主要内容是RabbitMQ的安装步骤[Windows系统与linux上的安装]及客户端的简单使用. 1.下载 下载地址:http://www.rabbitmq.com/download.html ...
- POJ2115 C Looooops ——模线性方程(扩展gcd)
题目链接:http://poj.org/problem?id=2115 C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submi ...
- MySQL学习笔记(一)——数据库基础
自己上大学时也学习过数据库,做开发时也用到过,但是做界面开发对于数据库的使用相对来说是比较简单的,大学时系统学习的数据库也还给老师了,在测试工作中也只是用到了一些基础sql,增删改查这一类的,但是自己 ...
- 测试工程师面试题之:给你印象最深的Bug
有人看到别人在侵淫面试技巧,什么<程序员面试宝典>,或者<面试测试工程师须知>等等,就会嗤之以鼻.他会觉得这不是“投机取巧”吗,最重要的还是踏实提高自己的能力. 非常同意这种看 ...
- 常用的PHP类库,PHP开发者必备【转】
PHP开发者常用的PHP类库和组件 PDF 生成器 FPDF - 这量一个可以让你生成PDF的纯PHP类库. Excel 相关 你的站点需要生成Excel?没有问题,下面这两个类库可以让你轻松做到这一 ...
- typeof详解
typeof operator 返回了表示对象类型的字符串 下表列出了typeof可能的返回值. Type Result Undefined "undefined" Null &q ...
- Keras 可视化 model
参考:https://keras.io/visualization/ error解决参考:http://blog.csdn.net/wangjian1204/article/details/50346 ...
- mysql函数之八:mysql函数大全
对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NULL. mysql& ...
- Docker运行MongoDB及Redis及ssh端口映射远程连接
Docker运行MongoDB及Redis及ssh端口映射远程连接 本节内容简介 在本实验里我们将通过完成 MongoDB 和 Redis 两个容器来学习Dockerfile及Docker的运行机制. ...