requirednew基于xml配置日志不回滚_为微服务保驾护航-添加ELK可视化日志分析

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

一、问题起源

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

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

二、技术调研

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

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

23507dcd99dd61da3c7761a38560c76c.png

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

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

550aae8048fce1cf0e57000663263047.png

三、实践之路

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 &

8d70a5e04803a74b51348f8a815ed8c7.png

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项目中添加项目依赖

da78d04a53c19d7a51e4eb561bb3b7d1.png

在resource目录下创建logback.xml

5c27d5a6ce6f73976edf82d9e5b3de00.png
9bd70e266f294c5b9cb3713e49e3d92b.png
3227a8d91fca22296def05bd3bfafbec.png
d82d56a4cf102c8a3a50eae88b807c59.png
5929b63d14034821828661fdc1a83f45.png

配置说明:

192.168.1.3:4560

{"logstash-tcplog-dashan-%{+YYYY.MM.dd}":"dashanapp"}

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

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

5.1编写Spring Boot接口

55b9accff61160d647d0441bea968999.png

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

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

7e7df27f147f4285fafca3d71f0e5fbb.png
6ef89fa20d20be8a6247269ea1c9aaeb.png

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

a9bd757dfa35af2208967b027806e7d5.png

六、总结

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值