使用logstash将项目的日志存储到Elasticsearch中(详细!新手避坑点!)

这篇具有很好参考价值的文章主要介绍了使用logstash将项目的日志存储到Elasticsearch中(详细!新手避坑点!)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.环境准备

我这里默认你们这个logstash和Elasticsearch已经安装好了。

我使用的是logstash版本7.4.0 Elasticsearch版本7.4.0。 使用其他版本注意版本一定要一致,版本不一致大概率会出现logstash启动报Failed to install template.异常,已经踩坑了。

logstash的配置文件:

input {
#tcp网络传输模式
    tcp {
       mode => "server" 
       #监听端口号
       port => 9601
       codec => json_lines
    }
}
#输出位置
output {
    elasticsearch {
        action => "index"
        #es的地址
        hosts => ["10.10.80.56:9200"]
        #es的索引名称
        index => "logtoes-test"
        #es的用户名与密码
        user => "username"
        password => "password"
     }
    stdout {
        codec => rubydebug
    }
}

接下来

以配置文件启动

在 logstash-7.4.0下的bin目录使用

./logstash -f /home/zhjk/logstash-test-config/logstash-test.conf

-f 后面是配置文件路径

启动成功窗口

使用logstash将项目的日志存储到Elasticsearch中(详细!新手避坑点!)

查看9601端口是否被监听

[zhjk@tongtech-56 ~]$ netstat -lntp |grep 9601
tcp6       0      0 :::9601                 :::*                    LISTEN      8897/java  

2.配置lockback

maven坐标

尽量和我的一致,之前用的4.8 的版本,不报错但是日志进不去。

<!--logback日志-->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>6.3</version>
        </dependency>

​logback.xml

<?xml version="1.0" encoding="utf-8" ?>  <configuration>
    <property name="logstash.host" value="服务器地址"/>
    <property name="logstash.port" value="9601"/>
    <contextName>springcloud</contextName>
​
​
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout clas="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %date %level [%thread] %logger{36} [%file : %line] %msg%n
            </pattern>
        </layout>
    </appender>
​
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logging.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
        </rollingPolicy>
        <!--&lt;!&ndash;过滤输出到日志文件的日志内容&ndash;&gt;
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>
                &lt;!&ndash;只配置这个还是会输出ERROR等级的日志,因为error level > info level;拦截的是>=info等级的内容&ndash;&gt;
                INFO
            </level>
        </filter>-->
​
        <!--要用下面这种方式才能过滤输出到日志文件的ERROR信息,类似switch case,onMatch和onMisMatch中的指令在LevelFilter类的FilterReply中可以看到-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <!--匹配到上面level的ERROR等级日志时,禁止输出到日志文件中-->
            <onMatch>DENY</onMatch>
            <!--匹配到上面的ERROR日志时,输出到日志文件中,(还有一个指令NEUTRAL,代表当前这条策略不做操作,让下一条策略去匹配)-->
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %date %level [%thread] %logger{36} [%file : %line] %msg%n
            </pattern>
        </encoder>
        <!--滚动策略,按照时间滚动-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径要先去建好,不然会报错,linux/Mac下要给予可写权限,sudo chmod -R 777 /var/log/tomcat
            windows 类似,D:\log\tomcat-->
            <fileNamePattern>
                <!--在文件名中带上时间,配置完后要在下面root level中指定这个配置-->
                D:\tomcat\info.%d.log
            </fileNamePattern>
        </rollingPolicy>
    </appender>
​
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logging.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
        </rollingPolicy>
        <!--过滤输出到日志文件的日志内容-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>
                ERROR
            </level>
        </filter>
        <encoder>
            <pattern>
                %date %level [%thread] %logger{36} [%file : %line] %msg%n
            </pattern>
        </encoder>
        <!--滚动策略,按照时间滚动,每天创建一个文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径要先去建好,不然会报错,linux/Mac下要给予可写权限,sudo chmod -R 777 /var/log/tomcat
            windows 类似,D:\log\tomcat-->
            <fileNamePattern>
                <!--在文件名中带上时间,配置完后要在下面root level中指定这个配置-->
                D:\tomcat\error.%d.log
            </fileNamePattern>
        </rollingPolicy>
    </appender>
​
​
​
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!-- <destination>${logstash.host}:${logstash.port}</destination>-->
        <remoteHost>${logstash.host}</remoteHost>
        <port>${logstash.port}</port>
<!--        这个值只能配置2的N次幂(2,4,8,16...),默认8192,单位是B-->
        <queueSize>1048576</queueSize>
​
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
         <!-正常应该是error级别,但为了看到效果 设为info-->
            <level>INFO</level>
            <!--匹配到上面level的ERROR等级日志时,禁止输出到日志文件中-->
            <onMatch>ACCEPT</onMatch>
            <!--匹配到上面的ERROR日志时,输出到日志文件中,(还有一个指令NEUTRAL,代表当前这条策略不做操作,让下一条策略去匹配)-->
            <onMismatch>DENY</onMismatch>
        </filter>
​
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        "severity":"%level",
                        "service": "%contextName",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "rest": "%message->%ex{full}"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>
