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/

相关文章推荐

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

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

ELK日志管理之——elasticsearch部署

1、配置官方yum源[root@localhost ~]# rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch c...

Centos7 之安装Logstash ELK stack 日志管理系统

一、介绍      The Elastic Stack - 它不是一个软件,而是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源...

Linux操作系统安装ELK stack日志管理系统--(2)Elasticsearch与Kibana的安装与使用以及和Logstash的连接

上一篇:Linux操作系统安装ELK stack日志管理系统–(1)Logstash和Filebeat的安装与使用上一篇介绍了Logstash和Filebeat的安装,以及使用Filebeat作为Lo...

ELK(elasticsearch+logstash+kibana) 日志分析

日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠...

ELK(ElasticSearch2.1, Logstash, Kibana)搭建实时日志分析平台

ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

http://my.oschina.net/itblog/blog/547250 http://baidu.blog.51cto.com/71938/1676798 1、ELK由ElasticSe...

ELK学习3_使用redis+logstash+elasticsearch+kibana快速搭建日志平台

日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情监控系统的运行状况统计分析,比如接口的调用次数、执行时间、成功率等异常数据自...

ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticSearch,一款基于Apache Lucene的开源分布式搜索引擎)中便于查找和分析,在研究...

ELK实战-Logstash:收集rsyslog日志

概述本文主要是展示将logstash作为rsyslog服务器,并收集远程的rsyslog日志。本文阅读的基础建立在: * 了解rsyslog服务器,或者阅读rsyslog日志服务器-日志写入远端rs...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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