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了。然后从里面拿到日志的信息。然后去做其他的事情。
结束
Spring cloud微服务安全实战-7-10ELK日志采集架构优化的更多相关文章
- Spring cloud微服务安全实战-7-9自定义日志采集的格式和内容
怎么来控制输出的日志的格式.并且从日志里面提取出来我想要的一些信息. 整个的message是一个大的json格式字符串. 虽然是可以通过关键字搜索到.但是日志看起来并不舒服. 在我们的控制台,日志实际 ...
- Spring cloud微服务安全实战_汇总
Spring cloud微服务安全实战 https://coding.imooc.com/class/chapter/379.html#Anchor Spring Cloud微服务安全实战-1-1 课 ...
- 《Spring Cloud微服务 入门 实战与进阶》
很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...
- Spring Cloud微服务安全实战_00_前言
一.前言: 一直以来对服务安全都很感兴趣,所以就学习.这是学习immoc的 jojo老师的 <Spring Cloud微服务安全实战课程>的笔记,讲的很好. 课程简介: 二.最终形成的架 ...
- Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器
上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后, ...
- Spring Cloud微服务安全实战_4-3_订单微服务&价格微服务
实现一个场景: 订单微服务: POM: <?xml version="1.0" encoding="UTF-8"?> <project xml ...
- Spring cloud微服务安全实战 最新完整教程
课程资料获取链接:点击这里 采用流行的微服务架构开发,应用程序访问安全将会面临更多更复杂的挑战,尤其是开发者最关心的三大问题:认证授权.可用性.可视化.本课程从简单的API安全入手,过渡到复杂的微服务 ...
- Spring cloud微服务安全实战-6-8sentinel限流实战
阿里2018年开源的. 简单来说就是干三件事,最终的结果就是保证你的服务可用,不会崩掉.保证服务高可用. 流控 先从最简单的场景来入手. 1.引用一个依赖, 2,声明一个资源. 3.声明一个规则 注意 ...
- Spring cloud微服务安全实战-6-4权限控制改造
授权,权限的控制 令牌里的scope包含fly就有权限访问.根据Oauth的scope来做权限控制, 要让@PreAuthorize生效,就要在启动类里面写一个注解. 里面有一个属性叫做,就是在方法的 ...
- Spring cloud微服务安全实战-6-2JWT认证之认证服务改造
首先来解决认证的问题. 1.效率低,每次认证都要去认证服务器调一次服务. 2.传递用户身份,在请求头里面, 3.服务之间传递请求头比较麻烦. jwt令牌. spring提供了工具,帮你在微服务之间传递 ...
随机推荐
- svn 没有killall命令的解决方法 -bash: killall: command not found
debian.ubuntu系统下: apt-get install psmisc centos 下: yum install psmisc
- Alpha2的项目互评互测
目录 @(Alpha2项目测试) 这个作业属于哪个课程 课程链接 这个作业要求在哪里 作业要求的链接 团队名称 你的代码我的发 这个作业的目标 其他参考文献 软件测试用例 姓名 学号 团队名称 李涵 ...
- 下载恶意pcap包的网站汇总
说几个我经常用的,免费的:1. Malware Traffic Analysis: http://www.malware-traffic-analysis.net/2018/index.htm ...
- Tomcat项目内存参数调优
一.常见的Java内存溢出有以下三种: 1. Java.lang.OutOfMemoryError: Java heap space 即JVM Heap溢出 解释说明:JVM在启动的时候会自动设置JV ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- OLED液晶屏幕(4)串口读取文字并分割,液晶屏幕显示
ESP8266-07 0.93存 液晶屏 128*64 驱动芯片 ssd1306 接线 VCC-5v GND-GND SCL-D1(SCL) SDA-D2(SDA) 安装两个库 #include & ...
- LeetCode 1049. Last Stone Weight II
原题链接在这里:https://leetcode.com/problems/last-stone-weight-ii/ 题目: We have a collection of rocks, each ...
- LeetCode 1004. Max Consecutive Ones III
原题链接在这里:https://leetcode.com/problems/max-consecutive-ones-iii/ 题目: Given an array A of 0s and 1s, w ...
- BZOJ 2006: [NOI2010]超级钢琴 ST表+堆
开始想到了一个二分+主席树的 $O(n\log^2 n)$ 的做法. 能过,但是太无脑了. 看了一下题解,有一个 ST 表+堆的优美解法. 你发现肯定是选取前 k 大最优. 然后第一次选的话直接选固定 ...
- Configure JSON.NET to ignore DataContract/DataMember attributes
https://stackoverflow.com/questions/11055225/configure-json-net-to-ignore-datacontract-datamember-at ...