ELK 日志系统搭建配置

logstash是一个数据分析软件,主要目的是分析log日志。整一套软件可以当作一个MVC模型,logstash是controller层,Elasticsearch是一个model层,kibana是view层。

首先将数据传给logstash,它将数据进行过滤和格式化(转成JSON格式),然后传给Elasticsearch进行存储、建搜索的索引,kibana提供前端的页面再进行搜索和图表可视化,它是调用Elasticsearch的接口返回的数据进行可视化。logstash和Elasticsearch是用Java写的,kibana使用node.js框架。

这个软件官网有很详细的使用说明,https://www.elastic.co/,除了docs之外,还有视频教程。这篇博客集合了docs和视频里面一些比较重要的设置和使用。

一、logstash的配置

1. 定义数据源

写一个配置文件,可命名为logstash.conf,输入以下内容:

input {
        file {
                path => "/data/web/logstash/logFile/*/*"
                start_position => "beginning" #从文件开始处读写
        }
#       stdin {}  #可以从标准输入读数据
}

定义的数据源,支持从文件、stdin、kafka、twitter等来源,甚至可以自己写一个input plugin。如果像上面那样用通配符写file,如果有新日志文件拷进来,它会自动去扫描。

2. 定义数据的格式

根据打日志的格式,用正则表达式进行匹配

filter {

  #定义数据的格式
  grok {
    match => { "message" => "%{DATA:timestamp}\|%{IP:serverIp}\|%{IP:clientIp}\|%{DATA:logSource}\|%{DATA:userId}\|%{DATA:reqUrl}\|%{DATA:reqUri}\|%{DATA:refer}\|%{DATA:device}\|%{DATA:textDuring}\|%{DATA:duringTime:int}\|\|"}
  }

}

由于打日志的格式是这样的:

2015-05-07-16:03:04|10.4.29.158|120.131.74.116|WEB|11299073|http://quxue.renren.com/shareApp?isappinstalled=0&userId=11299073&from=groupmessage|/shareApp|null|Mozilla/5.0 (iPhone; CPU iPhone OS 8_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12D508 MicroMessenger/6.1.5 NetType/WIFI|duringTime|98||

以|符号隔开,第一个是访问时间,timestamp,作为logstash的时间戳,接下来的依次为:服务端IP,客户端的IP,机器类型(WEB/APP/ADMIN),用户的ID(没有用0表示),请求的完整网址,请求的控制器路径,reference,设备的信息,duringTime,请求所花的时间。

如上面代码,依次定义字段,用一个正则表达式进行匹配,DATA是logstash定义好的正则,其实就是(.*?),并且定义字段名。

我们将访问时间作为logstash的时间戳,有了这个,我们就可以以时间为区分,查看分析某段时间的请求是怎样的,如果没有匹配到这个时间的话,logstash将以当前时间作为该条记录的时间戳。需要再filter里面定义时间戳的格式,即打日志用的格式:

