计算机系统应用教程网站

网站首页 > 技术文章 正文

为微服务保驾护航-添加ELK可视化日志分析

btikc 2024-10-18 04:50:49 技术文章 6 ℃ 0 评论

为Spring Cloud微服务系统添加ELK+logback可视化日志分析管理工具

一、问题起源

微服务架构中,除了Spring Cloud所需的组件,如网关、Eureka注册中心、配置中心等,还有大量经过业务拆分生成的微服务节点。如何有效地收集汇总各个微服务节点的日志,对于应对微服务架构的复杂性有很大的帮助。

一个良好的微服务日志中心需具备方便查询、可视化展示等特点。

二、技术调研

为此我们进行了深入的技术调研,研究了ElasticSearch、Logstash、Kibana等工具,并结合Docker容器化部署,决定采用logback中添加可视化分析工具,结合ELK对日志可视化展开工作。

Logback这个工具的appender视图如下:



进行了异步的日志记录,DBAppender基于数据库的日志记录

而ELK的日志分析套装图如下:



三、实践之路

ElasticSearch

ElasticSearch是一个开源的分布式的搜索引擎,它负责存储数据,并且提供了许多灵活而实用的Rest API,所以,上层应用可以根据需要去查询数据,使用数据,分析数据。在日志中心,所有的日志数据都存储到ElasticSearch中,借助其强大的搜索能力,可以很灵活地查询日志。

Logstash

Logstash主要用于收集数据,并将数据保存到ElasticSearch中。

Logstash提供许多插件,易于扩展。Logstash收集到数据后,可以做很多处理,最终再将数据输出到ElasticSearch中。在日志中心,它主要负责采集应用的日志。

Kibana

Kibana主要负责读取ElasticSearch中的数据,并进行可视化展示。它还自带Tool,可以方便调用ElasticSearch的Rest API。在日志中心,我们通过Kibana查看日志。

四、环境工具

首先要搭建相关环境,没有采用Docker部署方式,采用了原生的安装方式

(1)官网下载elk安装包

(2)elk依赖java环境,下载jdk

4.1安装及更改配置

  1. 在cd /usr 创建目录 mkdir elk
  2. 由于root用户运行elasticsearch,因此创建一个用户组添加用户

gropuadd elk

useradd elk -g elk -p elk

cd /usr

chown -R elk:elk /elk(给elk用户赋权)

3.解压elasticsearch,配置yml

cd /usr/elk/elasticsearch/config

vi elasticsearch.yml

---------------------------------

注释放开:

node.name: dashan

network.host: 0.0.0.0

http.port: 9200

node.name: dashan

cluster.initial_master_nodes: ["dashan"]

4.切换elk用户 运行elasticsearch

su elk

sh elasticsearch &

5.解压kibana 修改配置文件(此处切回root用户: su root)

------------------------------------------------

cd /usr/elk/kibana/config

vi kibana.yml

----------------

server.port: 5601 (端口,后面要跟springboot项目匹配)

server.host: "0.0.0.0"

elasticsearch.hosts: ["http://localhost:9200"] (匹配elasticsearch路径)

kibana.index: ".kibana"

i18n.locale: "zh-CN"(国际化)

6.切换elk用户 运行kibana ,访问http://域名:5601

cd /usr/elk/kibana/bin

sh kibana &



7.解压logstash 更改配置 启动(切回root)

cd /usr/elk/bin

在bin目录创建文件logstash1.conf,作为启动配置

------------------------------

input {

tcp {

port => 4560

mode => "server"

type => "tcplog"

codec => "json"

}

}


output {

elasticsearch {

action => "index" #The operation on ES

hosts => "localhost:9200" #ElasticSearch host, can be array.

index => "logstash-tcplog-sonhai-%{+YYYY.MM.dd}"

}

}

8.切换elk用户 启动项目

cd /usr/elk/logstash/bin

sh logstash -f logstash1.conf

五、Spring Boot项目加入日志可视化

在Spring Boot项目中添加项目依赖



在resource目录下创建logback.xml







配置说明:

<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">

<param name="Encoding" value="UTF-8"/>

<destination>192.168.1.3:4560</destination>

<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" >

<customFields>{"logstash-tcplog-dashan-%{+YYYY.MM.dd}":"dashanapp"}</customFields>

</encoder>

</appender>

中的<destination> 配置的即时远程的logstash域名及端口4560与logstash自定义的配置文件保持一致

<customFields>作为索引的名称logstash-tcplog-dashan-%{+YYYY.MM.dd} 和上面配置保持一致,后面的值自定义,后面会展示到索引为logstash-tcplog-dashan-%{+YYYY.MM.dd}的后面

5.1编写Spring Boot接口



此时启动应用。通过postman向/test接口发送请求

登陆kibana,即可看到此时日志可以只展示host、service、log三部分内容,有效地减轻了我们使用微服务时日志查看时的工作量




然后就能访问日志了,且可以通过日期字段等条件筛选展示



六、总结

这样各微服务系统都能查看日志了

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表