可怕!工作三年了,竟然不知道Logstash是干吗的?

沙海 2021年6月12日02:07:30Java评论93字数 5372阅读17分54秒阅读模式
摘要

智能摘要

智能摘要文章源自JAVA秀-https://www.javaxiu.com/31325.html

新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。然后创建一个仪表盘,选择刚刚创建的索引库模板,就可以查看数据的情况了。有不少同学问D哥,大厂面试官到底喜欢问什么?D哥特意邀请了华为、腾讯、阿里的朋友进群,与大家一起交流经验,增长技术。文章源自JAVA秀-https://www.javaxiu.com/31325.html

原文约 2897 | 图片 18 | 建议阅读 6 分钟 | 评价反馈文章源自JAVA秀-https://www.javaxiu.com/31325.html

可怕!工作三年了,竟然不知道Logstash是干吗的?

点击关注 ? Java面试那些事儿 文章源自JAVA秀-https://www.javaxiu.com/31325.html

收录于话题文章源自JAVA秀-https://www.javaxiu.com/31325.html

#Java面试那些事儿文章源自JAVA秀-https://www.javaxiu.com/31325.html

168个文章源自JAVA秀-https://www.javaxiu.com/31325.html

大家好,我是D哥文章源自JAVA秀-https://www.javaxiu.com/31325.html

点击关注下方公众号,Java面试资料 都在这里

文章源自JAVA秀-https://www.javaxiu.com/31325.html

来源:http://www.cnblogs.com/xuwujing

# 前言

文章源自JAVA秀-https://www.javaxiu.com/31325.html

本文主要介绍的是ELK日志系统中的Logstash快速入门。文章源自JAVA秀-https://www.javaxiu.com/31325.html

# ELK介绍

文章源自JAVA秀-https://www.javaxiu.com/31325.html

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。文章源自JAVA秀-https://www.javaxiu.com/31325.html

新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。文章源自JAVA秀-https://www.javaxiu.com/31325.html

  • Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。文章源自JAVA秀-https://www.javaxiu.com/31325.html

  • Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。文章源自JAVA秀-https://www.javaxiu.com/31325.html

  • Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。文章源自JAVA秀-https://www.javaxiu.com/31325.html

  • Filebeat是一个轻量型日志采集器,可以方便的同kibana集成,启动filebeat后,可以直接在kibana中观看对日志文件进行detail的过程。文章源自JAVA秀-https://www.javaxiu.com/31325.html

# Logstash介绍

文章源自JAVA秀-https://www.javaxiu.com/31325.html

Logstash是一个数据流引擎:文章源自JAVA秀-https://www.javaxiu.com/31325.html

它是用于数据物流的开源流式ETL引擎,在几分钟内建立数据流管道,具有水平可扩展及韧性且具有自适应缓冲,不可知的数据源,具有200多个集成和处理器的插件生态系统,使用Elastic Stack监视和管理部署文章源自JAVA秀-https://www.javaxiu.com/31325.html

Logstash包含3个主要部分:输入(inputs),过滤器(filters)和输出(outputs)。文章源自JAVA秀-https://www.javaxiu.com/31325.html

inputs主要用来提供接收数据的规则,比如使用采集文件内容;文章源自JAVA秀-https://www.javaxiu.com/31325.html

filters主要是对传输的数据进行过滤,比如使用grok规则进行数据过滤;文章源自JAVA秀-https://www.javaxiu.com/31325.html

outputs主要是将接收的数据根据定义的输出模式来进行输出数据,比如输出到ElasticSearch中。文章源自JAVA秀-https://www.javaxiu.com/31325.html

示例图:文章源自JAVA秀-https://www.javaxiu.com/31325.html

可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

# Logstash安装使用

文章源自JAVA秀-https://www.javaxiu.com/31325.html

一、环境选择

文章源自JAVA秀-https://www.javaxiu.com/31325.html

