公司希望能够搭建自己的日志分析系统。现在基于ELK的技术分析日志的公司越来越多,在此也记录一下我利用ELK搭建的日志分析系统。

系统搭建

系统主要是基于elasticsearch+logstash+filebeat+kibana+nginx,其实我这个用的还是比较多的,可以直接用logstash直接去采集日志。不过由于logstash的性能影响都比较大,而且filebeat安装很方便,而且占用资源很小,所以现在filebeat现在被广泛应用于日志采集。

其实在搭这个系统还是比较麻烦的,可是前面有的踩过的坑当时没有及时记录下来,有点忘记了。但是里面就是配置logstash和filebeat配置证书的时候有点麻烦,配置不好会一直没有办法连通。还要注意ES的索引占得空间,其实ES索引还蛮占空间的。

Logstash

Logstash其实在整个ELK中环节还蛮重要的,其实可以理解为一个“中间人”的角色。它通过从filebeat中接受数据,然后进行过滤,最后再传输给es。所以一般logstash的配置也包括input,output以及filter的配置。

filter

logstash中的filter比较重要,可以对日志利用正则进行过滤,这样你可以更关心日志中你需要关注的字段。强烈建议去grokdebugger去调试你的grok正则表达式,但是国内访问速度比较慢,可以采取一定手段访问。上面还有grok内置的一些常用正则表达式,可以配合试用调试。

geoip

日志分析中往往涉及到ip归属地的查询。logstash自带的geoip插件已经自带了数据库,可以下载最新的数据库。同时,geoip里面包含了很多信息,你可以进行过滤,只选择自己想要的字段:

geoip {
fields => ["city_name", "country_name"]
}

日志分析

邮箱日志的格式是IIS的日至格式,日志是由空格分割开的一些字段信息。主要的字段包含以下这些字段信息:

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken

针对这个日志,我利用grok去解析这些字段的信息,自定义的正则规则是:

DATE_CH   \d+[/-]\d+[/-]\d+

OUTER_EMAIL %{DATE_CH:date} %{TIME:time} %{IP:serverIp} %{WORD:method} %{URIPATH:uristem} %{PARAM:query} %{INT:port} %{NOTSPACE:username} %{IP:clientIp} %{NOTSPACE:ua} %{INT:status} %{INT:substatus} %{INT:win32status} %{INT:timetaken}

通过grok我们可以获取这些字段,但如何在这些字段中挖掘有用的信息呢?这里面比较有价值的信息就是用户的登录时间,登录客户端,以及登录的ip。通过之前的 geoip 的配置,我们可以获取到ip对应的地址信息。登录时间由于很多邮件客户端在后台会去同步或者去登陆,所以参考意义不是特别的大。

后续对于日志如何进行分析,我目前还没有特别好的思路,希望有着方面经验的小伙伴可以一起交流。

基于ELK进行邮箱访问日志的分析的更多相关文章

  1. 用ELK搭建简单的日志收集分析系统【转】

    缘起 在微服务开发过程中,一般都会利用多台服务器做分布式部署,如何能够把分散在各个服务器中的日志归集起来做分析处理,是一个微服务服务需要考虑的一个因素. 搭建一个日志系统 搭建一个日志系统需要考虑一下 ...

  2. 一、基于hadoop的nginx访问日志分析---解析日志篇

    前一阵子,搭建了ELK日志分析平台,用着挺爽的,再也不用给开发拉各种日志,节省了很多时间. 这篇博文是介绍用python代码实现日志分析的,用MRJob实现hadoop上的mapreduce,可以直接 ...

  3. 四、基于hadoop的nginx访问日志分析---top 10 request

    代码: # cat top_10_request.py #!/usr/bin/env python # coding=utf-8 from mrjob.job import MRJob from mr ...

  4. tomcat和springboot访问日志及分析

    1.Tomcat设置访问日志 <Host name="localhost" appBase="webapps" unpackWARs="true ...

  5. 二、基于hadoop的nginx访问日志分析---计算日pv

    代码: # pv_day.py#!/usr/bin/env python # coding=utf-8 from mrjob.job import MRJob from nginx_accesslog ...

  6. 五、基于hadoop的nginx访问日志分析--userAgent和spider

    useragent: 代码(不包含蜘蛛): # cat top_10_useragent.py #!/usr/bin/env python # coding=utf-8 from mrjob.job ...

  7. 三、基于hadoop的nginx访问日志分析--计算时刻pv

    代码: # cat pv_hour.py #!/usr/bin/env python # coding=utf-8 from mrjob.job import MRJob from nginx_acc ...

  8. 基于logstash+elasticsearch+kibana的日志收集分析方案(Windows)

    一 方案背景     通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.开源实时日志分析ELK平台能够完美的 ...

  9. ELK收集tomcat访问日志并存取mysql数据库案例

    这个案例中,tomcat产生的日志由filebeat收集,然后存取到redis中,再由logstash进行过滤清洗等操作,最后由elasticsearch存储索引并由kibana进行展示. 1.配置t ...

随机推荐

  1. java中的浅拷贝和深拷贝

    复制 将一个对象的引用复制给另一个对象,一共有三种方式.第一种方式是直接赋值,第二种方式是浅复制,第三种方式是深复制. 1.直接赋值 在Java中,A a1 = a2,这实际上复制的是引用,也就是说 ...

  2. jodd cache实现缓存超时

    public class JoddCache { private static final int CACHE_SIZE = 2; private final static Cache<Obje ...

  3. 根据linux自带的JDK,配置JAVA_HOME目录

    在配置hadoop是,进行格式化hadoop的时候,出现找不到jdk 我用centos6.5是64位的, 发现本机有java ,就找了一下其位置 找到了jdk-1.7.0_75 which java ...

  4. 一个时序图描述从用户在浏览器地址栏输入url并按回车,到浏览器显示相关内容的各个过程

    其实考察的就是一次HTTP请求所经过的过程和Spring或者SpringMVC怎么调用dispatcherServlet的过程

  5. TiDB官方文档

    TiDB官方文档: https://github.com/pingcap/docs-cn TiDB 整体架构 TiDB 集群主要包括三个核心组件:TiDB Server,PD Server 和 TiK ...

  6. python蒙特卡洛脚本模拟—挑战者号爆炸概率

     python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  7. 1、maven的下载,安装,配置

    下载 1.maven官方下载地址: http://maven.apache.org/download.cgi 进入官网: 下载各历史版本官方地址: https://archive.apache.org ...

  8. 【MAC】 命令行解压缩 rar 文件

    使用Mac解压rar文件很简单,总共分2步.step1:安装解压工具,step2:解压 1.使用Homebrew安装unrar brew install unrar 2.cd到rar文件的目录下,然后 ...

  9. C# WinForm 添加Windows Media Player 控件调试出现未能加载文件或程序集Interop.WMPLib,该怎么解决

    C# WinForm 添加Windows Media Player 控件调试出现未能加载文件或程序集Interop.WMPLib如标题,在窗体中添加Windows Media Player 控件,当调 ...

  10. JavaScript对象的常用属性及使用

    什么是浏览器对象模型? 浏览器对象模型(BOM Browser Object Model)是JavaScript的组成之一,它提供了独立于内容和浏览器窗口进行交互的对象,使用浏览器对象模型可以实现与H ...