第十章-实战: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

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),一直下一步即可。

配置完成后,点击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下载地址:https://github.com/alibaba/canal/releases(下载deployer版本)。

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

这是一个能给程序员加buff的公众号 (CoderBuff)

《ElasticSearch6.x实战教程》之实战ELK日志分析系统、多数据源同步的更多相关文章

  1. 十分钟搭建和使用ELK日志分析系统

    前言 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为“十分钟搭建和使用ELK日志分析系统”听 ...

  2. ELK 日志分析系统的部署

    一.ELK简介 ElasticSearch介绍Elasticsearch是一个基于Lucene的搜索服务器. 它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口. Elasti ...

  3. ELK日志分析系统简单部署

    1.传统日志分析系统: 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安 ...

  4. Rsyslog+ELK日志分析系统

    转自:https://www.cnblogs.com/itworks/p/7272740.html Rsyslog+ELK日志分析系统搭建总结1.0(测试环境) 因为工作需求,最近在搭建日志分析系统, ...

  5. ELK日志分析系统-Logstack

    ELK日志分析系统 作者:Danbo 2016-*-* 本文是学习笔记,参考ELK Stack中文指南,链接:https://www.gitbook.com/book/chenryn/kibana-g ...

  6. elk 日志分析系统Logstash+ElasticSearch+Kibana4

    elk 日志分析系统 Logstash+ElasticSearch+Kibana4 logstash 管理日志和事件的工具 ElasticSearch 搜索 Kibana4 功能强大的数据显示clie ...

  7. Docker笔记(十):使用Docker来搭建一套ELK日志分析系统

    一段时间没关注ELK(elasticsearch —— 搜索引擎,可用于存储.索引日志, logstash —— 可用于日志传输.转换,kibana —— WebUI,将日志可视化),发现最新版已到7 ...

  8. Rsyslog+ELK日志分析系统搭建总结1.0(测试环境)

    因为工作需求,最近在搭建日志分析系统,这里主要搭建的是系统日志分析系统,即rsyslog+elk. 因为目前仍为测试环境,这里说一下搭建的基础架构,后期上生产线再来更新最后的架构图,大佬们如果有什么见 ...

  9. ELK日志分析系统搭建

    之前一段时间由于版本迭代任务紧,组内代码质量不尽如人意.接二连三的被测试提醒后台错误之后, 我们决定搭建一个后台日志分析系统, 经过几个方案比较后,选择的相对更简单的ELK方案. ELK 是Elast ...

随机推荐

  1. 查看SharePoint文档库是,显示层次目录,可以点击返回层次

    在sharepoint 2013中,Documnet library(文档库)包含多层文件夹,当进入到文件夹后,返回指定层次了(例如返回上一层),需要用浏览器的返回. 使用起来不方便,而且浏览器的返回 ...

  2. android核心系列--1,组件生命周期

    一,进程模型及进程托管 1,一个APP应用是由一个或多个组件构成的,这些组件可以运行在一个进程中,也可以分别运行在多个进程中: 进程的构造和销毁是由系统全权负责的. 2,一个应用进程只有一个应用环境对 ...

  3. MAC和PHY的区别(网线上传递的是模拟信号)

    一块以太网网卡包括OSI(开方系统互联)模型的两个层.物理层和数据链路层.物理层定义了数据传送与接收所需要的电与光信号.线路状态.时钟基准.数据编码和电路等,并向数据链路层设备提供标准接口.数据链路层 ...

  4. 30+简约和平铺的WordPress复古主题

    现在复古风格的设计非常流行,你可以快速建立属于自己的复古风格的网站.继续阅读下去,我们将展示给你一些精彩的WordPress复古主题. 多年来,网页设计师们纷纷用3D效果,纹理,噪声,渐变的灯光效果, ...

  5. hadoop 数据抽取

    #!/bin/bash if [ ! -z $2 ]; then start_time=$1 end_time=$2 else starttime=`date +%Y%m%d%H%M -d '-15 ...

  6. Quartz.Net实现作业定时调度详解

    1.Quartz.NET介绍 Quartz.NET是一个强大.开源.轻量的作业调度框架,你能够用它来为执行一个作业而创建简单的或复杂的作业调度.它有很多特征,如:数据库支持,集群,插件,支持cron- ...

  7. Nginx+Keepalived部署流程

    环境介绍 1)LB01 Hostname:lb01.example.com VIP:192.168.3.33(eth0:0) IP:192.168.3.31(eth0) OS:Centos 7 2)L ...

  8. Java打印实心、空心的三角形和菱形

    1.实心三角形 代码: import java.util.Scanner; public class Test { public static void main(String[] args) { i ...

  9. 关于vue中使用rem问题

    1.下载lib-flexible 我使用的是vue-cli+webpack,所以是通过npm来安装的 npm i lib-flexible --save 2.引入lib-flexible 在main. ...

  10. 【commons-lang3工具】JAVA脱敏工具

    前言:commons-langbao中有很多方便的工具,无需我们自己去实现,能够节省很多开发时的问题: 1.工具包,引入依赖,jDK8对应的版本如下: <!-- https://mvnrepos ...