Logstash采用JRuby语言编写,运行在jvm中,因此安装Logstash前需要先安装JDK。如果是6.x的版本,jdk需要在8以上,如果是7.x的版本,则jdk版本在11以上。如果Elasticsearch集群是7.x的版本,可以使用Elasticsearch自身的jdk。文章源自JAVA秀-https://www.javaxiu.com/31325.html

Logstash下载地址推荐使用清华大学或华为的开源镜像站。文章源自JAVA秀-https://www.javaxiu.com/31325.html

下载地址:文章源自JAVA秀-https://www.javaxiu.com/31325.html

https://mirrors.huaweicloud.com/logstashhttps://mirrors.tuna.tsinghua.edu.cn/ELK文章源自JAVA秀-https://www.javaxiu.com/31325.html

ELK7.3.2百度网盘地址:链接:https://pan.baidu.com/s/1tq3Czywjx3GGrreOAgkiGg提取码:cxng文章源自JAVA秀-https://www.javaxiu.com/31325.html

二、JDK安装

文章源自JAVA秀-https://www.javaxiu.com/31325.html

注:JDK版本请以自身Elasticsearch集群的版本而定。文章源自JAVA秀-https://www.javaxiu.com/31325.html

1,文件准备

文章源自JAVA秀-https://www.javaxiu.com/31325.html

