elasticsearch+kafka日志收集和分析以及分布式配置(附)

原创 2016年05月31日 20:48:46

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">由于公司内部业务需求,需要将大量的请求日志做统计分析,所以用到了elasticsearch全文搜索引擎</span>

一、采用何种方式做日志收集

1、采用mysql数据同步的方式将数据批量写入elasticsearch,这种方式需要自己控制每次最后一次插入数据的状态,以便下次从上次标记的状态继续同步数据,

2、网上给出的方案为jdbc-river这种方式同步过程比较慢,而且对于百万级数据不是最好的选择,另外对于数据的实时收集影响mysql的性能

3、最后采用kafka+elasticsearch的方式做:

具体为:

1)每次请求以及产生的数据都通过数据管道kafka做数据传输,再通过脚本将管道中的数据写入elasticsearch,这里想说的是elasticsearch有个bulk可以批量的导入数据

下面附上elasticsearch的配置以及中文分词的ik的配置方式

本文ElasticSearch2.3.1最新版的安装,如果遇到未知错误请翻墙google,国内的相关文章都比较老

首先从官网官网:https://www.elastic.co/guide/en/sense/current/installing.html下载对应的版本

(首先确保已经有jdk环境,本人jdk版本为1.8.51)这里笔者想说明的是jdk1.8.91安装以后会提示java环境找不到或者是librjava.so找不到,所以最好选择1.7到1.8.51版本

按照官网的提示进行启动发现报错:

Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
     at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93)
     at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144)
     at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270)
     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)


这是因为不能用root用户运行,必须为其创建一个用户和用户组,但是非要运行那笔者给出经过尝试和google终于运行成功

解决如下:

 ./bin/elasticsearch -d  -Des.insecure.allow.root=true 

这样启动就正常了


对于分布式配置只要配置文件的cluster.name的值为同一个就可以,但是在不同IP段想要分布式感应需要配置IP,在配置文件中找到

discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"] 数组中改为对应的IP即可成功感应


二、分词插件ik安装

对于es2.3以后的版本安装ik分词器需要用户自己打包,然后将对于的jar包文件和配置文件复制到es目录中即可

具体步骤为:

1、在github中下载对应的版本地址为:https://github.com/medcl/elasticsearch-analysis-ik/releases

2、选择对应版本

cd /tmp
wget https://github.com/medcl/elasticsearch-analysis-ik/archive/master.zip
unzip master.zip
cd elasticsearch-analysis-ik/

然后使用mvn package 命令,编译出jar包

将target/releases/下所有文件包复制到Elasticsearch的plugins/analysis-ik 目录下,再把解压出的ik目录(配置和词典等),复制到Elasticsearch的config 目录下。然后编辑配置文件elasticsearch.yml ,在后面加一行:index.analysis.analyzer.ik.type : "ik"

3、最后重启即可安装成功

三、kafka安装请参考本人上期安装说明博客


分布式搜索引擎Elasticsearch—kafka数据同步插件

river代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB...
  • baiyunxiaoxiao_chen
  • baiyunxiaoxiao_chen
  • 2014年09月27日 21:53
  • 3753

KafKa+Logstash+Elasticsearch日志收集系统的吞吐量问题

公司的KafKa+Logstash+Elasticsearch日志收集系统的吞吐量存在问题,logstash的消费速度跟不上,造成数据堆积; 三者的版本分别是:0.8.2.1+1.5.3+1.4.0 ...
  • jingjbuer
  • jingjbuer
  • 2016年08月17日 20:04
  • 5741

kafka elasticsearch

  • 2017年03月02日 10:41
  • 7KB
  • 下载

kafka strom elasticsearch demo

https://github.com/mvalleavila/Kafka-Storm-ElasticSearch
  • cnbird2008
  • cnbird2008
  • 2014年10月10日 21:15
  • 1797

ELK学习6_Kafka->Logstash->Elasticsearch数据流操作

Logstash配置过程 在Logstash中建立input和output的条件: [hadoop@Slave1 ~]$ cd /usr/local/ [hadoop@Slave1 local]$ c...
  • wang_zhenwei
  • wang_zhenwei
  • 2015年10月29日 16:19
  • 7431

kafka java api 消费入es

最近在做日志监控,日志通过logback或者log4j写入kafka,需要用kafka的java api写个消费端。由于是进行日志消费,可以允许有一定的丢失和重复消费,但是应该尽量避免。 代码: ...
  • JThink_
  • JThink_
  • 2016年09月30日 10:34
  • 2108

kafka->logstash->es

本片博客的场景:具有一定格式的数据首先被推送到Kafka活着是redis(本实验选择的是Kafka),当数据从Kafka出来之后,被送到Logstash进行简单的处理,然后数据从Logstash出来再...
  • xuguokun1986
  • xuguokun1986
  • 2015年10月27日 18:20
  • 1844

kafka connect

kafka connect是一个kafka与其他系统进行数据流交换的可扩展并且高可用的工具 它可以简单定义connect将大的数据集放入kafka,比如它可以低延迟的将数据库或者应用服务器中的me...
  • chuanzhongdu1
  • chuanzhongdu1
  • 2016年05月11日 10:56
  • 5795

logstash-kafka-elasticsearch

本文介绍使用logstash-kafka-elasticsearch组合进行数据交互。首先用logstash进行数据采集,然后数据通过kafka进入elasticsearch。   文档版本: kaf...
  • xiaoyu_BD
  • xiaoyu_BD
  • 2016年09月21日 01:26
  • 1457

用docker+ES+kafka搭建用户行为数据收集系统

Docker Elasticsearch docker-composeyml Confluent
  • pascal_lin
  • pascal_lin
  • 2017年11月27日 12:01
  • 128
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:elasticsearch+kafka日志收集和分析以及分布式配置(附)
举报原因:
原因补充:

(最多只允许输入30个字)