logstash导入数据到Elasticsearch

一、前言

      刚开始的时候,博主导入数据用的是bulk这个方法,但是这个方法一方面是导入不方便,一方面是对于数据量有限制。既然咱们搭建的是ELK,那么就来见识下logstash吧。

博主这里的ELK全部是6.2.4版本。

二、logstash的下载安装

1、简介

      Logstash是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。在一个典型的使用场景下(ELK):用Elasticsearch作为后台数据的存储,kibana用来前端的报表展示。Logstash在其过程中担任搬运工的角色,它为数据存储,报表查询和日志解析创建了一个功能强大的管道链。

Logstash提供了多种多样的 input,filters,codecsoutput组件,让使用者轻松实现强大的功能。

      网上关于logstash的文章数不胜数,都是好文章,我这边也没必要再重写一遍,这里只是作为笔记使用,大家多参考大神的博客就好了,哈哈

关于logstash的详细介绍:https://blog.csdn.net/chenleiking/article/details/73563930

2、下载地址

https://www.elastic.co/cn/downloads/past-releases/logstash-6-2-4

官网下载速度慢,可以下载我分享的logstash-6.2.4版本

链接: https://pan.baidu.com/s/1qikuSeFI2_pgdAa0x5qh2w 提取码: ka6u

3、测试输出

下载安装之后,进入bin目录,输入:

logstash -e 'input { stdin { } } output { stdout {}}'

如果报错:

Unknown command '{'

See: 'bin/logstash --help'
[ERROR] 2019-04-09 13:10:07.501 [main] Logstash - java.lang.IllegalStateException: org.jruby.exceptions.RaiseException: (SystemExit) exit

则输入:

logstash -e ""

然后结果形如:

4, “pipeline.batch.size”=>125, “pipeline.batch.delay”=>50}
[2019-04-09T13:12:26,816][INFO ][logstash.pipeline ] Pipeline started successfully {:pipeline_id=>“main”, :thread=>"#<Thread:0x4367f772 run>"}
The stdin plugin is now waiting for input:
[2019-04-09T13:12:26,901][INFO ][logstash.agent ] Pipelines running {:count=>1, :pipelines=>[“main”]}
hello world
{
“@version” => “1”,
“@timestamp” => 2019-04-09T05:13:33.226Z,
“message” => “hello world\r”,
“type” => “stdin”,
“host” => “DESKTOP-Q3I218A”
}

解释:
      这里的hello world是我自己输入的。能到这一步,说明安装的没什么问题了。
这部分可以输入:logstash --help查看详细命令,
-e: 后面跟着字符串,该字符串可以被当做logstash的配置(如果是“” 则默认使用stdin作为输入,stdout作为输出)
-f: 通过这个命令可以指定Logstash的配置文件,根据配置文件配置logstash

/bin/logstash -f /etc/logstash/conf.d/nginx_logstash.conf

参考:https://blog.csdn.net/m0_38084243/article/details/80590241

三、把json文件导进去,并和elasticsearch联系起来

1、 在bin目录下新建conf目录,在conf目录下新建jdbc.conf文件,写入以下内容

input {
  file {
      path => "E:\files\xx\xx.json"   //json文件在本地的位置
      start_position => "beginning"
      sincedb_path => "/xxx"            //这部分是定义的文件目录路径,如果没定义的话,默认目录是在:logstash-6.2.4\data\plugins\inputs\file
      codec => json {
        charset => "UTF-8"   //设置json的编码格式
      }
    }
}
output {
elasticsearch {
    hosts => "http://localhost:9200"
    index => "xx"   //索引名
    document_type => "doc"   //文档名
  }
    stdout{
    }
}

2、 执行conf文件:

logstash -f conf/jdbc.conf

3、 没错误的话,这时候能看到cmd框一直在疯狂录入数据

4、 关于logstash的配置:https://blog.csdn.net/xfg0218/article/details/52980726

5、 logstash会把进度更新到sincedb文件中。我们可以查看自己定义的sincedb_path文件来知道导入进度。
如果没有处理完了关闭logstash,下次再启动时则不会再从头开始处理,因为sincedb已经记录了进度,
不要以为start_position => “beginning”就是每次都从头处理,如果把sincedb文件删了又会从头开始处理。

四、关于导入数据到logstash之后,怎么自动按照日期生成索引

output {
	if [type] == "xx_log"{
		elasticsearch {
			hosts  => "127.0.0.1:9200"
			index => "xx_log_%{+YYYY.MM.dd}"
		}
	}
}

      本来这篇博客还要写上导入数据时候遇到的坑呢,但是文章已经有点长了,错误部分就放到下一篇吧,毕竟是初学者,遇到的坑还是挺多的,不过解决了就是成长,加油!

踩坑记录logstash导入数据到Elasticsearch踩过的坑详解

end

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用Logstash从MySQL导入数据Elasticsearch的步骤: 1. 安装Logstash: ```shell sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo yum install logstash ``` 2. 安装Logstash插件: ```shell cd /usr/share/logstash/bin/ sudo ./logstash-plugin install logstash-input-jdbc sudo ./logstash-plugin install logstash-output-elasticsearch ``` 3. 将MySQL的Java连接器复制到Logstash的目录: ```shell scp mysql-connector-java-8.0.13.tar.gz [email protected]:~/ tar -zxvf mysql-connector-java-8.0.13.tar.gz ``` 4. 创建Logstash配置文件,例如`mysql_to_elasticsearch.conf`,并将以下内容添加到文件中: ```shell input { jdbc { jdbc_driver_library => "/path/to/mysql-connector-java-8.0.13.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/database_name" jdbc_user => "username" jdbc_password => "password" statement => "SELECT * FROM table_name" } } output { elasticsearch { hosts => ["localhost:9200"] index => "index_name" document_type => "document_type" } } ``` 请注意,你需要将`/path/to/mysql-connector-java-8.0.13.jar`替换为实际的MySQL连接器的路径,`localhost:3306`替换为实际的MySQL主机和端口,`database_name`替换为实际的数据库名称,`username`和`password`替换为实际的数据库用户名和密码,`table_name`替换为实际的表名,`index_name`替换为要创建的Elasticsearch索引名称,`document_type`替换为要创建的文档类型。 5. 启动Logstash并指定配置文件: ```shell sudo ./logstash -f mysql_to_elasticsearch.conf ``` Logstash将会从MySQL中查询数据,并将其导入Elasticsearch中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值