解压下载下来的JDKtar -xvf jdk-8u144-linux-x64.tar.gz移动到opt/java文件夹中,没有就新建,然后将文件夹重命名为jdk1.8文章源自JAVA秀-https://www.javaxiu.com/31325.html

    mvjdk1.8.0_144 /opt/javamvjdk1.8.0_144 jdk1.8
    文章源自JAVA秀-https://www.javaxiu.com/31325.html

    可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

    2,环境配置

    文章源自JAVA秀-https://www.javaxiu.com/31325.html

    首先输入 java -version文章源自JAVA秀-https://www.javaxiu.com/31325.html

    查看是否安装了JDK,如果安装了,但版本不适合的话,就卸载文章源自JAVA秀-https://www.javaxiu.com/31325.html

    可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

    输入文章源自JAVA秀-https://www.javaxiu.com/31325.html

      rpm -qa | grep java
      文章源自JAVA秀-https://www.javaxiu.com/31325.html

      查看信息文章源自JAVA秀-https://www.javaxiu.com/31325.html

      可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

      然后输入:文章源自JAVA秀-https://www.javaxiu.com/31325.html

        rpm-e--nodeps “你要卸载JDK的信息”如: rpm-e--nodepsjava-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
        文章源自JAVA秀-https://www.javaxiu.com/31325.html

        可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

        确认没有了之后,解压下载下来的JDK文章源自JAVA秀-https://www.javaxiu.com/31325.html

          tar-xvfjdk-8u144-linux-x64.tar.gz
          文章源自JAVA秀-https://www.javaxiu.com/31325.html

          移动到opt/java文件夹中,没有就新建,然后将文件夹重命名为jdk1.8。文章源自JAVA秀-https://www.javaxiu.com/31325.html

            mvjdk1.8.0_144 /opt/javamvjdk1.8.0_144 jdk1.8
            文章源自JAVA秀-https://www.javaxiu.com/31325.html

            然后编辑 profile 文件,添加如下配置文章源自JAVA秀-https://www.javaxiu.com/31325.html

            输入: vim /etc/profile文章源自JAVA秀-https://www.javaxiu.com/31325.html

              export JAVA_HOME=/opt/java/jdk1.8export JRE_HOME=/opt/java/jdk1.8/jreexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libexport PATH=.:${JAVA_HOME}/bin:$PATH
              文章源自JAVA秀-https://www.javaxiu.com/31325.html

              添加成功之后,输入:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                source /etc/profile
                文章源自JAVA秀-https://www.javaxiu.com/31325.html

                使配置生效,然后查看版本信息输入:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  java -version
                  文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  三、Logstash安装

                  1,文件准备

                  文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  将下载下来的logstash-7.3.2.tar.gz的配置文件进行解压文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  在linux上输入:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  tar -xvf logstash-7.3.2.tar.gz文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  然后移动到/opt/elk 里面,然后将文件夹重命名为 logstash-7.3.2文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  输入文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  mv logstash-7.3.2.tar /opt/elkmv logstash-7.3.2.tar logstash-7.3.2文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  2,配置修改

                  这里简单介绍一下 inputs,filters、outputs三个主要配置。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  inputs

                  inputs主要使用的几个配置项:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  • path:必选项,读取文件的路径,基于glob匹配语法。exclude:可选项,数组类型,排除不想监听的文件规则,基于glob匹配语法。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  • sincedb_path:可选项,记录sinceddb文件路径以及文件读取信息位置的数据文件。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  • start_position:可选项,可以配置为beginning/end,是否从头读取文件。默认从尾部值为:end。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  • stat_interval:可选项,单位为秒,定时检查文件是否有更新,默认是1秒。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  • discover_interval:可选项,单位为秒,定时检查是否有新文件待读取,默认是15秒文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  • ignore_older:可选项,单位为秒,扫描文件列表时,如果该文件上次更改时间超过设定的时长,则不做处理,但依然会监控是否有新内容,默认关闭。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  • close_older:可选项,单位为秒,如果监听的文件在超过该设定时间内没有新内容,会被关闭文件句柄,释放资源,但依然会监控是否有新内容,默认3600秒,即1小时。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  • tags :可选项,在数据处理过程中,由具体的插件来添加或者删除的标记。type :可选项,自定义处理时间类型。比如nginxlog。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                  一个简单的input输入示例:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                    input { file {path =>"/home/logs/mylog.log" }}
                    文章源自JAVA秀-https://www.javaxiu.com/31325.html

                    上述这段配置表示采集/home/logs/mylog.log的日志,如果是采集整个目录的话,则可以通过*通配符来进行匹配,如文章源自JAVA秀-https://www.javaxiu.com/31325.html

                       path => "/home/logs/*.log"
                      文章源自JAVA秀-https://www.javaxiu.com/31325.html

                      表示采集该目录下所有后缀名为.log的日志。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                      通过logstash-input-file插件导入了一些本地日志文件时,logstash会通过一个名为sincedb的独立文件中来跟踪记录每个文件中的当前位置。这使得停止和重新启动Logstash成为可能,并让它在不丢失在停止Logstashwas时添加到文件中的行数的情况下继续运行。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                      在调试的时候,我们可能希望取消sincedb的记录功能,使文件每次都能从头开始读取。此时,我们可以这样来做文章源自JAVA秀-https://www.javaxiu.com/31325.html

                      示例:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                        input { file { path => "/home/logs/mylog.log" start_position => "beginning" sincedb_path => "/dev/null" }}
                        文章源自JAVA秀-https://www.javaxiu.com/31325.html

                        如果想使用HTTP输入,可以将类型改成http,只不过里面的参数有不同而已,tcp、udp、syslog和beats等等同理。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                        示例:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                          input{http{port => 端口号}}
                          文章源自JAVA秀-https://www.javaxiu.com/31325.html
                          filter

                          filter主要是实现过滤的功能,比如使用grok实现日志内容的切分等等。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                          比如对apache的日志进行grok过滤文章源自JAVA秀-https://www.javaxiu.com/31325.html

                          样例数据:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                          127.0.0.1 - - [13/Apr/2015:17:22:03 +0800] "GET /router.php HTTP/1.1" 404 285 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"文章源自JAVA秀-https://www.javaxiu.com/31325.html

                          grok:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                          %{COMBINEDAPACHELOG}文章源自JAVA秀-https://www.javaxiu.com/31325.html

                          这里我们可以使用kibana的grok来进行分析,grok在开发工具中。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                          当然也可以在http://grokdebug.herokuapp.com/网站进行匹配调试。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                          使用示例:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                            filter { grok {match => ["message", "%{COMBINEDAPACHELOG}"] }}
                            文章源自JAVA秀-https://www.javaxiu.com/31325.html

                            示例图:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                            可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

                            如果没有这方面的需求,可以不配做filter。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                            output

                            output主要作用是将数据进行输出,比如输出到文件,或者elasticsearch中。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                            这里将数据输出到ElasticSearch中,如果是集群,通过逗号可以配置多个节点。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                              output {  elasticsearch {hosts => ["127.0.0.1:9200"] }}
                              文章源自JAVA秀-https://www.javaxiu.com/31325.html

                              如果想在控制台进行日志输出的话,可以加上stdout配置。如果想自定义输出的index话,也可以加上对应的索引库名称,不存在则根据数据内容进行创建,也可以自动按天创建索引库。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                              示例如下:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                output { stdout {codec => rubydebug } elasticsearch {hosts => ["127.0.0.1:9200"] index => "mylogs-%{+YYYY.MM.dd}" }}
                                文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                更多logstash配置:https://www.elastic.co/guide/en/logstash/current/index.html文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                3,使用

                                demo

                                在/home/logs/目录下添加一个日志文件, 然后在logstash文件夹中创建一个logstash-test.conf文件,然后在该文件中添加如下配置:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  input {file {path => "/home/logs/mylog.log"start_position => "beginning"sincedb_path => "/dev/null"}}filter {}output {stdout {codec => rubydebug}elasticsearch {hosts => ["127.0.0.1:9200"]}}
                                  文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  然后在logstash 目录输入如下命令进行启动:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  ./bin/logstash -f logstash-test.conf文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  后台启动:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  nohup ./bin/logstash -f logstash-test.conf >/dev/null 2>&1 &文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  热配置加载启动:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  nohup ./bin/logstash -f logstash-test.conf --config.reload.automatic >/dev/null 2>&1 &文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  启动成功之后,如果是非后台启动,可以在控制台查看数据的传输,如果是后台启动,则可以在logstash的log目录中进行查看。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  在kibana展示

                                  打开kibana,创建一个索引模板,操作如下图所示:文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  这里因为未指定索引库,logstash使用的是logstash默认的模板,这里选择它就可。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  然后创建一个仪表盘,选择刚刚创建的索引库模板,就可以查看数据的情况了。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  可怕!工作三年了,竟然不知道Logstash是干吗的?技术交流群可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  有不少同学问D哥,大厂面试官到底喜欢问什么?想进大厂镀金。因此,D哥特意邀请了华为、腾讯、阿里的朋友进群,与大家一起交流经验,增长技术。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  有兴趣入群的同学,可长按扫描下方二维码,一定要备注:城市+昵称+技术方向,根据格式备注,可更快被通过且邀请进群。文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  ▲长按扫描文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  可怕!工作三年了,竟然不知道Logstash是干吗的?热门推荐文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  可怕!工作三年了,竟然不知道Logstash是干吗的?可怕!工作三年了,竟然不知道Logstash是干吗的?文章源自JAVA秀-https://www.javaxiu.com/31325.html

                                  文章源自JAVA秀-https://www.javaxiu.com/31325.html
                                  继续阅读
                                  速蛙云 - 极致体验,强烈推荐!!!购买套餐就免费送各大视频网站会员!快速稳定、独家福利社、流媒体稳定解锁!速度快,全球上网、视频、游戏加速、独立IP均支持!基础套餐性价比很高!这里不多说,我一直正在使用,推荐购买:https://www.javaxiu.com/59919.html
                                  weinxin
                                  资源分享QQ群
                                  本站是JAVA秀团队的技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
                                  沙海
                                  匿名

                                  发表评论

                                  匿名网友 填写信息

                                  :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

                                  确定