开启生长之旅!这是我参加「日新计划 12 月更文应战」的第4天,点击检查活动概况

之前写了两篇ELK在docker以及windows中的开发环境搭建步骤,今天来一篇在linux中搭建开发环境的步骤。

下载elk

下载地址

官网、华为镜像、elastic中文社区

网上有的教程挑选去一些镜像网站下载,我这儿用的是WSL的ubuntu 18.04,就直接经过windows访问的eastic中文社区,复制下载地址下载的。

ELK监控spring-boot日志环境搭建-Linux

然后直接在终端中履行:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.2-linux-x86_64.tar.gz 其中的衔接地址就是从网页上复制的。

桌面版的可按照上述方法或许其余的方法别离下载好elasticsearch、kibana、logstash。

也能够直接履行下面的指令下载7.15.2版别。

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.15.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.15.2-linux-x86_64.tar.gz

下载完毕之后别离解压:

ELK监控spring-boot日志环境搭建-Linux

运转es的用户

  1. 创立运转es的用户。

    root用户操作必选,非root用户可选。

    elasticsearch为了安全考虑,不能用root用户运转,所以需求创立一个一般的用户,用一般的用户来运转。我这儿创立一个es 用户为例。

    ELK监控spring-boot日志环境搭建-Linux

    将下面的指令中的<elasticsearch path> 换成你的elasticsearch的磁盘路径,将它的权限赋予给es用户(你的用户不是es就需求换成你创立的用户名)。

    sudo chown -R es <elasticsearch path>
    

    别离将kibana以及logstash的权限也赋予es用户

    然后切换到es用户,下面的操作用es用户进行。

    su es
    
  2. 非root用户,对用户以及相关权限办理要求不那么高的,就能够直接运转,越过创立用户这一步骤

    我用的不是root用户操作,直接就能够跑起来的。当然首要需求检查承认一下你当时登录的用户有这个文件的履行权限。

    检查文件的权限

    ELK监控spring-boot日志环境搭建-Linux

布置Elasticsearch

装备

修正.../elasticsearch-7.15.2/config/elasticsearch.yml (前面的... 代表你的磁盘存放路径,下文中的也是相同含义)文件:

path.logs: /home/spy/elastic-stack/elasticsearch-7.15.2/logs
path.data: /home/spy/elastic-stack/elasticsearch-7.15.2/data

这儿装备了日志以及数据的路径,端口假如有冲突的就需求自己额定装备,默许是9200。

发动

履行.../elasticsearch-7.15.2/bin/elasticsearch 文件,日志信息只要没有error等级的报错,就问题不大,没有日志刷新后就代表发动成功了。

发动成功后访问:http://localhost:9200 ,呈现下面的界面就代表布置成功。

ELK监控spring-boot日志环境搭建-Linux

布置Kibana

装备(可选)

修正.../kibana-7.15.2-linux-x86_64/config/kibana.yml 文件,按照下面代码片段进行装备中文。

# Supported languages are the following: English - en , by default , Chinese - zh-CN .
i18n.locale: "zh-CN"

elasticsearch默许的端口号是9200,kibana中默许装备的elasticsearch实例为下图所示,所以假如你的elasticsearch的端口或许ip(不是布置在同一台机器上)与之不符,就需求自己依据实际的ip端口来进行装备。

ELK监控spring-boot日志环境搭建-Linux

发动

履行.../kibana-7.15.2-linux-x86_64/bin/kibana 文件发动kibana,相同的,发动过程中只要没有error等级的报错,就不影响。

发动成功之后访问:http://localhost:5601 ,呈现下面的界面就代表布置成功。

ELK监控spring-boot日志环境搭建-Linux

布置Logstash

