首页 > 其他分享 >flume+elasticsearch

flume+elasticsearch

时间:2023-06-13 10:04:45浏览次数:32  
标签:flume mkdir elasticsearch apache org 日志


简单描述一下这个例子:将项目日志实时采集到elasticsearch,便于统一管理。

1. 收集日志格式为:

log4j.properties : org.apache.log4j.Logger:   %d{ISO8601} [%l-%M]-[%p] %t %m%n

logback.xml :org.slf4j.Logger:     %date [%logger:%L]-[%level] %thread %msg%n

2. flume 1.7.0 (flume搭建只需解压配置jdk即可,官网教程都有案例,http://flume.apache.org/FlumeUserGuide.html) 

     source:Taildir Source 

     channel: File Channel

     sinks:ElasticSearchSink 

3. elasticsearch1.7.5



Flume搭建:



1. 下载flume安装包并解压apache-flume-1.7.0-bin.tar.gz, http://flume.apache.org/download.html

2. 创建软连接 ln -s apache-flume-1.7.0-bin flume

3. 进入conf目录,cp flume-env.sh.template flume-env.sh

4. 修改jdk,vi  flume-env.sh

   

flume+elasticsearch_自定义

5. 将elasticsearch lib中的elasticsearch-1.7.5.jar和lucene相关jar包拷贝到flume lib中

6. 创建一些下面需要的目录(不同的source,channel,sink需要的目录不一样,用时看官网即可)

     mkdir flume/conf/es (用来存放flume配置文件,并新建文件data-es.conf )

     mkdir flume/tmp (Taildir Source生成的positionFile文件目录)

     mkdir -p flume/file-channel/checkpoint (File Channel检查点写入间隔)

     mkdir -p flume/file-channel/data (File Channel数据存放目录)

     mkdir flume/test (存放测试数据)



Taildir Source配置,直接上data-es.conf截图:



flume+elasticsearch_elasticsearch_02


File Channel配置:


flume+elasticsearch_自定义_03


ElasticSearchSink 配置:


flume+elasticsearch_java_04


接下来主要讲解一下上图标红的地方,就是flume自定义Serializer


首先大体说一下为什么需要自定义Seralizer,一是也许项目中的log4j日志我们只关心程序员自己输出的日志信息,而不需要log4j其他信息;二是项目日志一般都会统一格式,自定义的格式也许flume不能很精准的拆分。

这里定义日志格式为:


2017-02-27 13:57:19,218 [com.data.test]-[INFO] main {sysName###测试项目@@@status###正在初始化@@@info###开始执行了}


使用正则拆分日志:([\d- :,]{23}) (\[.+?\])-(\[[A-Z]+?\]) (.*) ([{].+}$)


 

拆分结构:

flume+elasticsearch_自定义_05

下载源码,只需导入flume-ng-elasticsearch-sink模块即可:

flume+elasticsearch_自定义_06


源码不做详细讲解 (因为我还没来的及仔细研究,只是了解大概照猫画虎)


一. 修改的地方是:通过ElasticSearchSink 传入的数据会按照 “prefix-yyyy-MM-dd” 每天创建index,如果数据量不大的话有点浪费,现在只想按照“prefix-yyyy-MM”每月创建index,修改org.apache.flume.sink.elasticsearch.TimeBasedIndexNameBuilder


flume+elasticsearch_apache_07


二. 仿照org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder.ElasticSearchDynamicSerializer创建自己的Search,其中flume也是封装了es的api操作, Event对象就是你获取到的每条日志,然后按照你自己的逻辑将日志拆分即可,简单的几个截图吧:


flume+elasticsearch_java_08

flume+elasticsearch_自定义_09

 


三. 因为只要程序员自己输出日志,所以要将正则不匹配的日志过滤掉。修改org.apache.flume.sink.elasticsearch.ElasticSearchSink, 标红为自己修改的地方


flume+elasticsearch_大数据_10

flume+elasticsearch_java_11

最后maven打包替换到flume lib下面相应jar包即可

flume+elasticsearch_大数据_12

flume+elasticsearch_apache_13

算是写完了吧。。。

标签:flume,mkdir,elasticsearch,apache,org,日志
From: https://blog.51cto.com/u_16087105/6467235

相关文章

  • elasticsearch迁移
    #第一种办法:elasticdump#先升级elasticdump参考https://www.dianjilingqu.com/634305.html1.下载node.js的安装包http://wgethttps://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.gz2.解压安装包tarxfnode-v10.13.0-linux-x64.tar.gzmvnode-v10.13.0-linu......
  • linux命令行elasticsearch查询工具es2unix
    当想在linux的命令行中查看elasticsearch的状态时,可以用es2unix这个工具,插件地址: https://github.com/elasticsearch/es2unix。它是elasticsearch官方推出的,可以通过命令来查看es的各种状态,安装方法curl-sdownload.elasticsearch.org/es2unix/es>/bin/eschmod+x/bin/es这......
  • Linux搭建elasticsearch 7.x 版本
     安装方式传统方式根据平台系统Windows、linux、mac下载安装包以linux为例,进入到想安装的目录位置,下载安装包并解压#进入安装目录cd/home#下载安装包wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.3-linux-x86_64.tar.gz#解压tar-z......
  • Elasticsearch专题精讲—— REST APIs —— Document APIs —— Reindex API —— 跨
    Reindexfromremote(跨集群索引)https://www.elastic.co/guide/en/elasticsearch/reference/8.8/docs-reindex.html#reindex-from-remoteReindexsupportsreindexingfromaremoteElasticsearchcluster:Reindex支持从远程Elasticsearch集群进行重新索引:curl-XP......
  • Elasticsearch 修改字段类型
    由于ES不能像关系型数据库直接修改类型,所以要借助中间索引来完成1、创建中间索引(字段维护正确的)put:https://localhost/track_bak{"settings":{"index":{"number_of_shards":"3","number_of_replicas":"1&quo......
  • Elasticsearch专题精讲—— REST APIs —— Document APIs —— Reindex API
    RESTAPIs——DocumentAPIs——ReindexAPIhttps://www.elastic.co/guide/en/elasticsearch/reference/8.8/docs-reindex.html#docs-reindexCopiesdocumentsfromasourcetoadestination.将文档从源复制到目标。Thesourcecanbeanyexist......
  • ElasticSearch-API-Index的使用亲测
    ElasticSearch-API-Index索引创建API允许初始化一个索引。ElasticSearch对多重索引提供了支持,包括跨多个索引执行操作。每个索引在创建时可以让一个特定的设置项与其关联。最简单的方式创建索引curl-XPUT‘http://localhost:9200/twitter/'在创建索引的时候指定分片和副本数量,参......
  • ElasticSearch
    端口9300组件间通信,9200http界面端口,5601kibana界面基本操作es不支持修改索引信息###创建索引shopping,es中的索引类似于关系数据库中的库curl-XPUThttp://localhost:9200/shopping###查看索引curl-XGEThttp://localhost:9200/shopping###查看所有索引curl......
  • elasticsearch查询
    elasticsearch查询,elasticsearch常见查询,elasticsearch命令elasticsearch常用命令1、查询索引GET_cat/indices 2、查看es磁盘使用情况GET_cat/allocation?v&pretty 3、查看es分词情况GET_analyze{"text":"中国"}elasticsearch常用查询查询基本语法,所......
  • RDS 、HDFS、 mapreduce 、spark 、hive、 hbase 、zookeeper 、kafka 、flume、mysql
    这些技术是大数据领域的常用组件,它们之间的配置文件依赖关系如下:RDS是一种关系型数据库,可以独立安装和使用,不需要依赖其他组件。HDFS是Hadoop分布式文件系统,通常与MapReduce一起使用。在Hadoop集群中,HDFS需要配置core-site.xml和hdfs-site.xml两个文件,其中core-site......