热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

对于ELK还不太熟悉的同学可以参考我前面的两篇文章ElasticSearch+Logstash+Kibana搭建笔记、Logstash学习笔记(一),本文搭建了一套专门访问Apac

对于ELK还不太熟悉的同学可以参考我前面的两篇文章ElasticSearch + Logstash + Kibana 搭建笔记、Log stash学习笔记(一),本文搭建了一套专门访问Apache的访问日志的ELK环境,能够实现访问日志的可视化分析。

数据源 Filebeat + Logstash

数据源对应Logstash中的Input部分,本文采用Filebeat来读取Apache日志提供给Logstash,Logstash进行日志解析输入到ES中进行存储。Filebeat的配置比较简单,参考文章Log stash学习笔记(一)。需要注意的是,如果Filebeat之前发送过数据,需要执行rm data/registry删除缓存数据,强制filebeat从原始数据重新读取数据。

重点来看Logstash的配置

input {
  beats {
    port => "5043"
  }
}
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
    target => ["datetime"]
  }
  geoip {
    source => "clientip"
  }
}
output {
  elasticsearch {
    hosts => "47.89.30.169:9200"
    index => "access_log"
  }
  stdout { codec => rubydebug }
}

本文使用了grok插件,grok是Logstash默认自带的Filter插件,能够帮助我们将未结构化的日志数据转化为结构化、可查询的数据格式。grok对日志的解析基于特定的正则模式匹配,对于Apache的Access Log 访问日志,多数情况下我们都适用combined格式。

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

可以看到现在logstash输出的内容包括原始日志信息,以及按照日志格式解析后的各字段信息。

GeoIP插件

配置参考上面,使用了GeoIP插件后,可以对访问IP进行反向解析,返回地址信息。可以用于后续做图。

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

但是仅仅这样还不够,因为进入ES的数据会自动进行映射,而对于地理数据,需要映射为特殊的geo_point类型,本文未做详细阐述,后续会有文章专门解决这个问题。

timestamp

logstash默认为每次导入的数据赋予当前的时间做为时间戳,如果我们希望能够使用日志中的时间做为记录的时间戳,主要用下面的配置。

  date {
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
    target => ["datetime"]
  }

这个配置匹配了日志中的时间,放入timestamp时间戳中,并且新创建了一个单独的datetime字段。

logstash配置完成后,首先确保ElasticSearch处于运行状态,再启动 logstash,最后启动Filebeat。这样,日志数据就会存放在ES中的 access_log 索引下。

ElasticSearch

ElasticSearch基本上无需做配置,安装可以参考我之前的文章ElasticSearch + Logstash + Kibana 搭建笔记,这里补充几个常用的API。

列出可用的索引

curl 'localhost:9200/_cat/indices?v'

结果如下图

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

查询索引数据

$DATE需要替换成具体的日期(格式YYYY.MM.DD),本文就是logstash-2017.08.10。

curl -XGET 'localhost:9200/logstash-$DATE/_search?pretty&q=respOnse=200’

Kibana

首先在Kibana中创建Index Pattern,索引选择 access_log ,时间戳选择 timestamp 或者 datetime,然后在 Discover 中就可以看到数据了。

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

结合Visualize和Dashboar,可以做出按时间统计的访问曲线和返回状态饼图。

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

参考资料:
1、Logstash Reference
2、Apache mod_log_config
3、Logstash: modify apache date format
4、Elastic Output Plugin


推荐阅读
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • VSCode快速查看函数定义和代码追踪方法详解
    本文详细介绍了在VSCode中快速查看函数定义和代码追踪的方法,包括跳转到定义位置的三种方式和返回跳转前的位置的快捷键。同时,还介绍了代码追踪插件的使用以及对符号跳转的不足之处。文章指出,直接跳转到定义和实现的位置对于程序员来说非常重要,但需要语言本身的支持。以TypeScript为例,按下F12即可跳转到函数的定义处。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
author-avatar
ai美的传说_581
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有