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

结束

Spring cloud微服务安全实战-7-10ELK日志采集架构优化的更多相关文章

  1. Spring cloud微服务安全实战-7-9自定义日志采集的格式和内容

    怎么来控制输出的日志的格式.并且从日志里面提取出来我想要的一些信息. 整个的message是一个大的json格式字符串. 虽然是可以通过关键字搜索到.但是日志看起来并不舒服. 在我们的控制台,日志实际 ...

  2. Spring cloud微服务安全实战_汇总

    Spring cloud微服务安全实战 https://coding.imooc.com/class/chapter/379.html#Anchor Spring Cloud微服务安全实战-1-1 课 ...

  3. 《Spring Cloud微服务 入门 实战与进阶》

    很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...

  4. Spring Cloud微服务安全实战_00_前言

    一.前言: 一直以来对服务安全都很感兴趣,所以就学习.这是学习immoc的 jojo老师的 <Spring Cloud微服务安全实战课程>的笔记,讲的很好. 课程简介:  二.最终形成的架 ...

  5. Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器

    上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后, ...

  6. Spring Cloud微服务安全实战_4-3_订单微服务&价格微服务

    实现一个场景: 订单微服务: POM: <?xml version="1.0" encoding="UTF-8"?> <project xml ...

  7. Spring cloud微服务安全实战 最新完整教程

    课程资料获取链接:点击这里 采用流行的微服务架构开发,应用程序访问安全将会面临更多更复杂的挑战,尤其是开发者最关心的三大问题:认证授权.可用性.可视化.本课程从简单的API安全入手,过渡到复杂的微服务 ...

  8. Spring cloud微服务安全实战-6-8sentinel限流实战

    阿里2018年开源的. 简单来说就是干三件事,最终的结果就是保证你的服务可用,不会崩掉.保证服务高可用. 流控 先从最简单的场景来入手. 1.引用一个依赖, 2,声明一个资源. 3.声明一个规则 注意 ...

  9. Spring cloud微服务安全实战-6-4权限控制改造

    授权,权限的控制 令牌里的scope包含fly就有权限访问.根据Oauth的scope来做权限控制, 要让@PreAuthorize生效,就要在启动类里面写一个注解. 里面有一个属性叫做,就是在方法的 ...

  10. Spring cloud微服务安全实战-6-2JWT认证之认证服务改造

    首先来解决认证的问题. 1.效率低,每次认证都要去认证服务器调一次服务. 2.传递用户身份,在请求头里面, 3.服务之间传递请求头比较麻烦. jwt令牌. spring提供了工具,帮你在微服务之间传递 ...

随机推荐

  1. 计算机网络基础之TCP/IP 协议栈

    计算机网络基础之TCP/IP 协议栈 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP/IP 协议栈概述 1>.什么是TCP/IP协议栈 Transmission C ...

  2. Pthon魔术方法(Magic Methods)-bool

    Pthon魔术方法(Magic Methods)-bool 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.bool方法 __bool__: 内建函数bool(),或者对象放在逻 ...

  3. k8s包管理工具helm - 介绍和安装

    目录 1.Kubernetes 应用部署的挑战 2.Helm 是什么 3.Helm 组件及相关术语 4.Helm 工作原理 5.Helm 安装 5.1 客户端安装 5.2 安装服务端 Tiller 5 ...

  4. NUCLEO-8L152开发板中文应用笔记整理集合

    [AN5182]基于Adafruit TFT Shield与STM8 Nucleo-64板的图片查看器:https://www.yiboard.com/thread-962-1-1.html 本应用笔 ...

  5. python2和python3切换

    (1)需要将python2和python3的环境变量设置好 (2)重命名主程序 然后我们分别把两个版本的 Python 主程序 exe 改下名,3.6 版本的改名为 python3.exe,2.7 版 ...

  6. windows查看文件MD5值的命令

    今天需要,就记录一下. certutil -hashfile filename MD5 certutil -hashfile filename SHA1 certutil -hashfile file ...

  7. 题解 洛谷P1236 【算24点】

    不得不说,个人认为许多大佬们把程序想复杂了,所以码量很长,但是实际上这题并不要这么复杂... 可以考虑用一个\(dfs\)维护一个状态\(f(n)[a_1,a_2--a_n]\) 接下来我们暴力枚举两 ...

  8. react编写规范之组件组件的内容编写顺序

    static 开头的类属性,如 defaultProps.propTypes. 构造函数,constructor. getter/setter(还不了解的同学可以暂时忽略). 组件生命周期. _ 开头 ...

  9. 堆内存腐败异常(STATUS_HEAP_CORRUPTION---0xC0000374)

    什么是内存腐败 当堆内存位置的内容由于编程行为而被修改,超出了原始程序构造的意图时,计算机程序就会发生内存腐败,也可以叫内存破坏:这被称为违反内存安全.内存腐败的最可能原因是编程错误.当腐败的内存内容 ...

  10. rpm 简单 package 创建demo

    安装的工具 yum install -y rpmdevtools 准备环境 主要是初始化,会自动创建rpm 包构建需要的目录 rpmdev-setuptree 编写简单的spec cd ~/rpmbu ...