如何收集服务器各类日志?进WIN2008服务器,点击开始,找到控制面板。点击进入控制面板,找到管理工具。找到管理工具,点击事件查看器。进入事件查看器,展开Windows日志,点击系统,右侧会显示出信息
如何收集服务器各类日志?
进WIN2008服务器,点击开始,找到控制面板。点击进入控制面板,找到管理工具。找到管理工具,点击事件查看器进入事件查看器,展(练:zhǎn)开Windows日志,点击(繁体:擊)系统,右侧会显示出信息。查看事件查看器的右方,我们会看到属性选项,红框中已经圈出。点击属性后,我们会看到服务器日志的路径
7打开C:WindowsSystem32winevt,再打开Logs文件夹,我们会看到服务(繁体:務)器日志。
如何通过web页面方式动态查看服务器日志信息?
回答在部署状态页面点击查看《读:kàn》日志,将会打开日志页(繁:頁)面【练:miàn】,下个图就是日志的输出页面。
简约时尚小清新的日志页面出来了,是不是很想一个terminal,有没(繁:沒)有觉得俺弄的页面很漂亮。哈哈哈(读:hā)哈,写不好前端的运维不是好DBA。
刚《繁体:剛》开始拿到这个需求,咋觉得很难。因为在服(读:fú)务器上我们看一个日志,经常会tail -f 看着刷屏的感觉倍爽。如何在web页面(繁体:麪)上实现tailf的效果呢?
后来想想这样实现是可行的。前端写一个娱乐城js定时器,不断的发ajax请求到后台,每回取出一段日志。后台(繁体:颱)取日志可以直接调用系统命令,或者直接调取shell脚本,取日志,判断日志文件是否存在,是否为空,返回数据的起始位置等,都可以交给shell来做
事实上我就【pinyin:jiù】是这么干的。后台程序写一堆shell命令(拼音:lìng)调用有点别(繁体:彆)扭。想到解决方案之后,实现的过程就比较简单了
我的开发环境【读:jìng】是基于python的Django框架来做的,现《繁:現》在就展示这个功能的实现[繁:現]过程。
Django部分
点击查看日志的链接之后会调到views里的ajxGetLog方法,该方法需要两个参数,项目id和主机id,这两个参数主要是用来确定日志文件的位置。该方法返回行号。
execcommand是封装的一个subprocess.Popen的一个工具函数,返回一个列liè 表分别是标准输出(繁体:齣),错误输[繁体:輸]出和shell returncode
def ajxGetLog(request,pid,hid):
host = Host.objects.get(pk=hid)
scriptname = "%s%s"%(base_path,"get_log.sh")
res = execcommand(["sh",scriptname,host.hostname,project.servicename])
#如果错误输出不(pinyin:bù)为空,直接返回错误输出
if not res[1]:
try:
#res[0]为行号,如果大于20行,从当前行的上面《繁体:麪》20行开始输出,为了{pinyin:le}用(pinyin:yòng)户体验,你懂得
if int(res[0]) > 20:
line = int(res[0]) - 20
if int(res[0]) == 0:
line = 1
return render(request,"logs.html",{"pid":pid,"hid":hid,"line":line})
except Exception,e:
print e
else:
return HttpResponse(res[1])
html部分首席[繁:蓆]写一个ajax请[繁体:請]求,传递到后台取qǔ 日志内容的方法,传递三个参数项目id,主机id,和行号,后台将会返回对应行号的日志内容。该方法代码如下:
def ajxGetLogHandle(request,pid,hid,line):
project = Project.objects.get(pk=pid)
scriptname = "%s%s"%(base_path,"get_log.sh")
res = execcommand(["sh",scriptname,host.hostname,project.servicename,line])
return HttpResponse(res[0])
else:
return HttpResponse(500)
本文链接:http://10.21taiyang.com/Health-Conditions/20920588.html
华为服务器日志收集命(拼音:mìng)令转载请注明出处来源