第十章-实战: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. Android无布局文件下自定义通知栏notification的 icon

    在开发项目一个与通知栏有关的功能时,由于自己的项目是基于插件形式的所以无法引入系统可用的布局文件,这样无法自定义布局,造成无法自定义通知栏的icon. 在网上也有一种不用布局文件更换icon的方法,但 ...

  2. SYN1618型 高精度天文时间同步系统

       SYN1618型 高精度天文时间同步系统 产品概述 SYN1618型 高精度天文时间同步系统是由西安同步电子科技有限公司精心设计.自行研发生产的一款高精度的时频频率标准设备,接收GPS.GLON ...

  3. IM即时通讯:如何跳出传统思维来设计聊天室架构?

    因为视频直播业务的大规模扩张,聊天室这种功能在最近几年又火了起来.本篇文章将会重点挑选聊天室这个典型场景,和大家分享一下网易云信在实现这个功能时是如何做架构设计的. 相关推荐阅读几十万人同时在线的直播 ...

  4. 【JAVA】我的爬虫

    简介:不是很智能的爬虫,效率慢,仅用作自娱自乐,需要观察目标网站的页面然后修改相关正则去获取自己想要的数据 环境:需要Http-client相关jar包,如下,可以去我的下载链接下载: https:/ ...

  5. redis安装与php安装redis模块

    一.安装redis 1.下载 wget https://github.com/antirez/redis/archive/2.8.23.tar.gz 2.解压缩 tar -zxvf 2.8.23.ta ...

  6. PATA 1006. Sign In and Sign Out (25)

    #include <bits/stdc++.h> using namespace std; const int N = 100005; struct visitor{ char ID[20 ...

  7. Django中CBV View的as_view()源码解析

    CBV与FBV路由区别 urlpatterns = [ url(r'^publish/$', views.Publishs.as_view()), # CBV写法 url(r'^publish/$', ...

  8. Java:synchronized关键字引出的多种锁

    前言 Java 中的 synchronized关键字可以在多线程环境下用来作为线程安全的同步锁.本文不讨论 synchronized 的具体使用,而是研究下synchronized底层的锁机制,以及这 ...

  9. 快速接入业务监控体系,grafana监控的艺术

    做一个系统,如果不做监控,是不完善的. 如果为做一个快速系统,花力气去做监控,是不值得的. 因为,我们有必要具备一个能够快速建立监控体系的能力.即使你只是一个普通开发人员! 个人觉得,做监控有三个核心 ...

  10. Qt之股票组件-股票检索--支持预览框、鼠标、键盘操作

    目录 一.感慨一下 二.效果展示 三.搜索编辑框 1.编辑框 2.预览框 四.相关文章 原文链接:Qt之股票组件-股票检索--支持预览框.鼠标.键盘操作 一.感慨一下 之前做过一款炒股软件,个人觉着是 ...