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了。然后从里面拿到日志的信息。然后去做其他的事情。

结束

最新文章

  1. Leetcode Valid Palindrome
  2. Linux 上从 MySQL 迁移到 MariaDB 的简单步骤
  3. Java 命令行运行参数大全
  4. POJ1118 Lining Up
  5. Codeforces Round 190 div.2 322C 321A Ciel and Robot
  6. Stub和Mock的理解
  7. Ubuntu安装iNOde
  8. Machine Learning - week 4 - 编程练习
  9. linq使用字符串参数排序
  10. 【unix网络编程第三版】阅读笔记(三):基本套接字编程
  11. Elastic Stack之kibana使用
  12. js中字符替换函数String.replace()使用技巧
  13. 使用VSTS的Git进行版本控制(六)——拉取请求
  14. Java知多少(81)框架窗口基础
  15. tensorflow之word2vec_basic代码研究
  16. 区块链 blockchain
  17. 五、K3 WISE 开发插件《K3 Wise 群发短信配置开发(一)之短信平台配置》
  18. linux增加硬盘 磁盘分区格式化及挂载
  19. mysql没有my.ini文件
  20. linux(Centos系统)部署项目(vue+nginx+tomcat)

热门文章

  1. k8s pod节点调度及k8s资源优化
  2. 攻防世界WEB高手进阶之Zhuanxv
  3. Beta冲刺(1/7)——2019.5.22
  4. HDU4091:Zombie’s Treasure Chest (分类-数学)
  5. 6、Python基础语法
  6. render函数之jsx应用
  7. java代码实现文件的下载功能
  8. (实例2) TFT2.0液晶屏幕测试 mega2560
  9. c# NPOI aspx导出数据
  10. (尚019)Vue基于脚手架编写项目