logstash5.5.1 的简单实用

本文介绍如何使用 Logstash 进行日志数据收集与处理,包括标准输入输出配置、从日志文件读取数据到 Elasticsearch 和 Kafka 的流程,并提供具体配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官网下载地址:点击下载

附上一个中文文档地址:点击跳转

上传服务器并且解压:

tar -xzvf logstash-5.5.1.tar.gz

注意:必须要实用jdk1.8以上的版本

  • 1.先来个简单的标准输入输出

创建一个文件std_in_out.conf:

input{
    stdin{
    }
}
output{
    stdout{
    }
}

启动logstash:

../bin/logstash -f std_in_out.conf 

如下图,当你标准输入是啥,标准输出就是啥:

这里写图片描述

  • 2.日志文件到标准输出

首先创建一个配置文件tomcat.conf


input{
    file{
        path =>"/usr/java/elk/logstash-5.5.1/mytest/tomcat_test.log"
        start_position=>"beginning"
    }
}

filter{
    grok{
        match=>{
            "message"=>"%{DATA:clientIp} - - \[%{HTTPDATE:accessTime}\] \"%{DATA:method} %{DATA:requestPath} %{DATA:httpversion}\" %{DATA:retcode} %{DATA:size} \"%{DATA:fromHtml}\" \"%{DATA:useragent}\""
        }

        remove_field=>"message"
    }
    date{
        match=>["accessTime","dd/MMM/yyyy:HH:mm:ss Z"]
    }
}

output{
    stdout{
        codec=>rubydebug
    }
}

然后在上面指定目录下创建一个文件tomcat_test.log

启动logstash,并且模拟日志的生成,讲如下日志重定向到tomcat_test.log中

192.168.80.123 - - [19/Oct/2017:13:45:29 +0800] "GET /mytest/rest/api01/v1.4.0?workIds=10086 HTTP/1.1" 200 78 "http://www.baidu.com/s?wd=www" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"

192.168.80.123 - - [19/Oct/2017:13:50:29 +0800] "GET /mytest/rest/api02/v1.4.0?workIds=10086 HTTP/1.1" 200 78 "http://www.baidu.com/s?wd=www" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"

192.168.80.123 - - [19/Oct/2017:14:50:29 +0800] "GET /mytest/rest/api03/v1.4.0?workIds=10086 HTTP/1.1" 200 78 "http://www.baidu.com/s?wd=www" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"

启动:

../bin/logstash -f tomcat.conf

重定向:

echo "192.168.80.123 - - [19/Oct/2017:13:45:29 +0800] \"GET /mytest/rest/api01/v1.4.0?workIds=10086 HTTP/1.1\" 200 78 \"http://www.baidu.com/s?wd=www\" \"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\"">> tomcat_test.log

查看标准输出:

{
         "method" => "GET",
      "useragent" => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",
           "path" => "/usr/java/elk/logstash-5.5.1/mytest/tomcat_test.log",
     "@timestamp" => 2017-10-19T05:45:29.000Z,
           "size" => "78",
       "clientIp" => "192.168.80.123",
       "@version" => "1",
           "host" => "lijie",
    "httpversion" => "HTTP/1.1",
    "requestPath" => "/mytest/rest/api01/v1.4.0?workIds=10086",
     "accessTime" => "19/Oct/2017:13:45:29 +0800",
        "retcode" => "200",
       "fromHtml" => "http://www.baidu.com/s?wd=www"
}

这里写图片描述

  • 3.logstash从文件到es

同样先创建配置文件tomcat2es.conf:

input{
    file{
        path =>"/usr/java/elk/logstash-5.5.1/mytest/tomcat_test.log"
        start_position=>"beginning"
    }
}

filter{
    grok{
        match=>{
            "message"=>"%{DATA:clientIp} - - \[%{HTTPDATE:accessTime}\] \"%{DATA:method} %{DATA:requestPath} %{DATA:httpversion}\" %{DATA:retcode} %{DATA:size} \"%{DATA:fromHtml}\" \"%{DATA:useragent}\""
        }

        remove_field=>"message"
    }
    date{
        match=>["accessTime","dd/MMM/yyyy:HH:mm:ss Z"]
    }
}

output{
    elasticsearch {
        hosts => "192.168.80.123"
    }
    stdout{
        codec=>rubydebug
    }
}

启动logstash:

 ../bin/logstash -f tomcat2es.conf

查看es,这里直接用kibana查看了,如下图:

这里写图片描述

  • 4.logstash从文件到kafka

启动kafka:

#启动zk
/usr/java/zookeeper/bin/zkServer.sh start

#启动kafka
/usr/java/kafka_2.11-0.10.1.1/bin/kafka-server-start.sh -daemon /usr/java/kafka_2.11-0.10.1.1/config/server.properties

#创建topic
/usr/java/kafka_2.11-0.10.1.1/bin/kafka-topics.sh --create --zookeeper 192.168.80.123:2181 --replication-factor 1 --partitions 3 --topic logstash01

编辑logstash的配置文件:

input {
  file {
    path => "/home/hadoop/monitor/*.txt"
    discover_interval => 5
    start_position => "beginning"
  }
}

output {
    kafka {
      topic_id => "logstash01"
      codec => plain {
            format => "%{message}"
            charset => "UTF-8"
      }
      bootstrap_servers => "192.168.80.123:9092"
    }
}

运行kafka的消费者:

/usr/java/kafka_2.11-0.10.1.1/bin/kafka-console-consumer.sh --zookeeper 192.168.80.123:2181 --topic logstash01 --from-beginning

运行logstash:

/usr/java/elk/logstash-5.5.1/bin/logstash -f /usr/java/elk/logstash-5.5.1/execconf/log2kafka.conf

结果:

原本监控的文件中有些数据,然后自己用如下命令添加一行数据:

echo "hehe haha lala lele" >> log01.txt 

logstash也能监控到并写入到kafka中.

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值