装备

  1. 装备pinple

    logstash发动必须要有pinple的装备才干正常发动,默许有一个.../logstash-7.15.2/config/logstash-sample.conf 的装备文件,你能够依据这个进行修正,我这儿挑选的是额定创立一个目录来存放conf装备文件。

    如下图创立一个conf文件夹。

    ELK监控spring-boot日志环境搭建-Linux

    在conf文件夹下新建my-logstash.conf并修正文件内容如下

    input {
      tcp {
        port => 4560
        codec => json_lines
        ssl_enable => false
      }
    }
    output {
      elasticsearch {
        hosts => ["http://localhost:9200"]
        index => "app-%{+YYYY.MM.dd}-log"
      }
      stdout{
        codec=>rubydebug
      }
    }
    

    上面的代码片段装备了一个tcp的4560端口来监听日志输入,然后将其输出到装备的elasticsearch 实例以及控制台。elasticsearch 实例里边的index装备了日志推送到elasticsearch 之后存放的索引

  2. 装备logstash.yml文件中的conf文件路径装备项

    修正.../logstash-7.15.2/config/logstash.yml 文件,在文件末尾增加或许修正其被注释的装备项,装备的值若运用的默许的conf文件就填写默许的conf文件路径,若自己新建文件夹存放了conf装备文件的就能够参阅下面进行装备,可是留意将logstash-7.15.2之前的磁盘路径换成你自己的。

    path.config: /home/spy/elastic-stack/logstash-7.15.2/conf/*.conf
    
  3. 装备spring boot程序

    能够新建一个spring boot程序,也能够在现有的程序装备

    pom.xml增加依靠:

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

    logback-spring.xml:其中logstash相关的<appender>以及<appender-ref> 标签中的内容是增加的。

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 当scan特点设置为true时, 装备文件假如发生改变, 将会被从头加载, 默许值为true -->
    <configuration scan="true">
      <!-- 界说日志文件的存储地址 -->
      <property name="LOG_PATH" value="./log"></property>
      <!-- 打印在控制台的日志 -->
      <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
          <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger.%method(%F:%L):%msg%n</pattern>
          <charset>UTF-8</charset>
        </encoder>
      </appender>
      <!-- logstash,将日志推送到logstash -->
      <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>172.24.56.231:4560</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
      </appender>
      <!-- 总环境日志装备 -->
      <root level="info">
        <appender-ref ref="LOGSTASH"/>
        <appender-ref ref="CONSOLE" />
      </root>
    </configuration>
    

发动

履行.../logstash-7.15.2/bin/logstash 脚本文件

ELK监控spring-boot日志环境搭建-Linux

发动报错了,处理报错过程

上图是发动成功了的,可是spring boot程序报错了(报错时上面的logback-spring.xml文件中destination标签装备的ip为localhost,现在改为详细的ip是报错的处理办法):

ELK监控spring-boot日志环境搭建-Linux

我的是在WSL里边弄了个Ubuntu18.04来弄的,elasticsearch以及kibana都能够经过localhost成功访问,外部Windows外部也能telnet成功:localhost 4560 ,telnet成功之后还能从键盘捕获输入推送到lostash。

ELK监控spring-boot日志环境搭建-Linux

ELK监控spring-boot日志环境搭建-Linux

ELK监控spring-boot日志环境搭建-Linux

上面的操作截图让我认为我的网络是没有问题的,在WSL中跑程序访问也从没用过分配的虚拟ip,都是直接运用的localhost。后来是在虚拟机里边从头弄了一次,需求装备host,才灵光一闪猜想有或许WSL也是需求装备一下虚拟的ip,所以就回头看了下我WSL的ip,将logstash暴露的http api host装备成172.24.56.231试一下。

ELK监控spring-boot日志环境搭建-Linux

再次修正.../logstash-7.15.2/config/logstash.yml 文件,装备地址为eth0的ip地址。

ELK监控spring-boot日志环境搭建-Linux

然后spring boot对应的logback装备也修正过来,发动成功,那个衔接拒绝的报错消失

ELK监控spring-boot日志环境搭建-Linux

logstash控制台也能看到抓取的日志了。

ELK监控spring-boot日志环境搭建-Linux

去kibana检查一下,日志现已过来了。

ELK监控spring-boot日志环境搭建-Linux

检查索引日志

在kibana的网页中点击索引形式,创立一个索引形式,依据我们推送的索引名,编写一个能匹配的名称,挑选一下时间戳字段,然后保存。

ELK监控spring-boot日志环境搭建-Linux

然后就能够依据条件进行搜索日志了

ELK监控spring-boot日志环境搭建-Linux

成功!