ELK日志管理之——logstash部署

原创 2015年11月20日 18:53:12

1、yum源配置

[root@localhost ~]# cat > /etc/yum.repos.d/logstash.repo <<EOF
[logstash-1.5]
name=logstash repository for 1.5.x packages
baseurl=http://packages.elasticsearch.org/logstash/1.5/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1
EOF
[root@localhost ~]# yum clean all

[root@localhost ~]# yum makecache

2、安装logstash

[root@localhost ~]# yum install logstash

3、yum安装的目录如下

[root@logstash]$ whereis logstash
logstash: /etc/logstash /opt/logstash/bin/logstash.bat /opt/logstash/bin/logstash

/opt/logstash/bin/logstash      #执行文件
/etc/logstash/conf.d/        #配置文件目录

4、java环境变量配置

因为logstash默认回去/usr/sbin//usr/bin/里找java,如果安装java时没有配置相关环境变量,则可在/usr/sbin//usr/bin/下做个软连接即可。
[root@localhost nginx]# which java
/usr/java/jdk1.8.0_60/bin/java
[root@localhost bin]# ln -s /usr/java/jdk1.8.0_60/bin/java java

注:每个 logstash 过滤插件,都会有四个方法叫 add_tag, remove_tag, add_field 和remove_field。它们在插件过滤匹配成功时生效。

