e2

滴滴侠,fai抖

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

1.基本概念

ELK:Elasticsearch + Logstash + Kibana 

ELK官网:https://www.elastic.co/

ELK作用:数据采集分析展示一体化

Logstash的角色:数据采集

Elasticsearch的角色:数据存储分析

Kibana的角色:展示

 

2.安装

(a)logstash运行依赖jre,jre的安装可参考:ubuntu安装jre

(b)下载地址:https://www.elastic.co/,点击右上角downloads

(c)我选择的版本是logstash-2.2.2.tar.gz

(d)解压:tar -xzvf logstash-2.2.2.tar.gz

(e)解压即可用,执行程序在bin目录下面

 

3.启动参数

(a)启动参数查看 ./logstash -h

(b) -f  :指定配置路径

(c) -t  :测试配置

(d) -l :指定日志路径,否则输出到标准输出

(e)启动举例:

 

nohup ./logstash -f ../conf/logstach.conf -l ../log/logstash.log &
 

 

 

4.最简单的启动,启动完成后在屏幕输入"hello logstash",输出信息将会在标准输出格式化输出

 

./logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'
 


 

5.配置

官方文档:https://www.elastic.co/guide/en/logstash/current/index.html

(a)logstash的配置主要由三块组成input、filter、output

(b)input :数据输入

(c)filter :数据预处理

(d)output :输出控制

 

6.插件

官方文档:https://www.elastic.co/guide/en/logstash/current/index.html

主要是参考官方文档的input、filter、output插件说明

 

7.配置举例

(a)需求:有多个路径的日志文件需要采集,需要对日志文件进行不同的解析,然后进行不同的处理,假设日志如下:

 

1457494295.865 200 GET /djgxZGNkYWJiZmE1MTNmZTE2MjBhNTY1MzlkMjAxYjY4MTIwMDIzMjkw HTTP/1.1 0.347 - 110.82.103.27 [ 09/Mar/2016:11:31:35 +0800 ] 0.347 godmusic.bs2dl.yy.com 758388 127 127.0.0.1:9999
 

 

(b)利用grok插件进行解析,grok插件有个模拟地址,http://grokdebug.herokuapp.com/

(c)数据输出到elasticsearch

(d)配置如下:logstash.conf

 

  1.  
    input {
  2.  
    file {
  3.  
    type => "udaccesslog"
  4.  
    path => "/data/ud_log/access.log"
  5.  
    }
  6.  
    file {
  7.  
    type => "routeraccesslog"
  8.  
    path => "/data/router_log/access.log"
  9.  
    }
  10.  
    }
  11.  
    filter {
  12.  
    if [type] == "udaccesslog" {
  13.  
    grok {
  14.  
    match => { "message" => "%{NUMBER:msec:float} %{NUMBER:status:int} %{WORD:method} %{URIPATHPARAM:request} (HTTP/%{NUMBER:http_version}) %{NUMBER:duration:float} (?:(?:%{URI:referrer}|-)|%{QS:referrer}) %{IP:clientip} (\[ %{HTTPDATE:timestamp} \]) %{NUMBER:upstream_duration:float} %{IPORHOST:domain} %{NUMBER:bytes_sent:int} %{NUMBER:request_length:int} %{IP:upstream_addr}\:%{NUMBER:upstream_port:int}" }
  15.  
    remove_field => [ "@version", "http_version", "msec", "host" ]
  16.  
    add_field => {
  17.  
    machine => "123.456.789"
  18.  
    zoneid => "8080"
  19.  
    }
  20.  
    }
  21.  
    mutate {
  22.  
    convert => {
  23.  
    "zoneid" => "integer"
  24.  
    }
  25.  
    }
  26.  
    }
  27.  
    if [type] == "routeraccesslog" {
  28.  
     
  29.  
    }
  30.  
    }
  31.  
    output {
  32.  
    if [type] == "udaccesslog" {
  33.  
    elasticsearch {
  34.  
    hosts => ["123.456.787:9200", "123.456.788:9200", "123.456.789:9200"]
  35.  
    index => "udnginx-%{+YYYY.MM.dd}"
  36.  
    workers => 2
  37.  
    }
  38.  
    }
  39.  
    if [type] == "routeraccesslog" {
  40.  
    stdout { codec => rubydebug }
  41.  
    }
  42.  
    }

 

(e)配置的一些细节理解

file:默认从文件末尾读取,会记录读取的offset

index:可以理解成数据库database,可以按日期动态生成,这样方便按照日期管理数据

type:可以理解成数据库的table

grok:解析数据插件

mutate:可以改变值的类型的插件

(f)logstash的host不允许修改,所以建议用machine字段代替

(g)需留意logstash的资源使用率

 

小结:细节很多,主要看官网的配置文档

 

下一篇:elk之elasticsearch安装与部署

 

End;

 

posted on 2018-08-11 10:50  纯黑Se丶  阅读(224)  评论(0编辑  收藏  举报