Spring cloud微服务安全实战-7-10ELK日志采集架构优化
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了。然后从里面拿到日志的信息。然后去做其他的事情。
结束
最新文章
- Leetcode Valid Palindrome
- Linux 上从 MySQL 迁移到 MariaDB 的简单步骤
- Java 命令行运行参数大全
- POJ1118 Lining Up
- Codeforces Round 190 div.2 322C 321A Ciel and Robot
- Stub和Mock的理解
- Ubuntu安装iNOde
- Machine Learning - week 4 - 编程练习
- linq使用字符串参数排序
- 【unix网络编程第三版】阅读笔记(三):基本套接字编程
- Elastic Stack之kibana使用
- js中字符替换函数String.replace()使用技巧
- 使用VSTS的Git进行版本控制(六)——拉取请求
- Java知多少(81)框架窗口基础
- tensorflow之word2vec_basic代码研究
- 区块链 blockchain
- 五、K3 WISE 开发插件《K3 Wise 群发短信配置开发(一)之短信平台配置》
- linux增加硬盘 磁盘分区格式化及挂载
- mysql没有my.ini文件
- linux(Centos系统)部署项目(vue+nginx+tomcat)