Spring cloud微服务安全实战-7-10ELK日志采集架构优化

时间:2019-12-10 00:59:33   收藏:0   阅读:142

ELK搭建起来。采集日志,展示。但是这个架构还有一些问题。

可用性的问题,springboot的应用,随着业务的增长会越来越多。logstash压力就会越来越大。大到一定的程度可能就会吧logstash压崩掉,日志就丢失。
日志信息的传播分享问题。走了ELK的架构,别的系统是不知道你写了什么日志的。比如说我有一个大数据实时分析的应用,spark之类的。他们需要实时的分析你在线的所有日志。比如说日志出现某个关键字的时候,我就报警,比如登陆日志发现有风险的用户登陆的时候,我要观察有风险的用户做了什么。
就是需要别的系统也知道整个应用这边发生的日志信息是什么。现在这个架构没法把日志信息传播出去提供给别人的。

中间价一个kafka。kafka是一个消息队列。我们所有的springboot的应用把日志发到kafka上。logstash从kafka读日志。就算你的日志再多,也指挥子在kafka这里堆积。logstash根据自己的处理能力,最大的处理能力有多少,一次就处理多少日志。这样引用不管怎么增长 都不会把kafka压死。kafka的性能好 吞吐量大。
技术分享图片
有了kafka,日志在消息队列里面,有其他的应用,比如说在线分析或者是监控报警。我们可以接到kafka上去订阅那个日志的topic。其他系统也都能拿到日志的消息。他们就可以根据这些消息做其他的业务。这样日志处理的链路,才算一个比较成熟的链路。

kafka环境安装

技术分享图片

把这个项目克隆到本地
技术分享图片

技术分享图片
我们真正要用的是这个文件。默认的docker-compose.yml会搭一个多接点的集群。我们这里用这个单节点的。docker-compose-single-broker.yml
技术分享图片

注意这两个节点。ip要改成自己机器的ip
技术分享图片
Kakfa_Create_topics:默认创建出来的队列。创建一个叫做test的队列。1个分区 1个复制。

启动docker

-f是指定一个配置文件。
技术分享图片

技术分享图片

logstash要改一下从kafka里面拿消息。springboot也要改,把消息送到kafka里面

logstash的修改。

原来我们从tcp的5千端口来输入。就是接受进来的日志信息的。
技术分享图片
上面注释掉。改成下面的kafka的
id随便写,
bootstrap_servers:kafka的服务器在哪。
topics:就是从哪个topics里面接收日志信息。
auto_offset_reset:偏移量的设置,latest
技术分享图片

kafka的地址是在这里配置的。端口是9092
技术分享图片

重启ELK
技术分享图片

orderAPI修改

要把日志发送到kafka的队列里面去。
首先pom.xml内加一个新的依赖。

技术分享图片


技术分享图片
技术分享图片

之前我们加的LogStash的appender。直接把日志发给logStash
技术分享图片
现在要修改发送到kafka上
我们重写appender
技术分享图片
主键分区策略。
技术分享图片
使用NoKey的策略
技术分享图片

当你的kafka不可用的时候,不可达的时候,如何交互你的消息。 选择的是AsynchronousDeliveryStrategy。意思就是消息不可用的时候,消息就不给kafka了
技术分享图片
kafka不可用 日志就输出到console里。
技术分享图片
kafka的服务地址
技术分享图片

启动测试

启动orderAPi
技术分享图片
技术分享图片
改成info输出到kafka里
技术分享图片

重启orderAPi

打开kibana看一下。最新的一条日志 就是 启动orderAPi的
技术分享图片
orderApi的控制台输出。
技术分享图片

这就说明链路就通了。 日志是通过kafka的消息队列进到ELK里面的。
有了这样一个架构,其他的应用就可以订阅kafka的topics了。然后从里面拿到日志的信息。然后去做其他的事情。

结束



 

原文:https://www.cnblogs.com/wangjunwei/p/12014052.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!