使用Logstash进行日志分析

LogStash主要用于数据收集和分析方面,配合Elasticsearch,Kibana用起来很方便,安装教程google出来很多。

推荐阅读

目的

输入常规的Nginx日志,过滤成所需的字段,存入Elasticsearch里面。

日志样式:

115.182.31.11 - - [02/Aug/2013:08:35:10 +0800] "GET /v2/get?key=0b0c1c5523aa40c3a5dcde4402947693&appid=153&appname=%e6%96%97%e5%9c%b0%e4%b8%bb%e5%8d%95%e6%9c%ba%e7%89%88&uuid=861698005693444&client=1&operator=1&net=2&devicetype=1&adspacetype=1&category=2&ip=117.136.22.36&os_version=2.2.2&aw=320&ah=50&timestamp=1375403699&density=1.5&pw=800&ph=480&Device=ZTE-U%2bV880&sign=1f6fd0992ca09e8525b0f7165a928a2a HTTP/1.1" 200 76 "-" "-" -
117.135.137.180 - - [02/Aug/2013:08:35:10 +0800] "GET /v2/get?Format=json&Key=47378200063c41fe90eff85f11ca4d2f&AppId=324&AppName=%25E5%258D%2595%25E6%259C%25BA%25E6%2596%2597%25E5%259C%25B0%25E4%25B8%25BB&Uuid=b51d63a91da5a4111e6cc1fb2c2538d5&Client=1&Operator=1&Net=2&DeviceType=1&AdSpaceType=1&Category=28&Ip=117.136.7.111&Os_version=4.0.4&Aw=320&Ah=50&TimeStamp=1375403708&Sign=9a00b63a04c165deea70dedd6b747697 HTTP/1.0" 200 776 "-" "-" -
115.182.31.11 - - [02/Aug/2013:08:35:10 +0800] "GET /v2/get?key=0b0c1c5523aa40c3a5dcde4402947693&appid=153&appname=%e6%96%97%e5%9c%b0%e4%b8%bb%e5%8d%95%e6%9c%ba%e7%89%88&uuid=860173017274352&client=1&operator=2&net=3&devicetype=1&adspacetype=1&category=2&ip=120.7.195.5&os_version=2.3.5&aw=320&ah=50&timestamp=1375403700&density=1.5&long=39&lat=0699733%2c116&pw=854&ph=480&Device=MI-ONE%2bPlus&sign=f65a4b2b2681ac489f65acf49e3d8ebd HTTP/1.1" 200 76 "-" "-" -
115.182.31.12 - - [02/Aug/2013:08:35:10 +0800] "GET /v2/get?key=0b0c1c5523aa40c3a5dcde4402947693&appid=153&appname=%e6%96%97%e5%9c%b0%e4%b8%bb%e5%8d%95%e6%9c%ba%e7%89%88&uuid=863802017354171&client=1&operator=1&net=3&devicetype=1&adspacetype=1&category=2&ip=123.121.144.120&os_version=2.3.5&aw=320&ah=50&timestamp=1375403698&density=1.5&long=40&lat=11183975%2c116&pw=854&ph=480&Device=MI-ONE%2bPlus&sign=0c74cf53a4b6adfe5e218f4fab920da3 HTTP/1.1" 200 76 "-" "-" -
115.182.31.8 - - [02/Aug/2013:08:35:10 +0800] "GET /v2/get?key=0b0c1c5523aa40c3a5dcde4402947693&appid=153&appname=%e6%96%97%e5%9c%b0%e4%b8%bb%e5%8d%95%e6%9c%ba%e7%89%88&uuid=868247013598808&client=1&operator=4&net=2&devicetype=1&adspacetype=1&category=2&ip=117.136.20.88&os_version=2.3.5&aw=320&ah=50&timestamp=1375403707&density=1.5&pw=800&ph=480&Device=Lenovo%2bA520GRAY&sign=43d5260eb2b89f5984b513067e074f5e HTTP/1.1" 200 67 "-" "-" -

经过Logstash抽取收集后,每段会输出形式:

{
         "message" => "115.182.31.8 - - [02/Aug/2013:05:24:12 +0800] \"GET /v2/get?key=0b0c1c5523aa40c3a5dcde4402947693&appid=153&appname=斗地主单机版&uuid=355696050506936&client=1&operator=1&net=3&devicetype=1&adspacetype=1&category=2&ip=113.228.122.247&os_version=4.1.1&aw=320&ah=50&timestamp=1375392249&density=2&long=41&lat=917705,123&pw=1280&ph=720&Device=GT-N7100&sign=e9853bb1e8bd56874b647bc08e7ba576 HTTP/1.1\" 200 67 \"-\" \"-\" -",
        "@version" => "1",
      "@timestamp" => "2015-01-15T08:06:26.340Z",
            "host" => "vovo",
            "path" => "/home/vovo/access.log",
          "client" => "1",
           "ident" => "-",
            "auth" => "-",
       "timestamp" => "1375392249",
            "verb" => "GET",
         "request" => "/v2/get?key=0b0c1c5523aa40c3a5dcde4402947693&appid=153&appname=斗地主单机版&uuid=355696050506936&client=1&operator=1&net=3&devicetype=1&adspacetype=1&category=2&ip=113.228.122.247&os_version=4.1.1&aw=320&ah=50&timestamp=1375392249&density=2&long=41&lat=917705,123&pw=1280&ph=720&Device=GT-N7100&sign=e9853bb1e8bd56874b647bc08e7ba576",
    "http_version" => "1.1",
        "response" => "200",
           "bytes" => "67",
             "key" => "0b0c1c5523aa40c3a5dcde4402947693",
           "appid" => "153",
         "appname" => "斗地主单机版",
            "uuid" => "355696050506936",
        "operator" => "1",
             "net" => "3",
      "devicetype" => "1",
     "adspacetype" => "1",
        "category" => "2",
              "ip" => "113.228.122.247",
      "os_version" => "4.1.1",
              "aw" => "320",
              "ah" => "50",
         "density" => "2",
            "long" => "41",
             "lat" => "917705,123",
              "pw" => "1280",
              "ph" => "720",
          "Device" => "GT-N7100",
            "sign" => "e9853bb1e8bd56874b647bc08e7ba576"
}