​
    <!--root代表整个项目的日志等级-->
    <root level="info">
        <!--上面配置的appender中的name-->
        <appender-ref ref="consoleLog"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
        <appender-ref ref="LOGSTASH"/>
    </root>
</configuration>

3.启动项目

  1. 查看结果

使用logstash将项目的日志存储到Elasticsearch中(详细!新手避坑点!)

linux中logstash中打印如下信息,即为成功。文章来源地址https://www.toymoban.com/news/detail-443377.html

到了这里,关于使用logstash将项目的日志存储到Elasticsearch中(详细!新手避坑点!)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch + Logstash + Kibana 日志分析系统搭建

    Elasticsearch、Logstash 和 Kibana 组成了一个开源的日志分析系统简称 ELK Stack。 Elasticsearch: 一个基于 Lucene 的搜索引擎,可以快速存储、检索和分析大量数据 Logstash: 一个日志收集和处理工具,可以将来自不同来源的数据收集到 Elasticsearch 中 Kibana: 一个数据可视化平台,可以实时地

    2024年02月08日
    浏览(43)
  • ELK(Elasticsearch+Logstash+Kibana)日志分析系统

    目录 前言 一、ELK日志分析系统概述 1、三大组件工具介绍 1.1 Elasticsearch 1.1.1 Elasticsearch概念 1.1.2 关系型数据库和ElasticSearch中的对应关系 1.1.3 Elasticsearch提供的操作命令 1.2 Logstash 1.2.1 Logstash概念 1.2.2 Logstash的主要组件 1.2.3 Logstash主机分类 1.2.4 Logstash工作过程 1.3 Kiabana 2、

    2024年04月25日
    浏览(46)
  • ELK日志平台(elasticsearch+logstash+kibana)搭建

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 为了实现分布式日志数据统一收集,实现集中式查询和管理 故障排查 安全信息和事件管理 ELK 是三个开源项目的首字母缩写,这三个项目分别是: Elasticsearch 、 Logstash 和 Kibana 。 • Elasticsearch 是一个搜索

    2024年02月03日
    浏览(45)
  • 日志系统一(elasticsearch+filebeat+logstash+kibana)

    目录 一、es集群部署 安装java环境 部署es集群 安装IK分词器插件 二、filebeat安装(docker方式) 三、logstash部署 四、kibana部署 背景:因业务需求需要将nginx、java、ingress日志进行收集。 架构:filebeat+logstash+es+kibana 服务器规划: 192.168.7.250(es) 192.168.6.216(filebeat,es) 192.168.7

    2024年02月03日
    浏览(43)
  • elk(elasticsearch+logstash+kibana)搭建日志监控平台

    目录 elk架构原理 安装部署elasticsearch 什么是elasticsearch 创建elasticserch docker容器  安装部署kibana 什么是Kinana 创建Kibana docker容器         拉取镜像         创建配置文件:D:Programsdockerkibanakibana.yml          创建并运行kibana容器         验证登录kibana 安装部署logstash 什么

    2024年02月04日
    浏览(63)
  • ELK企业级日志分析系统(elasticsearch+logstash+kibana)

    目录 一.ELK概述 1.定义 (1)ElasticSearch (2)Kiabana (3)Logstash (4)Filebeat 2.filebeat结合logstash带来好处 3.为什么要是用ELK? 4.完整日志系统基本特征 5.ELK 的工作原理 二.部署ELK 1.环境配置 2.ELK集群部署(node1、node2) 3.部署 Elasticsearch 软件 4.安装Elasticsearch-head 插件 (1)编译安

    2024年04月22日
    浏览(59)
  • ELK【elasticsearch+logstash+kibana】企业级日志分析系统

    ELK平台是一套完整的日志集中处理解决方案,将 elasticsearch、logstash 和 kiabana 三个开源工具配合使用,完成更加强大的用户对日志的查询、排序、统计需求。 ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。 Elasticsearch 是用

    2024年02月08日
    浏览(48)
  • Elasticsearch系列组件:Logstash强大的日志管理和数据分析工具

    Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎,设计用于云计算环境中,能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性,可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个全文搜索引擎,它还提供了分布

    2024年02月08日
    浏览(43)
  • ElasticSearch+Kibana+Logstash实现日志可视化运维监控

    1.目标 1.安装ElasticSearch 2.安装Kibana 3.安装Logstash采集/var/log/messages日志内容 4.图表化展示日志监控结果 2.版本 这三者的版本号要完全一样 ElasticSearch 6.1.1 Kibana 6.1.1 Logstash 6.1.1 Jdk1.8.0_181 3.安装ElasticSearch 安装包:https://cloud.189.cn/t/zuQz6v2YZRVb (访问码:6sbf) 下载网站:https://www.elast

    2024年02月10日
    浏览(54)
  • Filebeat ➕ Logstash 将日志文件输出到 Elasticsearch 或 Amazon S3

    filebeat是什么 Filebeat 是一个开源的轻量级日志数据收集器,由 Elastic 公司开发。它主要用于实时收集、解析和传输日志数据,将日志数据从不同的源头(如文件、日志文件、系统日志等)传输到目标位置(如 Elasticsearch、Logstash 等),以便进行存储、分析和监控。 Filebeat 的主

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包