《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
- 通过命令
tar -zxvf kibana-6.3.2-darwin-x86_64.tar.gz
解压到当前用户目录(或者其它位置)。 - 解压后进入
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
- 执行
./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
- 解压
logstash-6.3.2.zip
解压到当前用户目录(或者其它位置) - 解压后进入
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输出。
- 执行
./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。

《ElasticSearch6.x实战教程》之实战ELK日志分析系统、多数据源同步的更多相关文章
- 十分钟搭建和使用ELK日志分析系统
前言 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为“十分钟搭建和使用ELK日志分析系统”听 ...
- ELK 日志分析系统的部署
一.ELK简介 ElasticSearch介绍Elasticsearch是一个基于Lucene的搜索服务器. 它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口. Elasti ...
- ELK日志分析系统简单部署
1.传统日志分析系统: 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安 ...
- Rsyslog+ELK日志分析系统
转自:https://www.cnblogs.com/itworks/p/7272740.html Rsyslog+ELK日志分析系统搭建总结1.0(测试环境) 因为工作需求,最近在搭建日志分析系统, ...
- ELK日志分析系统-Logstack
ELK日志分析系统 作者:Danbo 2016-*-* 本文是学习笔记,参考ELK Stack中文指南,链接:https://www.gitbook.com/book/chenryn/kibana-g ...
- elk 日志分析系统Logstash+ElasticSearch+Kibana4
elk 日志分析系统 Logstash+ElasticSearch+Kibana4 logstash 管理日志和事件的工具 ElasticSearch 搜索 Kibana4 功能强大的数据显示clie ...
- Docker笔记(十):使用Docker来搭建一套ELK日志分析系统
一段时间没关注ELK(elasticsearch —— 搜索引擎,可用于存储.索引日志, logstash —— 可用于日志传输.转换,kibana —— WebUI,将日志可视化),发现最新版已到7 ...
- Rsyslog+ELK日志分析系统搭建总结1.0(测试环境)
因为工作需求,最近在搭建日志分析系统,这里主要搭建的是系统日志分析系统,即rsyslog+elk. 因为目前仍为测试环境,这里说一下搭建的基础架构,后期上生产线再来更新最后的架构图,大佬们如果有什么见 ...
- ELK日志分析系统搭建
之前一段时间由于版本迭代任务紧,组内代码质量不尽如人意.接二连三的被测试提醒后台错误之后, 我们决定搭建一个后台日志分析系统, 经过几个方案比较后,选择的相对更简单的ELK方案. ELK 是Elast ...
随机推荐
- Rainyday.js – Rendering Raindrops with JavaScript
Posted · Category:GPL License,Tools 直击现场 The idea behind Rainyday.js is to create a JavaScript libra ...
- 设置windows2008系统缓存大小限制,解决服务器运行久了因物理内存耗尽出僵死(提升权限后,使用SetSystemFileCacheSize API函数,并将此做成了一个Service)
声明: 找到服务器僵死的原因了,原因是虚拟内存设置小于物理内存. 只要虚拟内存设置为系统默认大小就不会出生僵死的现象了. 当时因为服务器内存48G,系统默认虚拟内存大小也是48G, 觉得太占硬盘空间, ...
- Qt优雅地结束线程(两种方法都是用Mutex锁住bool变量进行修改,然后由bool变量控制耗时动作的退出,即正常退出)
如果一个线程运行完成,就会结束.可很多情况并非这么简单,由于某种特殊原因,当线程还未执行完时,我们就想中止它.不恰当的中止往往会引起一些未知错误.比如:当关闭主界面的时候,很有可能次线程正在运行,这时 ...
- 跨平台网络通信与服务器框架 acl 3.2.0 发布,acl_cpp 是基于 acl 库的 C++ 库
acl 3.2.0 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/F ...
- ansible(二)
一.软件相关模块 1.yum(下载包) 正常操作 yum 与rpm的区别 yum可以解决依赖关系rpm 全称readhat package manager(红帽包管理工具),需要自己解决依赖 yum源 ...
- Docker最全教程之使用Node.js搭建团队技术文档站(二十三)
前言 各种编程语言均有其优势和生态,有兴趣的朋友完全可以涉猎多门语言.在平常的工作之中,也可以尝试选择相对适合的编程语言来完成相关的工作. 在团队技术文档站搭建这块,笔者尝试了许多框架,最终还是选择了 ...
- # 构建以及运行Springboot Docker镜像时的变量传递
Docker可以把我们的运行环境打包,然后我们只要run就可以了.大部分hello world都是这么写的.但都缺少了实际应用环节.以springboot为例,hello world的Dockerfi ...
- WebApp 安全风险与防护课堂(第二讲)开课了!
本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在昨天的公开课中,由于参与的小伙伴们积极性和热情非常高,我们的讲师Carl ...
- Alwayson架构下 服务器 各虚拟IP漂移监控告警的功能实现
1.需求概括 我们知道,在SQL Server Alwayson 架构中,有多种虚拟IP,例如 WindowsCluster IP,ListenIP,角色高可用性IP(类似于侦听IP).在某些条件下, ...
- 读书笔记——《谁说菜鸟不会数据分析—Python篇》
最近刚读完一本新书,关注的公众号作者出的“谁说菜鸟不会数据分析—Python篇”,话说现在很多微信公众号大牛都在出书,这貌似是一个趋势.. 说说这本书吧,我之前看过一些网文,对于数据分析这一块也有过一 ...