精华内容
下载资源
问答
  • # -*- coding: utf-8 -*"""# 1.统计访问状态码和状态码数量;# 2.统计访问IP地址和数量,查看是否有刷机用户;# 3....# 4.使用方法为:python ck_log.py 2017-01-12 (后面的时间根据需要手动设置)"""import osimport ...

    # -*- coding: utf-8 -*

    """

    # 1.统计访问状态码和状态码数量;

    # 2.统计访问IP地址和数量,查看是否有刷机用户;

    # 3.将结果输出保存到outlog里面;

    # 4.使用方法为:python ck_log.py 2017-01-12 (后面的时间根据需要手动设置)

    """

    import os

    import sys

    import glob

    import re

    class Cklog():

    def __init__(self,time):

    self.time=time

    def func1(self):

    outlog=open('outlog','w')

    outlog.write('----------reslut------------\n')

    filename='localhost_access_log.'+self.time+'.txt'

    try:

    file=open(filename,'r')

    ret=[]

    ips=[]

    while 1:

    files=file.readline()

    if not files:

    break

    data=files.split(' ')

    datas=data[8]

    ip=data[0]

    ret.append(datas)

    ips.append(ip)

    f=set(ret)

    p=set(ips)

    for i in f:

    codes=ret.count(str(i))

    codess={i:codes}

    outlog.write('%s' %(codess))

    for m in p:

    ipnum=ips.count(str(m))

    ipuums={m:ipnum}

    outlog.write('\n%s' %(ipuums))

    finally:

    file.close()

    if __name__=='__main__':

    time=sys.argv[1]

    m=Cklog(time)

    m.func1()

    展开全文
  • 一、前言随着每天业务的增长,Tomcat 的catalina.out日志 变得越来越大,占用磁盘空间不说。要查看某个时候的日志的时候,庞大的日志让你顿时无从下手,所以日志的切割的变得刻不容缓。而且,切割后的日志,还可以...

    一、前言

    随着每天业务的增长,Tomcat 的catalina.out日志 变得越来越大,占用磁盘空间不说。要查看某个时候的日志的时候,庞大的日志让你顿时无从下手,所以日志的切割的变得刻不容缓。而且,切割后的日志,还可以定期清理掉久远的日志......

    二、Tomcat 日志分割

    我们采用日期形式切割catalina.out 日志,因此采用cronlog 软件切割:

    1、安装 cronlog

    yum install -y cronolog httpd

    2、修改bin/catalina.sh文件

    (1)if [ -z "$CATALINA_OUT" ] ; then

    CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out

    fi

    改为:

    if [ -z "$CATALINA_OUT" ] ; then

    CATALINA_OUT="$CATALINA_BASE"/logs/%Y-%m-%d.catalina.out

    fi

    (2)touch "$CATALINA_OUT"

    改为:

    #touch "$CATALINA_OUT"

    (3)org.apache.catalina.startup.Bootstrap "$@" start \

    >> "$CATALINA_OUT" 2>&1 "&"

    改为:

    org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \

    | /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null&

    备注:这里有两处这个样子的,似乎改下面那处就可以了,我是把两处都改了...

    0b0385fcbda9e0f0210b5f263fd066ed.png

    3、重启服务即可。

    86d1568164e33c3c886d35e405d70ad8.png

    tips:不能再用原来的catalina.out 来输出日志了哦,因为刚刚不是被我们注释掉了...

    9b246839788a7a65e9bc9db9c272031e.png

    三、定时清理日志

    想要写一个Shell脚本,定期清理掉久远的日志文件 ,避免磁盘不断被占用。

    1、创建Shell 脚本:

    touch auto_del_log.sh

    chmod +x auto_del_log.sh

    95e814e2489137343d4e09aeaa498980.gif

    #!/bin/sh

    find /usr/local/fz_regulator/logs/ -mtime +60 -name "*.out" -exec rm -rf {} \;find /usr/local/fz_middlekey/logs/ -mtime +60 -name "*.out" -exec rm -rf {} \;

    View Cod

    find:linux的查找命令,用户查找指定条件的文件;

    /usr/local/fz_middlekey/logs/:想要进行清理的任意目录;

    -mtime:标准语句写法;

    +60:查找60天前的文件,这里用数字代表天数;

    "*.out":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;

    -exec:固定写法;

    rm -rf:强制删除文件,包括目录;

    {} \; :固定写法,一对大括号+空格+\+;

    2、安装定时器 crontabs

    yum install crontabs

    /sbin/service crond start //启动服务

    3、加入定时任务

    crontab -e //编辑当前用户的crontab文件,可指定具体的用户

    加入我们的定时任务(表示每天4点10分跑一次脚本):10 4 * * * /usr/local/auto_del_log.sh >/dev/null 2>&1

    更多Tomcat相关教程见以下内容:

    Tomcat 的详细介绍:请点这里

    Tomcat 的下载地址:请点这里

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • tomcat访问日志分析

    2021-02-28 10:15:46
    常使用web服务器的朋友大都了解,一般的web server有两部分日志:一是运行中的日志,它主要记录运行的一些信息,尤其...首先是配置tomcat访问日志数据,默认情况下访问日志没有打开,配置的方式如下:编辑 ${catalin...

    常使用web服务器的朋友大都了解,一般的web server有两部分日志:

    一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息

    二是访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。

    现在我来和大家介绍一下利用tomcat产生的访问日志数据,我们能做哪些有效的分析数据?

    首先是配置tomcat访问日志数据,默认情况下访问日志没有打开,配置的方式如下:

    编辑 ${catalina}/conf/server.xml 文件.

    (注: ${catalina}是tomcat的安装目录,把以下的注释()去掉即可。)

    其中 directory是产生的目录 tomcat安装${catalina}作为当前目录,pattern表示日志生产的格式,common是tomcat提供的一个标准设置格式。

    其具体的表达式为 %h %l %u %t "%r" %s %b

    但本人建议采用以下具体的配置,因为标准配置有一些重要的日志数据无法生。

    %h %l %u %t "%r" %s %b %T

    具体的日志产生样式说明如下(从官方文档中摘录):

    %a - Remote IP address

    %A - Local IP address

    %b - Bytes sent, excluding HTTP headers, or '-' if zero

    %B - Bytes sent, excluding HTTP headers

    %h - Remote host name (or IP address if resolveHosts is false)

    %H - Request protocol

    %l - Remote logical username from identd (always returns '-')

    %m - Request method (GET, POST, etc.)

    %p - Local port on which this request was received

    %q - Query string (prepended with a '?' if it exists)

    %r - First line of the request (method and request URI)

    %s - HTTP status code of the response

    %S - User session ID

    %t - Date and time, in Common Log Format

    %u - Remote user that was authenticated (if any), else '-'

    %U - Requested URL path

    %v - Local server name

    %D - Time taken to process the request, in millis

    %T - Time taken to process the request, in seconds

    There is also support to write information from the cookie, incoming header, the Session or something else in the ServletRequest. It is modeled after the apache syntax:

    %{xxx}i for incoming headers

    %{xxx}c for a specific cookie

    %{xxx}r xxx is an attribute in the ServletRequest

    %{xxx}s xxx is an attribute in the HttpSession

    现在我们回头再来看一下下面这个配置 %h %l %u %t "%r" %s %b %T 生产的访问日志数据,我们可以做哪些事?

    先看一下,我们能得到的数据有:

    %h 访问的用户IP地址

    %l 访问逻辑用户名,通常返回'-'

    %u 访问验证用户名,通常返回'-'

    %t 访问日时

    %r 访问的方式(post或者是get),访问的资源和使用的http协议版本

    %s 访问返回的http状态

    %b 访问资源返回的流量

    %T 访问所使用的时间

    有了这些数据,我们可以根据时间段做以下的分析处理(图片使用jfreechart工具动态生成):

    独立IP数统计

    访问请求数统计

    访问资料文件数统计

    访问流量统计

    访问处理响应时间统计

    统计所有404错误页面

    统计所有500错误的页面

    统计访问最频繁页面

    统计访问处理时间最久页面

    统计并发访问频率最高的页面

    分析工具包括两大部分:

    第一个是后台解释程序,每天执行一次对后台日志数据进行解析后保存到数据库中。

    第二个是显示程序,从数据库中查询数据并生成相应的图表信息。

    展开全文
  • 大家在做分布式web系统的时候,比如那么多个tomcat,每天都会产生很多的日志(虽然已经按小时进行日志拆分了,但日志内容还是很大,vim查日志的时候很慢),而且那么多个tomcat,每个tomcat都要去查询,这样日志查询会...

    大家在做分布式web系统的时候,比如那么多个tomcat,每天都会产生很多的日志(虽然已经按小时进行日志拆分了,但日志内容还是很大,vim查日志的时候很慢),而且那么多个tomcat,每个tomcat都要去查询,这样日志查询会很麻烦,效率很低,想请教大家是如何处理的呢?我赶脚这是个系统设计问题,不知道大家是用的什么架构和组件来解决这样的问题的?

    tail -f catalina.out 【单机简单万能好使,如果要特定条件直接加|grep **即可】

    搜索指定日期日志文件:

    sed -n '/^起始日期/,/^结束日期/p' 日志文件 > 新文件(输出文件)

    例如:查询2018-02-15这天的所有日志内容:

    sed -n '/^2018-02-15/,/^2018-02-16/p' catalina.out > catalina_20180215.out

    前提是catalina.out日志中的每行都是以日期格式开头的!

    二、Tomcat日志配置远程Syslog(现在升级是Rsyslog)采集

    第一步:初始化日志采集环境

    先确保系统中的/var/spool/rsyslog 目录已存在:

    mkdir -v /var/spool/rsyslog

    if [ "$(grep Ubuntu /etc/issue)" != "" ]; then

    chown -R syslog:adm /var/spool/rsyslog

    fi

    第二步:创建Tomcat日志文件采集配置

    新建Rsyslog的子配置文件,他通常在/etc/rsyslog.d下,需要/etc/rsyslog.conf去包含这个目录下的子配置文件:

    vim /etc/rsyslog.d/tomcat-biglog.conf

    复制以下内容到tomcat-biglog.conf,注意注释部分的修改:

    $ModLoad imfile

    $InputFilePollInterval 10

    $WorkDirectory /var/spool/rsyslog

    $PrivDropToGroup adm

    ## 指定日志格式模板:

    $template BiglogFormatTomcat,"%msg%\n"

    ## Tomcat的catalina.log路径,根据实际情况修改:

    $InputFileName /var/log/tomcat6/catalina.log

    $InputFileTag catalina-log

    $InputFileStateFile stat-catalina-log

    $InputFileSeverity info

    $InputFilePersistStateInterval 25000

    $InputRunFileMonitor

    ## Tomcat的catalina.out路径,根据实际情况修改:

    $InputFileName /var/log/tomcat6/catalina.out

    $InputFileTag catalina-out

    $InputFileStateFile stat-catalina-out

    $InputFileSeverity info

    $InputFilePersistStateInterval 25000

    $InputRunFileMonitor

    ## Tomcat的host-manager.log路径,根据实际情况修改:

    $InputFileName /var/log/tomcat6/host-manager.log

    $InputFileTag host-manager

    $InputFileStateFile stat-host-manager

    $InputFileSeverity info

    $InputFilePersistStateInterval 25000

    $InputRunFileMonitor

    ## Tomcat的initd.log路径,根据实际情况修改:

    $InputFileName /var/log/tomcat6/initd.log

    $InputFileTag initd

    $InputFileStateFile stat-initd

    $InputFileSeverity info

    $InputFilePersistStateInterval 25000

    $InputRunFileMonitor

    ## Tomcat的localhost.log路径,根据实际情况修改:

    $InputFileName /var/log/tomcat6/localhost.log

    $InputFileTag localhost-log

    $InputFileStateFile stat-localhost-log

    $InputFileSeverity info

    $InputFilePersistStateInterval 25000

    $InputRunFileMonitor

    ## Tomcat的manager.log路径,根据实际情况修改:

    $InputFileName /var/log/tomcat6/manager.log

    $InputFileTag manager

    $InputFileStateFile stat-manager

    $InputFileSeverity info

    $InputFilePersistStateInterval 25000

    $InputRunFileMonitor

    ## 注意syslog日志服务器接收地址,根据实际情况修改:

    if $programname == 'catalina-log' then @10.x.x.x:514;BiglogFormatTomcat

    if $programname == 'catalina-log' then ~

    if $programname == 'catalina-out' then @10.x.x.x:514;BiglogFormatTomcat

    if $programname == 'catalina-out' then ~

    if $programname == 'host-manager' then @10.x.x.x:514;BiglogFormatTomcat

    if $programname == 'host-manager' then ~

    if $programname == 'initd' then @10.x.x.x:514;BiglogFormatTomcat

    if $programname == 'initd' then ~

    if $programname == 'localhost-log' then @10.x.x.x:514;BiglogFormatTomcat

    if $programname == 'localhost-log' then ~

    if $programname == 'manager' then @10.x.x.x:514;BiglogFormatTomcat

    if $programname == 'manager' then ~

    注:通过Rsyslog配置日志接收端的时候,如上示例@10.x.x.x:514,用于指定接收日志的服务器的协议、IP地址和端口号。使用@代表走UDP协议,使用@@代表走TCP协议,冒号后面的514代表接收端口。

    第三步:重启Rsyslog服务,日志采集开始工作

    service rsyslog restart

    此时可以通过观察系统中的Rsyslog日志,确定是否正常工作。

    cat /var/log/messages |grep rsyslog

    三、使用ELK等开源软件进行对tomcat的日志采集

    开源实时日志分析 ELK 平台能够完美的解决我们上述的问题, ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三个开源工具组成,本文档详细的介绍了ELK软件安装步骤以及tomcat日志收集

    ELK+Redis 收集tomcat日志文件

    Kibana 使用与Tomcat、Nginx 日志格式处理-https://www.cnblogs.com/zhang-shijie/p/5384624.html

    可以采用flume + kafka + storm (Hadoop)来做日志实时监控或者分析

    四、借助于tomcat日志分析工具或者软件

    例如awstats和日志易等  Java程序员须知的七个日志管理工具 - ImportNew http://www.importnew.com/12383.html

    五、自己定期研发开发适合自己需求的tomcat日志分

    如何把Tomcat的日志实时输出到Web页面上

    最近做了一个Web版的自动发布系统。实现了一个把Tomcat的catlina.out日志输出到Web页面的功能,做出来后,生活美好了一点。码农们不会再为了看日志来烦我了,以后有时间了准备扩展一下,把日志统一收集,过滤,让码农自己玩去,哈哈。作为一个运维狗,自动化一切,然后就有更多时间……了。省略号内容自行脑补。

    先看效果

    在部署状态页面点击查看日志,将会打开日志页面,下个图就是日志的输出页面。

    86bc1955ea4aefe3a641be071dc625f5.png

    简约时尚小清新的日志页面出来了,是不是很想一个terminal,有没有觉得俺弄的页面很漂亮。哈哈哈哈,写不好前端的运维不是好DBA。

    3c113c8393b8ebcb39aa11fa1539c52a.png

    刚开始拿到这个需求,咋觉得很难。因为在服务器上我们看一个日志,经常会tail -f 看着刷屏的感觉倍爽。如何在web页面上实现tailf的效果呢?

    后来想想这样实现是可行的。前端写一个js定时器,不断的发ajax请求到后台,每回取出一段日志。后台取日志可以直接调用系统命令,或者直接调取shell脚本,取日志,判断日志文件是否存在,是否为空,返回数据的起始位置等,都可以交给shell来做。事实上我就是这么干的。后台程序写一堆shell命令调用有点别扭。想到解决方案之后,实现的过程就比较简单了。我的开发环境是基于python的Django框架来做的,现在就展示这个功能的实现过程。

    Django部分

    点击查看日志的链接之后会调到views里的ajxGetLog方法,该方法需要两个参数,项目id和主机id,这两个参数主要是用来确定日志文件的位置。该方法返回行号。

    execcommand是封装的一个subprocess.Popen的一个工具函数,返回一个列表分别是标准输出,错误输出和shell returncode

    def ajxGetLog(request,pid,hid):

    project = Project.objects.get(pk=pid)

    host = Host.objects.get(pk=hid)

    scriptname = '%s%s'%(base_path,'get_log.sh')

    res = execcommand(['sh',scriptname,host.hostname,project.servicename])

    #如果错误输出不为空,直接返回错误输出

    if not res[1]:

    try:

    #res[0]为行号,如果大于20行,从当前行的上面20行开始输出,为了用户体验,你懂得

    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

    return HttpResponse(e)

    else:

    return HttpResponse(res[1])

    html部分首席写一个ajax请求,传递到后台取日志内容的方法,传递三个参数项目id,主机id,和行号,后台将会返回对应行号的日志内容。该方法代码如下:

    def ajxGetLogHandle(request,pid,hid,line):

    project = Project.objects.get(pk=pid)

    host = Host.objects.get(pk=hid)

    scriptname = '%s%s'%(base_path,'get_log.sh')

    res = execcommand(['sh',scriptname,host.hostname,project.servicename,line])

    if not res[1] and res[0].strip():

    return HttpResponse(res[0])

    else:

    return HttpResponse(500)

    Shell部分

    实现返回行号和返回日志内容的功能是一个shell脚本,上shell

    看到shell 是不是很亲切,现在知道传递的两个参数的作用了吧,host 和 项目id就是为了确定日志文件的路径,如果命令行参数没有传递行号就返回行号,如果有行号,就返回该行内容。

    #!/bin/bash

    set -e

    HOST=$1

    SERVICENAME=$2

    LINENUM=$3

    LOGFILE="/opt/$SERVICENAME/logs/catalina.out"

    if [ $LINENUM ];then

    ssh -A -T root@$HOST "sed -n ${LINENUM}p $LOGFILE"

    else

    ssh -A -T root@$HOST "wc -l $LOGFILE|awk '{print \$1}'"

    fi

    前端部分

    这部分就是ajax请求了,取出日志内容,动态添加到页面上,唯一的一个坑是,setInterval,我原来写的是一个while的死循环,在循环体里日志取到最后一行的时候break。我擦,逻辑上很流畅有没有,死活没效果,死活不工作。后来知道了,while搞的太快,不等后台返回,就走到下一次循环了。要不while里面来个sleep。要不弄个定时器,后来上了一个定时器,爽歪歪!

    html,body{background:#000; color:#090;}

    {% load staticfiles %}

    function myalert(){

    alert("服务器提出了一个问题,请找运维寻求答案!")

    }

    $(function(){

    var line = {{line}}

    var pid = {{pid}}

    var hid = {{hid}}

    $.ajax({

    url: "{% url 'autodeploy:ajx_handle_log' pid=pid hid=hid line=line %}",

    type: 'GET',

    success: function(data){

    if(data != 500){

    $('#log').append('

    '+data+'

    ');

    var t  = setInterval(function(){

    line++

    var url = "http://"+location.host + '/autodeploy/ajxloghandle/'+pid + '&' + hid + '&' +line

    $.ajax({

    url: url,

    type: 'GET',

    success: function(data){

    if(data != 500){

    $('#log').append('

    '+data+'

    ');

    window.scrollTo(0,document.body.scrollHeight);

    }else{

    clearInterval(t);

    }

    },

    error: function(data) {

    myalert();

    return false;

    }

    });

    },200);

    }else{

    myalert();

    }

    },

    error: function(data) {

    myalert();

    return false;

    }

    });

    });

    【补充知识】linux日志文件及日志分析

    1、linux日志简介

    Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。

    大部分Linux发行版默认的日志守护进程为 syslog(后续升级rsyslog),位于 /etc/syslog 或 /etc/syslogd,默认配置文件为 /etc/syslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息。

    Linux系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到日志文件中去。完成这个过程的程序就是syslog。syslog可以根据日志的类别和优先级将日志保存到不同的文件中。例如,为了方便查阅,可以把内核信息与其他信息分开,单独保存到一个独立的日志文件中。默认配置下,日志文件通常都保存在“/var/log”目录下。

    2、日志类型

    下面是常见的日志类型,但并不是所有的Linux发行版都包含这些类型:

    类型

    说明

    auth

    用户认证时产生的日志,如login命令、su命令。

    authpriv

    与 auth 类似,但是只能被特定用户查看。

    console

    针对系统控制台的消息。

    cron

    系统定期执行计划任务时产生的日志。

    daemon

    某些守护进程产生的日志。

    ftp

    FTP服务。

    kern

    系统内核消息。

    local0.local7

    由自定义程序使用。

    lpr

    与打印机活动有关。

    mail

    邮件日志。

    mark

    产生时间戳。系统每隔一段时间向日志文件中输出当前时间,每行的格式类似于 May 26 11:17:09 rs2 -- MARK --,可以由此推断系统发生故障的大概时间。

    news

    网络新闻传输协议(nntp)产生的消息。

    ntp

    网络时间协议(ntp)产生的消息。

    user

    用户进程。

    uucp

    UUCP子系统

    3、常见日志文件

    所有的系统应用都会在/var/log 目录下创建日志文件,或创建子目录再创建日志文件。如:

    我们可以粗略的分为两类日志:系统日志和应用日志,系统日志主要存放系统内置程序或系统内核之类的日志信息如alternatives.log 、btmp等,应用日志主要是安装的第三方应用产生的日志如tomcat7 、apache2等。

    文件目录/日志名称

    记录信息

    /var/log/alternatives.log

    系统的一些更新替代信息记录,如系统软件包升级更新,记录了程序作用,日期,命令,成功与否的返回码

    /var/log/apport.log

    应用程序崩溃信息记录,暂时这方面日志信息

    /var/log/apt/history.log

    使用apt-get安装卸载软件的信息记录,包含时间、安装命令、版本信息、结束时间等

    /var/log/apt/term.log

    使用apt-get时的具体操作,如 package 的下载打开等

    /var/log/auth.log

    登录认证的信息记录,包含:日期与 ip 地址的来源以及登陆的用户与工具

    /var/log/boot.log

    系统启动时的程序服务的日志信息

    /var/log/btmp

    错误登陆的信息记录

    /var/log/Consolekit/history

    控制台的信息记录

    /var/log/dist-upgrade

    dist-upgrade这种更新方式的信息记录

    /var/log/dmesg

    启动时,显示屏幕上内核缓冲信息,与硬件有关的信息

    /var/log/dpkg.log

    dpkg命令管理包的日志。

    /var/log/faillog

    用户登录失败详细信息记录

    /var/log/fontconfig.log

    与字体配置有关的信息记录

    /var/log/kern.log

    内核产生的信息记录,在自己修改内核时有很大帮助

    /var/log/lastlog

    用户的最近信息记录

    /var/log/wtmp

    登录信息的记录。wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等

    /var/log/syslog

    系统信息记录

    Tomcat访问日志分析方法

    常使用web服务器的朋友大都了解,一般的web server有两部分日志:一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息二是访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。现在我来和大家介绍一下利用tomcat产生的访问日志数据,我们能做哪些有效的分析数据?首先是配置tomcat访问日志数据,默认情况下访问日志没有打开,配置的方式如下:编辑 ${catalina}/conf/server.xml文件.注:${catalina}是tomcat的安装目录把以下的注释()去掉即可。其中 directory是产生的目录 tomcat安装${catalina}作为当前目录pattern表示日志生产的格式,common是tomcat提供的一个标准设置格式。其具体的表达式为 %h %l %u %t "%r" %s %b但本人建议采用以下具体的配置,因为标准配置有一些重要的日志数据无法生。%h %l %u %t "%r" %s %b %T具体的日志产生样式说明如下(从官方文档中摘录):* %a - Remote IP address* %A - Local IP address* %b - Bytes sent, excluding HTTP headers, or '-' if zero* %B - Bytes sent, excluding HTTP headers* %h - Remote host name (or IP address if resolveHosts is false)* %H - Request protocol* %l - Remote logical username from identd (always returns '-')* %m - Request method (GET, POST, etc.)* %p - Local port on which this request was received* %q - Query string (prepended with a '?' if it exists)* %r - First line of the request (method and request URI)* %s - HTTP status code of the response* %S - User session ID* %t - Date and time, in Common Log Format* %u - Remote user that was authenticated (if any), else '-'* %U - Requested URL path* %v - Local server name* %D - Time taken to process the request, in millis* %T - Time taken to process the request, in secondsThere is also support to write information from the cookie, incoming header, the Session or something else in the ServletRequest. It is modeled after the apache syntax:* %{xxx}i for incoming headers* %{xxx}c for a specific cookie* %{xxx}r xxx is an attribute in the ServletRequest* %{xxx}s xxx is an attribute in the HttpSession现在我们回头再来看一下下面这个配置 %h %l %u %t "%r" %s %b %T 生产的访问日志数据,我们可以做哪些事?先看一下,我们能得到的数据有:* %h 访问的用户IP地址* %l 访问逻辑用户名,通常返回'-'* %u 访问验证用户名,通常返回'-'* %t 访问日时* %r 访问的方式(post或者是get),访问的资源和使用的http协议版本* %s 访问返回的http状态* %b 访问资源返回的流量* %T 访问所使用的时间有了这些数据,我们可以根据时间段做以下的分析处理(图片使用jfreechart工具动态生成):* 独立IP数统计* 访问请求数统计* 访问资料文件数统计* 访问流量统计* 访问处理响应时间统计* 统计所有404错误页面* 统计所有500错误的页面* 统计访问最频繁页面* 统计访问处理时间最久页面* 统计并发访问频率最高的页面

    fbd196f316482a5797f95cd8bbe538da.png

    e28f3125f35b02dddd89eeb228891150.png

    e4e543687f58724749419a7a544eeb66.png

    143403f23804e347377d3f89620398ef.png

    bd206ccff1bfe0d1e860891796333ed4.png

    08d3b68463057c94fcdd5c4fa1f40391.png

    fea19012decbe5413ee6f4289c44705f.png

    b565e99bd82cc334358e9f7df85c1474.png

    42ae7ef9427035272720b78110b43898.png

    d54a65f5994f2f669d5ddcfc1c103e08.png

    bc89535ad3be6f94b4291a8a95fa73bf.png

    dcef7b4fc13d65cb54ef596338e851e5.png

    09fe058784695470ce252caaec142f98.png分析工具包括两大部分,一个是后台解释程序,每天执行一次对后台日志数据进行解析后保存到数据库中。

    第二个是显示程序,从数据库中查询数据并生成相应的图表信息。

    ~~~好了,码字很累,今天就到这里。欢迎各位网友吐槽。说不定还有更好的解决方案。

    展开全文
  • 6、httpd日志内容与格式分析 7、通过filebeat、logstash与Kibana收集httpd日志 8、tomcat日志内容与格式分析 9、通过filebeat、logstash与Kibana收集tomcat两种日志 10、如何通过logstash过滤日志信息实现zabbix监控...
  • filebeat收集json格式的tomcat日志 公司中常用的web程序一般都是nginx和tomcat,tomcat也有access访问日志,输出和nginx类似,我们也将tomcat的日志输出成json格式,在配合filebeat进行收集展示 1.部署tomcat 1.1....
  • 本文试图实现的需求场景为:以学习Spark知识点为目的,编写Scala利用Spark解析800M的tomcat日志文件,打印一段时间内ERROR级别记录的前10行,统计每分钟的日志记录数,并将统计结果存入mysql数据库中。之前曾用JAVA...
  • tomcat日志采集

    2021-03-10 06:50:01
    1、采集tomcat确实比之前的需求复杂很多,我在搭建了一个tomcat的环境,然后产生如下报错先贴出来:Jan 05, 2017 10:53:35 AM org.apache.catalina.core.AprLifecycleListener lifecycleEventINFO: The APR based ...
  • tomcat打印日志部分正常,部分乱码问题(彻底解决!)
  • 查看tomcat日志通常用 tail -n 或者 tail -f 或者grep 或者 vi cat等命令去查看异常信息,但是日志是在不停地刷屏,tail是动态的在变的,我们往往期望从日志最后一行往前一页一页的翻页查看,从而找到异常信息,而...
  • 情况描述:将项目打包好的war包取名为ROOT丢到Tomcat的webapps文件夹下(已经提前删除了Tomcat中自带的文件),理论上来说,Tomcat会自动解析ROOT包并为我们部署,但我在使用startup.sh命令后,项目并没有像我想想的...
  • Tomcat介绍1.1 关于服务器1.2 Tomcat下载与安装1.3 Tomcat各版本所需支持1.4 Tomcat目录结构详解2. Tomcat基本使用2.1 Tomcat启动和停止及问题分析解决1). 启动和停止2)启动问题2.2 IDEA集成Tomcat服务器2.3 Linux...
  • 二、接口乱码 在catalina.bat 头部增加 -Dfile.encoding=UTF-8 /bin/catalina.bat set JAVA_OPTS=-Xms512m -Xmx4024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8 三、tomcat本地日志乱码 这日志tomcat他自身...
  • 《史上最全Tomcat源码解析Tomcat启动过程 文章目录《史上最全Tomcat源码解析Tomcat启动过程前言一、启动过程二、使用步骤1.引入库2.读入数据总结 前言 在上一章对Tomcat的架构进行了分析,这一章,我们来看...
  • 常使用web服务器的朋友大都了解,一般的web server有两部分日志:一是运行中的日志,它主要记录运行的一些信息,尤其...首先是配置tomcat访问日志数据,默认情况下访问日志没有打开,配置的方式如下:编辑 ${catalin...
  • Tomcat源码解析

    2021-04-08 22:28:13
    我们知道如果要设计一个系统,首先是要了解需求,我们已经了解了Tomcat要实现两个 核心功能: 1) 处理Socket连接,负责网络字节流与Request和Response对象的转化。 2) 加载和管理Servlet,以及具体处理Request请求...
  • 动态解析容器之Tomcat

    2021-01-03 16:55:54
    一、引入 1、前端 ...2、后端 ...例如: JAVA语言是由sun公司开发出来的,它的开发环境是JDK,有两个版本,一...Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和开发访问用户不是
  • Tomcat安装和解析

    2020-12-19 09:54:17
    Tomcat服务 Tomcat 服务器是一个免费的开放...安装java JDK(java解析器) Tomcat 的运行依赖于java 所以要先安装java环境,所以Java语言环境是Tomcat运行的冲要条件 JDK一般指软件开发工具包。软件开发工具包一般都是
  • Tomcat概述

    2021-06-10 10:24:57
    (3)Tomcat处理请求过程(4)Tomcat中的连接器(5)Tomcat的目录(6)Tomcat常见日志三、部署Tomcat(1)实验环境(2)实验目的(3)实验步骤(4)扩展—安装mariadb数据库配置Tomcat的manager管理界面
  • Tomcat内部结构解析

    2021-05-10 05:19:58
    导读Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。Tomcat的组织结构Tomcat是一个基于组件的服务器,它的构成组件都是可配置的...
  • Tomcat 源码过程中,控制台日志打印的都是 INFO 级别的日志,于是就想修改下日志级别,打印 Digester 类的 DEBUG 级别的日志,便于观察 Digester 类解析 server.xml 的流程,顺便跟踪了一下 Tomcat 使用日志的流程,...
  • Tomcat目录解析 主目录解析 网络目录 配置文件 简单部署 JDK部署 Tomcat部署 搭建静态网页.html 虚拟机 虚拟机分为系统虚拟机与软件虚拟机 系统虚拟机: VisualBox、VMware,对物理机进行仿真,...
  • 之前在一个springboot项目中开启了access.log日志(参见spring boot打开tomcat的access日志),现在可以很方便的根据access日志统计时延。先看日志文件:  再看access.log里的8个字段: %h %l %u %t "%r" %s %b %D ...
  • Tomcat 架构原理解析到架构设计借鉴Tomcat 发展这么多年,已经比较成熟稳定。在如今『追新求快』的时代,Tomcat 作为 Java Web 开发必备的工具似乎变成了『熟悉的陌生...
  • ELK使用Grok解析日志

    2021-03-01 06:46:22
    一、简介Grok是迄今为止使蹩脚的、无结构的日志结构化和可查询的最好方式。Grok在解析 syslog logs、...二、入门例子下面是一条tomcat日志:83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] "GET /presentations/l...
  • 目录结构:tomcat/logs目录. 1.实时查看当前项目的运行日志,进入logs目录, <span style="color:#000000"><code>tail -f catalina.out </code></span> 1 扩展:( 退出 ) <span ...
  • spring cloud部署到tomcat中一直运行正常,突然有一天看到日志中出现cannot parse request body错误。 回想了一下自己最近的操作:对代码和配置

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,745
精华内容 18,298
关键字:

tomcat日志解析