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

    结束



     

  • 相关阅读:
    推荐:VisualStudio 2005/2008的“Consolas”字体包
    [转]Calendar 動態產生子控制項的 Event Handler, 模拟__doPostBack() 回发
    Ajax ToolKit ModelPopupExtender应用经验二则
    [转]Calendar 控件日期复选
    ASP.NET偷懒大法六(可空类型的动态赋值)
    弹出层(Div)屏蔽父窗口并且让父窗口变暗
    CSS巧用expression来区分只读文本框
    formValidator用户注册表单自动验证
    基于Session原理的验证码方案
    jQuery解决IE6下PNG图片背景透明问题
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/12014052.html
Copyright © 2020-2023  润新知