5、配置文件(具体配置方法和说明可查看本人博客《logstash配置语法》

[root@logstash]$ more /etc/logstash/conf.d/logstash-nginx.conf 
input {
    file {
        path => "/data/logs/nginx/*.log"
        start_position => beginning
    }
}
filter {
    if [path] =~ "access" {
        mutate { replace => { type => "apache_access" } }
        grok {
            match => { "message" => "%{IPORHOST:clientip} - %{USER:ident} \[%{HTTPDATE:timestamp}\] %{NUMBER:reqLen} \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{INT:status} %{NUMBER:respLen} %{NUMBER:duration} %{QS:referrer} %{QS:userAgent} %{QS:xforward} %{INT:conn}:%{INT:reqs}" }
        }
        date {
            match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
        }
    } else if [path] =~ "error" {
        mutate { replace => { type => "apache_error" } }
    grok {
        match => { "message" => "(?<datetime>\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) \[(?<errtype>\w+)\] \S+: \*\d+ (?<errmsg>[^,]+), (?<errinfo>.*)$" }
    }
    mutate {
        rename => [ "host", "fromhost" ]
        gsub => [ "errmsg", "too large body: \d+ bytes", "too large body" ]
    }
    if [errinfo]
    {
        ruby {
        code => "event.append(Hash[event['errinfo'].split(', ').map{|l| l.split(': ')}])"
        }
    }
    grok {
        match => { "request" => '"%{WORD:verb} %{URIPATH:urlpath}?(?: HTTP/%{NUMBER:httpversion})"' }
        patterns_dir => "/etc/logstash/patterns"
        remove_field => [ "message", "errinfo", "request" ]
    }
    } else {
        mutate { replace => { type => "random_logs" } }
    }

    mutate {
        convert => [
            "duration", "float",            #将字段由str类型转换成数值类型
            "status", "integer",
            "respLen", "integer"
           ]
    }

    geoip {
        source => "clientip"
        #add_tag => [ "geoip" ]
        database => "/etc/logstash/GeoLiteCity.dat"   #本地ip库
    }

    geoip {
        source => "client"
        #add_tag => [ "geoip" ]
        database => "/etc/logstash/GeoLiteCity.dat"   #本地ip库
    }
}
output {
    elasticsearch {
        host => ["10.173.17.71","10.172.198.108","10.170.237.100"]      #数据以轮询的方式传输到数组中的主机列表,充分发挥elasticsearch集群的作用
        protocol => "http"
        ndex => "uustore-nginx-log-%{+yyyy.MM}"                 #索引名称,以日期进行命名会每天生产一个索引文件,当需要删除时可按时间进行清理而不影响其他索引使用,但需要注意的是在kibana设置索引时就需要使用通配符“*”。
    }
    stdout {
        codec => rubydebug
    }
}

6、时间戳(记录每次日志已抽取的时间点和行数)

[root@logstash]$ locate sincedb
/root/.sincedb_53b7f195d5f913db850de77bc552cec0

如果要重新抽取日志的话需要删除时间戳(如果不是以service logstash start方式启动服务的,则时间戳放在/root目录)

[root@localhost ~]# rm -f /var/lib/logstash/.sincedb_e90b8ae60d1c692cb46b94ebbf869e32

注:不同方式安装、不同方式启动,.sincedb文件有可以在/root/目录下也可以在/var/lib/logstash/目录下,看个人情况,上面就是本人两种不同启动方式生成的.sincedb存放路径

7、logstash有个插件geoip,提供公共的ip库进行查询

[root@localhost nginx]# cd /etc/logstash/

[root@localhost nginx]# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

[root@localhost nginx]# gunzip GeoLiteCity.dat.gz

[root@localhost nginx]# cd conf.d/

[root@localhost nginx]# /opt/logstash/bin/logstash -f logstash-nginx.conf
版权声明:博客同步地址:http://www.cnblogs.com/dengtr/

Logstash 日志搜集处理框架 安装配置

0. 介绍Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。 http://kibana.l...
  • wljk506
  • wljk506
  • 2016年09月08日 15:59
  • 15631

Logstash 介绍及linux下部署

1. Logstash 介绍Logstash 是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。官网地址:https://www.elastic....
  • MasonQAQ
  • MasonQAQ
  • 2017年09月15日 15:31
  • 919

ETK-logstash客户端快速部署

前言          本文档旨在指导快速部署Logstash客户端服务。搜集日志并最终在Kibana上可视化展示。          在部署之前,请确认你的项目工程中,log4j的配置是如下这样的:...
  • u010237107
  • u010237107
  • 2016年03月17日 10:54
  • 1006

Kafka与Logstash的数据采集对接 —— 看图说话,从运行机制到部署

Kafka与Logstash
  • gaowenhui2008
  • gaowenhui2008
  • 2017年04月18日 18:14
  • 999

ELK基础环境搭建-logstash部署

logstash安装部署
  • cdshrewd
  • cdshrewd
  • 2016年11月15日 16:27
  • 357

logstash安装

一、下载: 可以到这边下载最新包:https://www.elastic.co/downloads/logstash 不过要特别注意:你所选的安装包和对应的jdk安装包要匹配!!!!!!(我因为没注意...
  • u010246789
  • u010246789
  • 2016年08月01日 17:10
  • 4572

logstash的安装和部署

在linux上打包logstash的源代码 1.下载logstash的源代码,源代码路径:https://github.com/logstash/logstash 2.编译logstash,需要具...
  • jisuanjiyihao
  • jisuanjiyihao
  • 2014年01月16日 13:58
  • 458

最近ELK(elasticsearch+logstash+kibana)学习小结

前提:处理大数据日志收集分析,随着搜索集群的快速膨胀,大量日志处理及情况反馈滞后带来一系列问题,亟需一个工具能快速分析定位集群中那种日志或那个机器出现了异常。运维的日志分析系统定制化较重,分析不够实时...
  • hhb200766
  • hhb200766
  • 2015年03月06日 12:19
  • 22319

ELK日志管理之——logstash配置语法

Logstash 设计了自己的 DSL —— 有点像 Puppet 的 DSL,或许因为都是用 Ruby 语言写的吧 —— 包括有区域,注释,数据类型(布尔值,字符串,数值,数组,哈希),条件判断,字...
  • u010917843
  • u010917843
  • 2015年11月20日 19:20
  • 12990

ELK 之 Logstash

ELK 之 Logstash简介:ELK 之 LogstashLogstash 是一个接收,处理,转发日志的工具。支持系统日志,webserver 日志,错误日志,应用日志,总之包括所有可以抛出来的日...
  • iguyue
  • iguyue
  • 2017年08月09日 17:27
  • 1171
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ELK日志管理之——logstash部署
举报原因:
原因补充:

(最多只允许输入30个字)