filter {

  #定义数据的格式
  grok {#同上... }

  #定义时间戳的格式
  date {
    match => [ "timestamp", "yyyy-MM-dd-HH:mm:ss" ]
    locale => "cn"
  }

}

在上面的字段里面需要跟logstash指出哪个是客户端IP,logstash会自动去抓取该IP的相关位置信息:

filter {

  #定义数据的格式
  grok {#同上}

  #定义时间戳的格式
  date {#同上}

  #定义客户端的IP是哪个字段(上面定义的数据格式)
  geoip {
    source => "clientIp"
  }}

同样地还有客户端的UA,由于UA的格式比较多,logstash也会自动去分析,提取操作系统等相关信息

  #定义客户端设备是哪一个字段
  useragent {
    source => "device"
    target => "userDevice"
  }

哪些字段是整型的,也需要告诉logstash,为了后面分析时可进行排序,使用的数据里面只有一个时间

  #需要进行转换的字段,这里是将访问的时间转成int,再传给Elasticsearch
  mutate {
    convert => ["duringTime", "integer"]
  }

3. 输出配置

最后就是输出的配置,将过滤扣的数据输出到elasticsearch

output {
  #将输出保存到elasticsearch,如果没有匹配到时间就不保存,因为日志里的网址参数有些带有换行
  if [timestamp] =~ /^\d{4}-\d{2}-\d{2}/ {
        elasticsearch { host => localhost }
  }

   #输出到stdout
#  stdout { codec => rubydebug }

   #定义访问数据的用户名和密码
#  user => webService
#  password => 1q2w3e4r
}

我们将上述配置,保存到logstash.conf,然后运行logstash

在logstash启动完成之后,输入上面的那条访问记录,logstash将输出过滤后的数据:

可以看到logstash,自动去查询IP的归属地,并将请求里面的device字段进行分析。

二、配置Elasticsearch和kibana

1. Elasticsearch

这个不需要怎么配,使用默认的配置即可。配置是: config/elasticsearch.yml

如果需要设置数据的过期时间,可以加上这两行(目测是这样配的,没有验证过,读者可以试一下):

#设置为30天过期

indices.cache.filter.expire: 30d

index.cache.filter: 30d

Elasticsearch默认监听在9200端口,可对其进行查询和管理,例如看索引的健康状态:

curl ‘localhost:9200/_cluster/health?level=indices&pretty‘

输出

{
  "cluster_name" : "elasticsearch",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 161,
  "active_shards" : 161,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 161,
  "number_of_pending_tasks" : 0,
  "indices" : {
    "logstash-2015.05.05" : {
      "status" : "yellow", #有三级,green, yellow和red
      "number_of_shards" : 5,
      "number_of_replicas" : 1,
      "active_primary_shards" : 5,
      "active_shards" : 5,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 5
    }}

可在浏览器进行访问,例如查询一下使用chrome浏览器情况:

2. kibana

这个也不用配置,默认监听在5601端口。

#让它运行在后台
localhost# nohup bin/kibana &

注意以上两个要使用Java 7以上版本,还有小版本要求,下一个最新的Java 8即可,然后在启动脚本里export

时间: 2024-10-08 22:45:02

ELK 日志系统搭建配置的相关文章

ELK日志系统:Elasticsearch+Logstash+Kibana搭建教程

ELK日志系统:Elasticsearch + Logstash + Kibana 搭建教程 安装配置JDK环境 JDK安装(不能安装JRE) JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载包:jdk-8u131-linux-x64.rpm yum localinstall jdk-8u131-linux-x64.rpm mvn 安装 cd /usr/lo

ELK日志平台搭建

ELK日志平台搭建 整体架构 整体架构主要分为5个模块,分别提供不同的功能: Filebeat:轻量级数据收集引擎.基于原先 Logstash-fowarder 的源码改造出来.是 ELK Stack 在 Agent 的第一选择.<br><br>Kafka:数据缓冲队列.作为消息队列解耦了处理过程,同时提高了可扩展性.具有峰值处理能力,使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃.<br><br>Logstash:数据

ELK日志系统:Filebeat使用及Kibana如何设置登录认证

原文:ELK日志系统:Filebeat使用及Kibana如何设置登录认证 根据elastic上的说法: Filebeat is a lightweight, open source shipper for log file data. As the next-generation Logstash Forwarder, Filebeat tails logs and quickly sends this information to Logstash for further parsing an

ELK日志系统之kibana的使用操作

1.ELK日志系统打开后,打开kibana的操作界面,第一步创建索引模式: 2222222222222222222222222222222222222222222222 333333333333333333333333333333333创建成功 444444444444444444444444444444 放牛去 原文地址:https://www.cnblogs.com/spll/p/10955215.html

ELK日志分析系统搭建配置

我们主要用ELK日志分析系统来分析Nginx访问日志,mysql慢查询日志,tomcat运行日志以及系统日志等. 介绍:ELK:ElasticSearch+LogStash+Kibana=ElkStackElasticSearch:存储.收索.分析(可以用solr替代)LogStash:收集器,输入,处理分析,存储到ESKibana:展示备注:ElasticSearch支持集群功能,日志收集后会在每个节点存放一份(可以选择) 1.安装jdkwget http://sg-new.oss-cn-ha

ELK日志系统的搭建

http://www.cnblogs.com/ibook360/archive/2013/03/15/2961428.html

logstash日志系统搭建

本文将介绍如果使用logstash,elasticsearch,kibana搭建一个日志分析系统.Logstash支持的日志类型非常的广泛,支持nginx,postfix.windows系统日志,java日志以及mysql慢查询日志,Docker日志等,并带有强大的过滤器功能,还可以输出到elasticsearch,nagios,mail等,功能相当的强大,在我们要部署的日志分析系统中logstash用来收集各种日志,然后推送给elasticsearch,kibana负责通过web接口最终展示出

centos7 部署 ELK 日志系统

=============================================== 2017/12/17_第1次修改                       ccb_warlock =============================================== ELK(elasticsearch.logstash.kibana)可以作为日志收集及分析的一整套系统,通过阿里的普及也有越来越多的公司在使用,使用下来功能还可以,这里整理记录一个部署手册. 为了方便,将E

ELK日志系统

转自 https://zhuanlan.zhihu.com/p/26399963 ELK中的三个系统分别扮演不同的角色,组成了一个整体的解决方案. Logstash是一个ETL工具,负责从每台机器抓取日志数据,对数据进行格式转换和处理后,输出到Elasticsearch中存储. Elasticsearch是一个分布式搜索引擎和分析引擎,用于数据存储,可提供实时的数据查询. Kibana是一个数据可视化服务,根据用户的操作从Elasticsearch中查询数据,形成相应的分析结果,以图表的形式展现