搭建ELK日志系统并集成到Spring Cloud

ELK分别是Elasticsearch、Logstash、Kibana三个开源框架缩写。

下载地址:

Elasticsearch 官网elasticsearch-6.3.0.tar elasticsearch官方文档
Kibana 官网kibana-6.3.0下载 linux64位 kibana官方文档
Logstash 官网logstash-6.3.0.tar logstash官方文档
Filebeat 官网filebeat-6.3.0 linux64位 beats官方文档

下面是我分享的百度云地址下载:

链接:https://pan.baidu.com/s/1SqicOuvKuzfSjAz-xKb3_g 
提取码:uuwc

 

1、下载好了以后我们将压缩包上传到linux的home目录下,我的是阿里云的centos7

cd /home
rz

如果没有rz的同伴也可以通过xftp上传文件

2、上传完毕,使用tar命令解压:

tar -zxvf elasticsearch-6.3.0.tar.gz          
tar -zxvf kibana-6.3.0-linux-x86_64.tar.gz
tar -zxvf filebeat-6.3.0-linux-x86_64.tar.gz  
tar -zxvf logstash-6.3.0.tar.gz

3、安装java环境1.8

      教程:https://blog.csdn.net/qq_25652213/article/details/89923127

4、安装elasticsearch

修改配置文件

vi /home/elasticsearch-6.3.0/config/elasticsearch.yml

找到里面的network.host和http.port解开注释

# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0           ##服务器ip 本机
#
# Set a custom port for HTTP:
#
http.port: 9200                 ##服务端口
#
# For more information, consult the network module documentation.
#

elasticsearch启动只允许非root用户,我们建一个用户并且授权启动:

groupadd elsearch         #添加用户组 elsearch 

useradd elsearch -g elsearch -p elasticsearch  
#添加用户 elsearch 密码为 elasticsearch 到用户组 elsearch

chown -R elsearch:elsearch  elasticsearch-6.3.0   
#将elsearch安装目录授权给 用户组:用户  即 elsearch:elsearch

su elsearch  #切换 elsearch 用户
/home/elasticsearch-6.3.0/bin/elasticsearch   #重新启动

常见问题:elasticsearch启动常见问题

启动报错:

ERROR: [2] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

里面出现的四个错误需要我们修改四个conf文件

exit #先退出到root账号

问题1:
    [1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

解决方法:

编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效


问题2:
    [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法:

编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p

问题3:
    [1]: max number of threads [1024] for user [elsearch] is too low, increase to at least [4096]

解决方法:
    切换到root账号:su root 或者 exit
    执行命令:vi /etc/security/limits.d/90-nproc.conf
    修改前:*          soft    nproc     1024
    修改后:*          soft    nproc     4096

问题4:
    [2]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
    
解决方法:
    找到config/elasticsearch.yml文件,末尾加上:
    bootstrap.system_call_filter: false

启动elasticsearch:

/home/elasticsearch-6.3.0/bin/elasticsearch   #命令窗运行
/home/elasticsearch-6.3.0/bin/elasticsearch  -d  #后台线程运行

关闭elasticsearch:

ctrl+c                                   #命令窗关闭

ps -ef | grep elastic                    #后台线程关闭
kill -9 4442                             ##pid 4442为查处线程的pid 

解决后启动正常,访问地址:http://101.201.140.220:9200/(ip更换为自己系统的ip)

成功截图:

5、安装kibana

修改配置文件

vi /home/kibana-6.3.0-linux-x86_64/config/kibana.yml

修改代码:

server.port: 5601       ##服务端口
server.host: "0.0.0.0"  ##服务器ip  本机
 
elasticsearch.url: "http://localhost:9200" ##elasticsearch服务地址 与elasticsearch对应

启动kibana:

/home/kibana-6.3.0-linux-x86_64/bin/kibana       #命令窗启动
nohup ./kibana-6.3.0-linux-x86_64/bin/kibana &   #后台线程启动

关闭kibana:

ctrl+c                                   #命令窗关闭
ps -ef | grep kibana                    #后台线程关闭
kill -9 4525                             ##pid 4525 为查处线程的pid 

访问地址:http://101.201.140.220:5601(ip更换为自己系统的ip)

6、安装logstash

新建配置文件:

vi /home/logstash-6.3.0/config/logback-es.conf

内容(去除多余空格,保持yml文件规范。):

input {
    tcp {  
        port => 9601  
        codec => json_lines         
    }
}
output {
        elasticsearch {
                hosts => "localhost:9200"
        }
        stdout { codec => rubydebug}
}

安装logstash json插件:

/home/logstash-6.3.0/bin/logstash-plugin install logstash-codec-json_lines

启动logstash:

/home/logstash-6.3.0/bin/logstash -f /home/logstash-6.3.0/config/logback-es.conf         ##命令窗形式

nohup /home/logstash-6.3.0/bin/logstash -f /home/logstash-6.3.0/config/logback-es.conf &  ##后台线程形式

关闭logstash:

ctrl+c                                   #命令窗关闭

ps -ef | grep logstash                    #后台线程关闭
kill -9 4617                              ##pid 4617 为查处线程的pid 

7、项目中集成elk

pom文件引入:

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

配置logback.xml文件,放到resources下面

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.99.94:9601</destination>     <!--指定logstash ip:监听端口 tcpAppender  可自己实现如kafka传输等-->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>

    <include resource="org/springframework/boot/logging/logback/base.xml"/>      <!--引用springboot默认配置-->

    <root level="INFO">
        <appender-ref ref="LOGSTASH" />                                           <!--使用上述订阅logstash数据tcp传输 -->
        <appender-ref ref="CONSOLE" />                                            <!--使用springboot默认配置 调试窗口输出-->
    </root>

</configuration>

代码测试:

package com.ys.ribbon;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient //注册服务
public class RibbonProviderApplication {

    private final static Logger logger = LoggerFactory.getLogger(RibbonProviderApplication.class);


    public static void main(String[] args) {
        logger.info("---test---"+"你好,安余生");
        SpringApplication.run(RibbonProviderApplication.class, args);
    }


    @Autowired
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

在linux中查看logstash日志就可以看到有了我们输出的日志信息,但是linux我没有配置中文展示所以乱码,但是并不影响:

我们去kibana页面看一下,可以看到我们的信息已经展示在这里,配置好索引后可以选择生成可视化图例。

elk的搭建使用就到这里了,以后我会将elk的配置和使用梳理写出来。

 

参考博客:https://blog.csdn.net/qq_22211217/article/details/8076456

 

 

posted @ 2020-03-30 19:09  余生大大  阅读(68)  评论(0编辑  收藏  举报