ELK收集微服务日志学习

1. 资源准备

1.1 版本兼容性

官网地址:https://www.elastic.co/cn/support/matrix#matrix_compatibility
在这里插入图片描述

我使用的都是6.8.3版本

1.2 镜像资源

由于资源下载是外网会比较慢,推荐使用华为云提供的镜像:https://mirrors.huaweicloud.com/
elasticsearch-6.8.3.tar、kibana-6.8.3-linux-x86_64.tar、logstash-6.8.3.tar

1.3 资源规划

系统主机ip部署内容
centso 7.9192.168.40.131elasticsearch+kibana+logstash
centso 7.9192.168.40.133微服务

2. 架构设计

2.1 监听日志

logstash和微服务部署在一起,监听服务日志的输出目录:
在这里插入图片描述

优点:性能高;缺点:占用资源高(logstash非常耗资源)

2.2 推送日志

logstash独立部署,微服务节点通过TCP向logstash发送日志:
在这里插入图片描述

优点:节省资源;缺点:性能受限于网络
本篇要实践也是基于这种架构搭建。

3. 安装elasticsearch

参考我上一篇 Elasticsearch部署

4. 安装Kibana

4.1 上传资源

将之前下载Kibana压缩包上传到服务器上,并解压:

tar -zxvf kibana-6.8.3-linux-x86_64.tar.gz 

4.2 编辑kibana.yml

vim /home/kibana-6.8.3-linux-x86_64/config/kibana.yml
------------------------------------------------------
#开放默认端口号
server.port: 5601
#在服务器中,0.0.0.0指的是本机上的所有IPV4地址
server.host: 0.0.0.0
#elasticsearch地址
elasticsearch.hosts: ["http://192.168.40.131:9200"]
#设置为中文
i18n.locale: "zh-CN"

4.3 开放端口号

#开放5601端口号
firewall-cmd --zone=public --add-port=5601/tcp --permanent
-------------错误信息------------
FirewallD is not running
-------------重启防火墙----------
systemctl start firewalld
--------------重新执行-----------
firewall-cmd --zone=public --add-port=5601/tcp --permanent
#刷新防火墙,使之生效
firewall-cmd --reload
#查看开放端口号
firewall-cmd --list-ports
--------------------------
9200/tcp 5601/tcp

4.4 启动Kibana

#切换到安装目录的bin文件下
./kibana
--------------------------------------------
 log   [09:01:19.969] [warning][reporting] Generating a random key for xpack.reporting.encryptionKey. To prevent pending reports from failing on restart, please set xpack.reporting.encryptionKey in kibana.yml
  log   [09:01:19.998] [info][status][plugin:reporting@6.8.3] Status changed from uninitialized to green - Ready
  log   [09:01:20.089] [info][task_manager] Installing .kibana_task_manager index template version: 6080399.
  log   [09:01:20.146] [info][task_manager] Installed .kibana_task_manager index template: version 6080399 (API version 1)
  log   [09:01:21.247] [info][migrations] Creating index .kibana_1.
  log   [09:01:21.468] [info][migrations] Pointing alias .kibana to .kibana_1.
  log   [09:01:21.507] [info][migrations] Finished in 260ms.
  log   [09:01:21.508] [info][listening] Server running at http://0.0.0.0:5601
  log   [09:01:22.435] [info][status][plugin:spaces@6.8.3] Status changed from yellow to green - Ready
-----------------表示成功-----------------------
#推荐用后台运行方式启动
nohup sh kibana &

在浏览器上输入地址:http://192.168.40.131:5601
在这里插入图片描述

则表示安装部署成功!

5. 安装logstash

5.1 上传资源

tar -zxvf logstash-6.8.3.tar.gz

5.2 创建logstash.conf

vim /home/logstash-6.8.3/bin/logstash.conf
-----------------增加输入、输出规则---------------------
input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4567
    codec => json{
			charset => "UTF-8"
		}
  }
}

output {
  elasticsearch {
    hosts => "http://192.168.40.131:9200"
    index => "%{[appName]}-%{+YYYY.MM.dd}"
	document_type => access
	#关闭模板管理,使用es通过API创建的模板
	manage_template => false
	#es中模板的名称
	template_name => "message"
  }
}

5.3 开放端口号

#开放4567端口号
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=9600/tcp --permanent
#刷新防火墙,使之生效
firewall-cmd --reload
#查看开放端口号
firewall-cmd --list-ports
--------------------------
9200/tcp 5601/tcp 4567/tcp 9600/tcp

5.3 启动logstash

# 切换到bin目录下 后台运行方式启动
nohup logstash -f logstash.conf &

查看logstash是否启动成功:

ps aux | grep 'logstash'

在这里插入图片描述

则说明logstash启动成功 ,至此单机版ELK搭建成功

6. 创建springboot项目

6.1 创建一个简单springboot项目

创建一个简单springboot的web项目,在启动类加上简单日志:

@SpringBootApplication
@Slf4j
public class DemoApplication {
		# 在启动类加上一些简单的日志
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
        log.info("demo启动成功.....");

        log.info("demo输出日志.....");

        log.info("demo输出日志2.....");

        log.info("demo输出日志3.....");

        log.info("demo输出日志4.....");

        log.info("demo输出日志5.....");

        log.info("demo输出日志6.....");
    }

}

6.2 追加logback的依赖

        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>7.2</version> #版本号看你spring-boot版本
        </dependency>

6.3 创建服务yml文件

为了方便测试,创建一个非常简单的配置文件,内容如下:

server:
  port: 8090
spring:
  application:
    name: winter-test
  profiles:
    active: dev

6.4 创建logback-spring.xml

创建一个简单logback.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false" scan="false">
	<springProperty scop="context" name="appName" source="spring.application.name" defaultValue=""/>
	<--LOGSTASH 的日志输出格式 -->    
	<appender name = "LOGSTASH" class ="net.logstash.logback.appender.LogstashAccessTcpSocketAppender">
  			<-- LOGSTASH 服务ip和监听的端口号 -->        
				<destination>192.168.40.131:4567</destination>
        <encoder charset ="UTF-8" class ="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>
                {
                "appName": "${appName}",
                "pid": "-"
                }
            </customFields>
        </encoder>
    </appender>
  	<-- 控制台的日志输出格式 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <!-- 输出日志记录格式 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
  	<-- 加上logback默认的base.xml -->
    <include resource = "org/springframework/boot/logging/logback/base.xml"/>
  	
    <root level="INFO">
        <appender-ref ref="LOGSTASH"/>
        <appender-ref ref="CONSOLE"/>
    </root>

</configuration>

springboot启动时默认读取logback-spring.xml文件 ,则推荐logback文件名为logback-spring.xml

6.5 启动服务

在这里插入图片描述

7. Kibana可视化

7.1 创建索引

在这里插入图片描述

在这里插入图片描述

7.2 查询日志

在这里插入图片描述

至此ELK收集微服务的日志实践成功!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值