常见的java服务器日志分析

有时候在工作中,我们需要对日志进行处理,这里我对我碰到的一些进行总结

  • 提取数据
    首先可以打开日志,查看下结构
    image.png
    这里可以看到日志数据
    image.png
     我们一般需要拿到访问某个接口的uid,time,app版本,登录手机的平台等信息
    首先我们先定位接口的数据:
      格式这样:grep 查询的关键字 查询文件

    grep getArticleInfo ysz-gateway-2018_06_07-1.log
    

    image.png
     如图,我们拿到了所有这个接口的相关数据,
     我们这里需要提取这里的数据比如,我们要uid,这里我们需要管道处理
      解释下管道:我的理解大意是前边的结果作为参数传给后边处理,实际用多了,你们就体会到了,

    grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid
    

     获取到这个接口包含uid的行
    image.png

     如下图,我们要提取[]里的内容,这里处理方法很多,我一般用awk
    image.png

grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'

这里awk -F是截取,这里是以data:为分割,输出第二段内容
image.png
和一般的json还差点啥,应该是去掉[],我们这里还是用awk -F解决

grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'

然后就推荐使用jq插件了,yum install jq就可以安装了,
我们使用方法,比如要拿到uid,就这么写
继续管道后续

grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'|jq '.uid'

image.png

管道继续,有时候我们要去重,我们可以对uid排序,去重

grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'|jq '.uid'|wc -l  先看下行数

image.png

grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'|jq '.uid'|sort|uniq|wc -l

image.png
可以看到去重以后由145变成了92,
现在就拿到数据了,至于后边数据分析,我们后边会讲到