• 《ElasticSearch6.x实战教程》之实战ELK日志分析系统、多数据源同步


    第十章-实战:ELK日志分析系统

    关注公众号:CoderBuff,回复“es”获取《ElasticSearch6.x实战教程》完整版PDF。

    ElasticSearch、Logstash、Kibana简称ELK系统,主要用于日志的收集与分析。

    一个完整的大型分布式系统,会有很多与业务不相关的系统,其中日志系统是不可或缺的一个,集中式日志系统需要收集来自不同服务的日志,对它进行集中管理存储以及分析。ELK就是这样一个系统。

    ElasticSearch是一个开源分布式搜索引擎,在ELK系统中提供对数据的搜索、分析、存储。

    Logstash主要用于日志的收集,在ELK系统中作为日志数据源的传输。

    Kibana则是一个可视化管理工具,在ELK系统中起可视化分析查看的作用。

    安装部署ELK

    ElasticSearch

    ElasticSearch的安装在"准备工作"中已经说明,这里不再赘述。

    Kibana

    Kibana6.3.2下载地址(Linux、mac OS、Windows对应不同的版本):https://www.elastic.co/cn/downloads/past-releases/kibana-6-3-2。Logstatsh历史版本下载页面:https://www.elastic.co/cn/downloads/past-releases#kibana

    mac OS

    1. 通过命令tar -zxvf kibana-6.3.2-darwin-x86_64.tar.gz解压到当前用户目录(或者其它位置)。
    2. 解压后进入kibana-6.3.2-darwin-x86_64目录,执行vim config/kibana.yml命令,修改配置(注意yml格式的配置文件冒号必须有英文空格。
    server.port: 5601
    server.host: "localhost"
    elasticsearch.url: "http://localhost:9200"
    logging.dest: /Users/yulinfeng/log/kibana.log
    
    1. 执行./bin/kibana命令启动Kibana。

    启动完成,打开浏览器输入localhost:5061

    kibana

    Linux

    安装过程同mac OS。

    Logstash

    Logstash6.3.2下载地址(Linux、mac OS、Windows通用,下载zip包即可):https://www.elastic.co/cn/downloads/past-releases/logstash-6-3-2。Logstash历史版本下载页面:https://www.elastic.co/cn/downloads/past-releases#logstash

    macOS

    1. 解压logstash-6.3.2.zip 解压到当前用户目录(或者其它位置)
    2. 解压后进入logstash-6.3.2目录,执行vim logstash.conf配置文件。
    input {
      tcp {
        mode => "server"
        host => "127.0.0.1"
        port => 4568
      }
    }
    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        index => "log"
        document_type => "log4j2"
      }
    }
    

    这个配置的含义为,Logstash的日志采集来源是4568端口(后面我们会通过程序代码通过log4j向端口4568打印日志)。Logstash的日志向ElasticSearch输出。

    1. 执行./bin/logstash -f logstash.conf命令启动Logstash。

    Linux

    安装过程同mac OS。

    日志源DEMO

    在部署Logstash时,我们定义了日志的来源是端口4568,接下来我们模拟一个程序利用log4j2通过socket连接将日志发送到4568端口,DEMO完整代码地址:https://github.com/yu-linfeng/elasticsearch6.x_tutorial/tree/master/code/logstash

    DEMO的逻辑只有打印日志,主要在log4j2.xml需要配置socket方式打印。

    ......
    <Socket name="logstash-tcp" host="localhost" port="4568" protocol="TCP">
      <PatternLayout pattern="${LOG_PATTERN}" />
    </Socket>
    ......
    

    详细代码直接查看源码https://github.com/yu-linfeng/elasticsearch6.x_tutorial/tree/master/code/logstash

    启动Spring Boot程序后,控制台开始输出日志,此时返回浏览器查看localhost:5061,点击Management菜单,Index pattern中输入"log"(即定义的索引Index),一直下一步即可。

    kibana-man

    配置完成后,点击Discover菜单,就可看到程序DEMO打印的日志,并可进行搜索。现在,就请尽情探索吧。

    第十一章-实战:多数据源同步

    通常情况下,使用ES的地方一般都会使用MySQL,将MySQL作为数据源,ES作为前台搜索。写入一条数据到MySQL时,也需要同时写入ES中。此时写入ES就有两种方式:一种同步的方式,另一种异步的方式。写入MySQL后同步写入ES,好处是实时更新,插入成功即可搜索,缺点也很明显,事务的问题(MySQL成功,ES失败的情况应提供一种保障机制达到数据一致性),性能的问题(一条数据需要同时插入MySQL和ES成功后才能返回结果)。另一种情况是在写入MySQL成功后,异步写入ES,优点是数据一致性问题比较容易保证,性能的问题也不必等待过久,缺点也很明显,插入MySQL成功后,由于异步的原因,并不能立刻从ES搜索出结果。

    写入MySQL成功,即数据库中数据新增了一条数据,利用MySQL的binlog技术能监测到数据的变化,从而发送一条MQ写入到ES中。有关binlog可自行搜索。Canal即是基于数据库增量日志解析,提供增量数据订阅和消费的一款阿里巴巴开源软件。

    在网络上已经有很多资料讲解如何通过Canal进行多数据源同步,这里不再给出详细的部署过程,下面是异步写入ES的架构图。

    canal
    Canal下载地址:https://github.com/alibaba/canal/releases(下载deployer版本)。

    关注公众号:CoderBuff,回复“es”获取《ElasticSearch6.x实战教程》完整版PDF。

    这是一个能给程序员加buff的公众号 (CoderBuff)
  • 相关阅读:
    【springboot】处理【跨域】请求
    【JPA】【概念】JPA概念解析:CascadeType(各种级联操作)详解
    【JPA】关于SpringBoot使用JPA的更新操作(save方法和原生SQL方法)
    jpa @query上使用if判断
    【Jpa】动态多表if多条件联合查询,并对查询结果进行分页
    phpstorm2020.1 免注册
    uniapp实现多语言切换
    vue进页面input自动获取焦点
    vue-cli4使用less全局变量
    用js实现隐藏手机号中间四位
  • 原文地址:https://www.cnblogs.com/yulinfeng/p/11234061.html
Copyright © 2020-2023  润新知