公司希望能够搭建自己的日志分析系统。现在基于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. ex1.c

  2. [CSP-S模拟测试]:异或(数学)

    题目描述 给定$L,R$,我们希望你求出:$$\sum\limits_{i=L}^R\sum\limits_{j=L}^R(i\oplus j)$$其中这里的$\oplus$表示异或运算.答案对$10 ...

  3. leetcode-mid-math-29. Divide Two Integers-NO

    mycode   91.28% class Solution(object): def divide(self, dividend, divisor): """ :typ ...

  4. Linux高级调试与优化——gdb调试命令

    番外 2019年7月26日至27日,公司邀请<软件调试>和<格蠹汇编——软件调试案例集锦>两本书的作者张银奎老师进行<Linux高级调试与优化>培训,有幸聆听张老师 ...

  5. MyRocks安装部署

    参考:https://www.cnblogs.com/WonderHow/p/5621591.html CentOS 7.3 gflags:git clone https://github.com/g ...

  6. Mybaits成长之路

    今天刚开始接触mybaits,接下来介绍mybaits的demo的建立 1根据数据库表定义一个实体类Employee package com.atguigu.mybatis.bean; public ...

  7. Linux_OpenSSH远程连接

    目录 目录 SSH server SSH服务属性 SSH协议执行原理 SSH连接方式 ssh Commands scp commands sftp commands SSH在生产环境中的使用 系统间备 ...

  8. nginx访问控制用户认证两种方式

    一.用户认证1.首先需要用http来生成密码文件即安装apache :yum install -y httpd 生成密码文件:htpasswd -c /usr/local/nginx/conf/htp ...

  9. 思维导图之kubernetes

    k8s docker

  10. 【SSH】---【Struts2、Hibernate5、Spring4】【散点知识】

    一.Struts21.1.Struts2的概念Struts2是一个用来开发MVC应用程序的框架,它提供了Web应用程序开发过程中的一些常见问题的解决方案:    ->对来自用户的输入数据进行合法 ...