为了方便理解和测试,我采用了Logstash样版配置文件进行设置。

sample.conf

当中包含实现urldecode和kv插件功能,需要运行 ./plugin install contrib 安装Logstash的默认插件。

input {
    file {
        path => "/home/vovo/access.log"  #指定日志目录或文件,也可以使用通配符*.log输入目录中的log文件。
        start_position => "beginning"
    }
}
filter {
    grok {
        match => ["message", "%{IPORHOST:client} (%{USER:ident}|-) (%{USER:auth}|-) \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:http_version})?|-)\" %{NUMBER:response} %{NUMBER:bytes} \"(%{QS:referrer}|-)\" \"(%{QS:agent}|-)\""]    #匹配模式 message是每段读进来的日志,IP、HTTPDATE、WORD、NOTSPACE、NUMBER都是patterns/grok-patterns中定义好的正则格式名称,对照上面的日志进行编写,冒号,(?:%{USER:ident}|-)这种形式是条件判断,相当于程序里面的二目运算。如果有双引号""或者[]号,需要在前面加\进行转义。
    }
    kv {
                source => "request"
                field_split => "&?"
                value_split => "="
        }  #再单独将取得的URL、request字段取出来进行key-value值匹配,需要kv插件。提供字段分隔符"&?",值键分隔符"=",则会自动将字段和值采集出来。
    urldecode {
        all_fields => true
    }  #把所有字段进行urldecode(显示中文)
}

output {
    #elasticsearch {
    #    host => ‘localhost‘
    #    protocol => "http"
    #}  #把采集的数据输出到elasticsearch里面。
    stdout {
        codec => rubydebug
    }  #输出到屏幕上
}
时间: 2024-11-03 21:10:21

使用Logstash进行日志分析的相关文章

ELK(ElasticSearch+Logstash+Kibana)日志分析工具

日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总. 集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事

ELK日志分析收集

日志的作用:系统运维和开发人员可以通过日志了解服务器软硬件,检查配置过程当中发生的错误和错误原因.以便了解服务器的负荷,性能的安全性,从而及时的采取措施纠正错误. 日志的功能:解决系统故障和发现问题的主要手段. 日志主要包括:系统日志,应用程序日志,安全日志. 集中化管理日志.对于日志的统计和检索是一件比较麻烦的事情.一般使用grep ,awk和wc等Linux命令去实现检索和统计.但是对于查询,排序和统计,就显得有些力不存心.而ELK正好能解决上述问题 ELK是开源分布式的搜索的引擎.它是由E

日志分析 logstash elashsearch kibana

日志分析界面: logstash(分析端) + elashsearch(存储端) + kibana(展示端) 工具: 进行数据整理 statsd 1.diamond --> statsd --> graphite 2.实时收集数据的做法: logstash --> statsd --> graphite 日志收集可视化(LEK): logstash + elasticsearch + kibana legend: logstash --> redis --> Elast

安装logstash+kibana+elasticsearch+redis搭建集中式日志分析平台

本文是参考logstash官方文档实践的笔记,搭建环境和所需组件如下: Redhat 5.7 64bit / CentOS 5.x JDK 1.6.0_45 logstash 1.3.2 (内带kibana) elasticsearch 0.90.10 redis 2.8.4 搭建的集中式日志分析平台流程如下: elasticsearch 1.下载elasticsearch. wget https://download.elasticsearch.org/elasticsearch/elasti

[Big Data - ELK] ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这

logstash日志分析

nodejs npm  install  安装环境 logstash日志分析,图形界面展示 小的搜索引擎,图形界面展示 ruby开发的工具,封装成java环境的jar包 logstash 分析 读日志  从后往前读  实时 elastic search    存储 kibana  展示  web页面 java -jar logstash-1.3.2-flatjar.jar agent -f logstash.conf -- web http://192.168.1.17:9292/index.h

Logstash+ElasticSearch+Kibana4日志分析系统安装详解

ELK日志分析系统 环境:centos6.5 准备好ELK三个安装包,官网下 1.安装jdk 网上有的教程叫下载oracle的jdk,其实没必要,系统自带的openjdk就行了,不过需要先 看下版本,1.7是不行的,要1.8以上 升级到1.8 先删除1.7版本 # yum remove -y java-1.7.0-openjdk 然后安装1.8版本,看到下面信息即可 2.安装elasticsearch 下载安装包(tar)https://www.elastic.co/downloads/elas

Elasticsearch+Logstash+Kinaba+Redis日志分析系统

一.简介 1.组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是一个完全开源的工具,它可以对你的日志进行收集.分析,并将其存储供以后使用 kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可

Logstash+Elasticsearch+Kibana 联合使用搭建日志分析系统(Windows系统)

最近在做日志分析这块儿,要使用 Logstash+Elasticsearch+Kibana 实现日志的导入.过滤及可视化管理,官方文档写的不够详细,网上的文章大多要么是针对Linux系统的用法,要么就是抄袭别人的配置大都没法运行.费了很大劲才搞定了这仨东西,写一篇用法心得,废话不多说,进入主题. 首先,你的电脑上要装Java 的JDK环境,要使用  Logstash+Elasticsearch+Kibana,需要下载这三个软件和一些必要的插件,列表如下 : 1.Java JDK (最新版Logs