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

对于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格式。

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

GeoIP插件

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

但是仅仅这样还不够,因为进入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'

结果如下图

查询索引数据

$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 中就可以看到数据了。

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

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

时间: 2024-08-01 03:08:53

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台的相关文章

Nginx+Logstash+Elasticsearch+Kibana搭建网站日志分析

前言   流程,nignx格式化日志成json,通过logstash直接采集到elasticsearch,然后通过kibana gui界面展示分析 要点nignx日志成json格式,避免nignx默认日志是空格,需要正则匹配,导致logstash占过多cpuelasticsearch机配置防火墙,只让指定的logstash机访问kibana只监听本地127.0.0.1使用nignx方向代理,nginx中配置Http Basic Auth账号密码登陆 比较粗略的笔记,备忘安装java um ins

使用logstash+elasticsearch+kibana快速搭建日志平台

日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情 监控系统的运行状况 统计分析,比如接口的调用次数.执行时间.成功率等 异常数据自动触发消息通知 基于日志的数据挖掘 很多团队在日志方面可能遇到的一些问题有: 开发人员不能登录线上服务器查看详细日志,经过运维周转费时费力 日志数据分散在多个系统,难以查找 日志数据量大,查询速度慢 一个调用会涉及多个系统,难以在这些系统的日志中快速定位数据 数据不够实时 常见的一些重量级的开源

大数据日志分析logstash\elasticsearch\kibana

elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具 注意:关于安装文档,网络上有很多,可以参考,不可以全信,而且三件套各自的版本很多,差别也不一样,需要版本匹配上才能使用.推荐直接使用官网的这一套:elkdownloads. 比如我这里下载的一套是logstash 1.4.2 + elasticsearch 1.4.2 + kibana 3.1.2 安装elasticsearch 下载elasticsearch 1.4.2 tar -x

安装logstash,elasticsearch,kibana三件套

logstash,elasticsearch,kibana三件套 elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具 注意: 关于安装文档,网络上有很多,可以参考,不可以全信,而且三件套各自的版本很多,差别也不一样,需要版本匹配上才能使用.推荐直接使用官网的这一套:elkdownloads. 比如我这里下载的一套是logstash 1.4.2 + elasticsearch 1.4.2 + kibana 3.1.2 安装elastics

安装logstash,elasticsearch,kibana三件套(转)

logstash,elasticsearch,kibana三件套 elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具 注意: 关于安装文档,网络上有很多,可以参考,不可以全信,而且三件套各自的版本很多,差别也不一样,需要版本匹配上才能使用.推荐直接使用官网的这一套:elkdownloads. 比如我这里下载的一套是logstash 1.4.2 + elasticsearch 1.4.2 + kibana 3.1.2 安装elastics

利用AWStat+JAWStat进行Apache访问日志分析

Apache日志的几种形式: Apache的访问日志中会记录服务器所处理的所有请求,对apache的访问日志进行分析是一种比较传统的形式.虽然现在很多第三方的统计分析工具提供了嵌入到页面中的JS脚本来进行分析的方式,但是因为两种分析方式的侧重点不同,目前两种形式的日志分析仍并行存在. 不同版本的Apache httpd使用了不同的模块和指令来控制对访问的记录,包括mod_log_referer, mod_log_agent和TransferLog指令.现在,CustomLog指令包含了旧版本中相

Elasticsearch、Logstash、Kibana搭建统一日志分析平台

ELKstack是Elasticsearch.Logstash.Kibana三个开源软件的组合.目前都在Elastic.co公司名下.ELK是一套常用的开源日志监控和分析系统,包括一个分布式索引与搜索服务Elasticsearch,一个管理日志和事件的工具logstash,和一个数据可视化服务Kibanalogstash_1.5.3                  负责日志的收集,处理和储存elasticsearch-1.7.2            负责日志检索和分析kibana-4.1.2

python分析apache访问日志脚本分享_python

#!/usr/bin/env python # coding=utf-8 #------------------------------------------------------ # Name: Apache 日志分析脚本 # Purpose: 此脚本只用来分析Apache的访问日志 # Version: 2.0 # Author: LEO # Created: 2013-4-26 # Modified: 2013-5-4 # Copyright: (c) LEO 2013 #------

快速把Apache访问日志实时写入mysql数据库

在apache配置文件或是虚拟主机配置文件中(也就是配置LogFormat以及CustomLog部分)增加如下内容: LogFormat "INSERT INTO apachelog (ID, dateTime, IP, URL, code, referer, userAgent, size, request) VALUES ( NULL , \"%{%Y-%m-%d %H:%M:%S}t\", \"%a\", \"%U\", \&qu