SpringCloud微服务总结2 ELK日志监控搭建

程序运行避免不了出错,测试环境时我们可以通过打断点定位问题。但是上线之后的项目出bug,进行定位时就需要查看日志。spring cloud进行分布式部署后会有多个微服务,每个微服务都会产生日志,怎么进行日志分类,按条件索引想要看到的报错内容呢?现在流行的日志监控系统ELK完美解决这个问题。本文整理了ELK单机版在Linux系统进行搭建,以及springboot将日志关联到ELK系统。

ELK是由三个工具整合的日志系统(elasticsearch、logstash、kibana)。

Elasticsearch:起到的作用是日志索引,快速根据不同条件找到我们想看到的日志。

Logstash:起到的作用是日志收集,各个微服务将日志关联到logstash。

kibana:起到的作用是可视化UI界面。查看日志总归是有个图形化界面比较好看实用。

 

一 、安装Elasticsearch

  1. 下载,我用的6.4.1版本,新版本没用过,也没了解有啥变化,还是稳重求胜比较好。下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-4-1
     
  2. 解压缩:

        tar -zxvf elasticsearch-6.4.1.tar.gz -C /usr/local

            这时,/usr/local目录下就有elasticsearch-6.4.1目录了

       cd /usr/local/ elasticsearch-6.4.1

     3. 编辑配置文件并启动

         vi /config/elasticsearch.yml 修改基本配置(注意的点,:后面跟一个空格。它是yml格式的文件)

         network.host: 192.168.0.85                  单机配置成本机地址即可

         http.port: 9200                                             端口默认9200

         这时就配置完成,但是它不允许root运行,所以我们新建个帐号来运行它

         useradd elk

         passwd elk

        输入俩次密码 回到上级目录并更改elasticsearch的拥有者:

        chown -R elk elasticsearch-6.4.1

        这时切换到elk用户,执行

        su elk

       命令完成切换

       cd elasticsearch-6.4.1

       后台运行它,并将启动日志输入

       nohup ./bin/elasticsearch &

       查看elasticsearch运行日志命令

       vi nohup.out   查看截至到当前日志

       tailf nohup.out    实时查看运行日志

 

二 、安装Logstash

  1. 下载,我用的6.4.1版本,新版本没用过,也没了解有啥变化,还是稳重求胜比较好。下载地址:https://www.elastic.co/cn/downloads/past-releases/logstash-6-4-1
  2. 解压缩:

         tar -zxvf logstash-6.4.1.tar.gz -C /usr/local

         cd /usr/local/logstash-6.4.1/

     3. 编辑配置文件并启动

          创建一个配置文件

          vi config/logstash.conf    (logstash.conf 名字可自定义)

          以下为logstash中基本配置:

input {
    tcp {
        port => "5044"
        codec => "json"
    }
}

output {
    elasticsearch {
        action => "index"
        hosts => ["192.168.195.201:9200"]
        index => "%{[appname]}"
    }
}

         启动logstash

         nohup ./bin/logstash -f ./config/logstash.conf &

         查看logstash运行日志命令

         vi nohup.out   查看截至到当前日志

         tailf nohup.out    实时查看运行日志

 

三 、安装Kibana

  1. 下载,我用的6.4.1版本,新版本没用过,也没了解有啥变化,还是稳重求胜比较好。下载地址:https://www.elastic.co/cn/downloads/past-releases/kibana-6-4-1
  2. 解压缩:

         tar -zxvf kibana-6.4.1-linux-x86_64.tar.gz -C /usr/local/

     3. 编辑配置文件并启动

         cd /usr/local/kibna-6.4.10linux-x86_64

         vi config/kibana.yml

              下边为kinaka中需要配置的

         server.host: "0.0.0.0"
         elasticsearch.url: "http://192.168.0.85:9200"
         elasticsearch.username: "elastic"
         elasticsearch.password: "changeme"

              启动kibana

              nohup ./bin/kibana &

              查看kibana运行日志命令

              vi nohup.out   查看截至到当前日志

              tailf nohup.out    实时查看运行日志

 

四、springboot中关联Logstash日志

           logback.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true"
    scanPeriod="1 seconds">
    <include
        resource="org/springframework/boot/logging/logback/base.xml" />
    <!-- <jmxConfigurator/> -->
    <contextName>logback</contextName>

    <property name="log.path" value="/home/xxx.log" /> <!--存储日志到服务器路径配置 -->

    <property name="log.pattern"
        value="%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID} --- [%15.15t] %-40.40logger{39} : %m%n" />


    <!--输出到控制台 -->
    <appender name="CONSOLE"
        class="ch.qos.logback.core.ConsoleAppender">
        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>info</level>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <appender name="file"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>

        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <fileNamePattern>info-%d{yyyy-MM-dd}-%i.log
            </fileNamePattern>

            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>10</maxHistory>
        </rollingPolicy>

    </appender>

 <!--下边socket关联logstash -->  

 <appender name="socket"
        class="net.logstash.logback.appender.LogstashSocketAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <host>192.168.0.85</host>
        <port>5044</port>
        <customFields>{"appname":"appname"}</customFields>
    </appender>
    <appender name="LOGSTASH"
        class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.0.85:5044</destination>
        <!-- encoder必须配置,有多种可选 -->
        <encoder charset="UTF-8"
            class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"appname":"appname"}</customFields>
        </encoder>
        <connectionStrategy>
            <roundRobin>
                <connectionTTL>5 minutes</connectionTTL>
            </roundRobin>
        </connectionStrategy>
    </appender>


    <root level="info">
        <!-- <appender-ref ref="file" /> -->
        <appender-ref ref="socket" />
         <appender-ref ref="LOGSTASH" />
    </root>

</configuration>

 

注:此文章仅供参考!!!如有不足之处或合理化建议还请提出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值