• 基于Centos 7.4 搭建ELK整合SpringBoot日志收集


    基于Centos 7.4搭建es7.12.0+logstash-7.12.0+kibana-7.12.0(ELK)整合SpringBoot日志收集

    注:Skywalking和logstash可共用一个ES,根据实际性能要求判断是否需要独立使用。

    ELK简介:

      ELK是Elasticsearch+Logstash+Kibana简称

    1. Elasticsearch:是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。
    2. Logstash: 简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供了很多功能强大的滤网以满足你的各种应用场景。
    3. Kibana: 是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图标、表格、地图等,kibana能够很轻易的展示高级数据分析与可视化。

      ELK实现的日志采集的核心是,通过 logstash 将应用系统的日志通过 input 收集,然后通过内部整理,通过 output 输出到 Elasticsearch 中,其实就是建立了一个 index,然后 kibana作为可视化平台,将 ES 的index进行输出到平台,通过图表的方式进行展示。

    环境准备:

      JDK: 1.8

      OS: CentOS Linux release 7.4.1708 (Core)

      elasticsearch:7.12.0

      kibana:7.12.0

      logstash:7.12.0

    环境搭建:

      其中 elasticsearch 的搭建可以参考 https://www.cnblogs.com/yizhipanghu/p/14738492.html, 在这里就不介绍了。

      启动 Elasticsearch

    一、安装Kibana

    1、进入安装包路径

    [root@skywalking skywalking]# cd /usr/local/skywalking

    2、解压软件包

    [root@localhost skywalking]# tar -zxvf kibana-7.12.0-linux-x86_64.tar.gz

    3、修改配置文件

    [root@skywalking skywalking]# vim /usr/local/skywalking/kibana-7.12.0-linux-x86_64/config/kibana.yml

    # 服务端口号:
    server.port: 5601

    # 服务IP地址:
    #server.host: "localhost"
    server.host: "10.10.10.10"

    # ES链接地址:
    #elasticsearch.hosts: "localhost"
    elasticsearch.hosts: "http://10.10.10.10:9200"

    # 配置pid文件存储运行Kibana时的进程号,便于用kill -9 `cat /var/run/kibana.pid`来杀进程。
    pid.file: /usr/local/skywalking/kibana-7.12.0-linux-x86_64/run/kibana.pid
    # 配置Kibana的日志输出位置:
    logging.dest: /usr/local/skywalking/kibana-7.12.0-linux-x86_64/kibana-log/kibana.log
    #创建日志文件夹和进程文件夹
    [root@skywalking skywalking]# mkdir -p /usr/local/skywalking/kibana-7.12.0-linux-x86_64/run/
    [root@skywalking skywalking]# mkdir -p /usr/local/skywalking/kibana-7.12.0-linux-x86_64/kibana-log/

    4、开放端口:

    [root@skywalking skywalking]# firewall-cmd --list-ports
    [root@skywalking skywalking]# firewall-cmd --zone=public --add-port=5601/tcp --permanent
    [root@skywalking skywalking]# firewall-cmd --reload

    5、目录赋权限

    [root@skywalking skywalking]# chown -R es:es /usr/local/skywalking/kibana-7.12.0-linux-x86_64

    6、启动

    [root@skywalking skywalking]# cd /usr/local/skywalking/kibana-7.12.0-linux-x86_64/bin/
    [root@skywalking bin]# su es
    [es@skywalking bin]$ nohup ./kibana &
    
    #在后台不输出日志方式运行
    [es@skywalking bin]$ nohup ./kibana > /dev/null 2>&1 &

    7、访问kibana页面

    http://10.10.10.10:5601

    二、安装logstash

    1、进入安装包路径

    [root@skywalking skywalking]# cd /usr/local/skywalking
    [root@skywalking skywalking]# ll
    drwxrwxr-x. 11 1001 1002       185 4月  30 17:05 apache-skywalking-apm-bin-es7
    -rw-r--r--.  1 root root 184816700 4月  30 16:59 apache-skywalking-apm-es7-8.5.0.tar.gz
    drwxr-xr-x. 10 es   es         167 4月  30 15:10 elasticsearch-7.12.0
    -rw-r--r--.  1 root root 327497331 4月  30 15:03 elasticsearch-7.12.0-linux-x86_64.tar.gz
    drwxr-xr-x. 12 es   es         239 4月  30 15:49 kibana-7.12.0-linux-x86_64
    -rw-r--r--.  1 root root 281022115 4月  30 15:04 kibana-7.12.0-linux-x86_64.tar.gz
    -rw-r--r--.  1 root root 368429061 5月   8 14:42 logstash-7.12.0-linux-x86_64.tar.gz
    [root@skywalking skywalking]#

    2、解压软件包

    [root@localhost skywalking]# tar -zxvf logstash-7.12.0-linux-x86_64.tar.gz

    3、在config文件夹下添加 test.conf 文件,内容如下:

    [root@skywalking skywalking]# cat logstash-7.12.0/config/test.conf
    input{
            tcp {
                    mode => "server"
                    host => "10.10.10.10"   ##监听发送日志的主机地址
                    port => 9061            #logstash服务端口,进行采集的端口
                    codec => json_lines     #解码器,有的版本需单独安装
            }
    }
    output{
            elasticsearch{
                    hosts=>["10.10.10.10:9200"]    #ES地址和端口
                    index => "springboot-%{project}-%{+YYYY.MM.dd}"       #在ES生成的索引名称,%{project}为获取微服务logback-spring.xml中配置的project的值
                    }
            stdout{codec => rubydebug}
    }
    [root@skywalking skywalking]#

    4、启动logstash

    [root@skywalking skywalking]# cd logstash-7.12.0/
    [root@skywalking logstash-7.12.0]# ./logstash -f  ../config/test.conf

    5、Spring boot微服务中添加依赖

    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>6.0</version>
    </dependency>

    6、在resources下添加logback-spring.xml   只需把下面ip地址和project修改一下即可,(添加了skywalking的tract)

    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration>
        <!-- ELK日志, 发送至 appender -->
        <appender name="log-logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
            <!-- logstash地址和端口 -->
            <destination>10.10.10.1:9061</destination>
            <!-- encoder必须配置,有多种可选 -->
            <encoder class="net.logstash.logback.encoder.LogstashEncoder">
                <!-- skywalking插件, log加tid -->
                <provider class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.logstash.TraceIdJsonProvider" />
                <customFields>{"project":"iservice"}</customFields>
            </encoder>
        </appender>
    
        <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
        <property name="LOG_HOME" value="/home" />
    
        <appender name="eventFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!-- rollover daily -->
                <fileNamePattern>${LOG_HOME}/log/iservice-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
                <maxFileSize>10MB</maxFileSize>
                <maxHistory>30</maxHistory>
                <totalSizeCap>50GB</totalSizeCap>
            </rollingPolicy>
            <encoder>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>
                <charset>UTF-8</charset>
            </encoder>
        </appender>
    
        <!-- root级别   INFO -->
        <root level="INFO">
        <!-- logstash输出 -->
        <appender-ref ref="log-logstash"/>
        <appender-ref ref="eventFile" />
        </root>
    </configuration>

    7、application.properties 修改配置:

    logging.config = classpath:logback-spring.xml

    8.然后启动springboot ,在对应的controller 里面打印一些日志,然后就可以看到启动 Logstash 的 控制台有所输出,就可以了。

    9.登录kibana http://10.10.10.1:5601/ ,点击导航栏 monitoring 模块 --->  点击 Indices :增加索引,查看日志就可以了

     

    logstash配置文件详解:https://blog.csdn.net/weixin_41436549/article/details/82222344

    logback-spring详细介绍:https://www.cnblogs.com/mahoshojo/p/12920473.html

    配置参考:https://www.cnblogs.com/xiaoyao-001/p/13273198.html

    logback配置详解:https://blog.csdn.net/weixin_43944305/article/details/103794594

    logback使用详解:https://blog.csdn.net/lhl1124281072/article/details/79852582

    logback日志级别配合nacos使用:https://blog.csdn.net/DPnice/article/details/94650402

    springboot日志输出到logstash:https://www.jianshu.com/p/869093fe0246?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    springtboot集成skywalking日志:http://javadaily.cn/articles/2020/04/01/1585670887771.html

     logback日志配置SizeAndTimeBasedRollingPolicy文件大小分割不生效问题:https://blog.csdn.net/mathlpz126/article/details/107344123

    日志不删除问题:https://blog.csdn.net/zt011052/article/details/117444173?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

    Logback配置文件自定义配置从Nacos动态获取+ELK:https://blog.csdn.net/DPnice/article/details/94650402

  • 相关阅读:
    cocos2d-x学习记录5——CCTransition场景过渡
    cocos2d-x学习记录4——图形绘制
    cocos2d-x学习记录3——CCTouch触摸响应
    cocos2d-x学习记录2——CCAction动作
    cocos2d-x学习记录1——图片显示
    cocos2d-x环境搭建
    自定义CCNode
    cocos2d-x调度器原理
    cocos2d-x动作原理
    cocos2d-x触摸分发器原理
  • 原文地址:https://www.cnblogs.com/yizhipanghu/p/14750175.html
Copyright © 2020-2023  润新知