公司希望能够搭建自己的日志分析系统。现在基于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. R-CNN常见问题

    可以不进行特定样本下的微调吗?可以直接采用AlexNet CNN网络的特征进行SVM训练吗? 不针对特定任务进行微调,而将CNN当成特征提取器,pool5层得到的特征是基础特征,类似于HOG.SIFT ...

  2. hihoCoder #1558 : H国的身份证号码I

    题目链接:https://hihocoder.com/problemset/problem/1558 H国的身份证号码I 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 ...

  3. CentOS7/RHEL7 pacemaker+corosync高可用集群搭建

     TOC \o "1-3" \h \z \u 一.集群信息... PAGEREF _Toc502099174 \h 4 08D0C9EA79F9BACE118C8200AA004B ...

  4. c++结构体、共用体和枚举

    结构体类型 c++中的结构体成员既可以是数据,也可以是函数 c语言中定义结构体变量必须加struct(这也是很多时候和typedef),但是在c++里面,可以不加 结构体和类的不同在于,结构体中的变量 ...

  5. 初识REST

    RESTful介绍: REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”. 1 ...

  6. Linux 下ThinkPHP项目出现_STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Admin/0dfec61edd66f450033aa87c28a760f4.php

    在Linux中部署了ThinkPHP项目,访问时却出现了_STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Admin/0dfec61edd66f450 ...

  7. PDF to PNG to PDF

    PDF to PNG to PDF PDF 2 PNG step 1, install PyMuPDF pip install pymupdf -i http://mirrors.aliyun.com ...

  8. Git-Runoob:Git 分支管理

    ylbtech-Git-Runoob:Git 分支管理 1.返回顶部 1. Git 分支管理 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同 ...

  9. Python基础(函数部分)

    写在前面 加勒比海盗今天上映! 一.函数的基本概念 - 函数是什么?  函数,就是一个'锤子',一个具有特定功能的'锤子',使用者可以在适当的时候使用这个'锤子',而不用再去从头做一个'锤子':即可以 ...

  10. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_8 Mybatis中的返回值深入-调整实体类属性解决增和改方法的报错

    如果实体类和数据库表内的字段没有保持一致 修改了属性子弹. 重新生成getter和setter还有toString方法 测试类里面,相关set的方法就都会报错. 只需要修改为最新的set方法就可以了. ...