zoukankan      html  css  js  c++  java
  • Logstash抽取数据到Elasticsearch(1)

    在最近的一个项目中,需要将Mysql的数据导入到Elasticsearch中,在这个过程中,本来应该是喝着阔乐,非常愉快的等待上传的,但是出现了很多问题。

    一、磁盘扩容

    我使用的是一台只挂载了40G系统盘的服务器,之前已经存了很多Sql数据,现在已经不够用了,但是通过fdisk -l查看了一下还有另外一个没有挂载的100G的盘可以拿来用。以下是挂载过程。

    1、fdisk -l查看磁盘情况,发现挂载了一个盘作为系统盘,没有分区,直接挂载在主机上。另外一个就是需要扩展的新磁盘,没有挂载,接下来将某文件路径挂载到该磁盘下,使得该路径下的文件能够存储到这个新的磁盘,缓解已有磁盘/dev/vda的压力。

    2、使用mkfs.ext4格式化磁盘,以前用ext3,现在已经弃用。

    3、格式化后,将磁盘临时挂载到一个新的目录/mnt/(任意目录都行)下,使用mount命令挂载,df -l可以查看到该磁盘已经挂载成功。

    4、如果想将原磁盘中的某个文件夹中挂载到新磁盘下,可以先将该文件夹下的数据移动到/mnt目录下,举例,我将/filebaet文件夹挂载到新磁盘下。

    5、将/mnt目录卸载掉,命令umount

    6、最后在/etc/fstab中配置一下需要挂载的文件夹。

    7、完成挂载

    完成以上操作后,就能将文件夹下的数据存储到新的磁盘下了。我的项目中是挂载了Elasticsearech文件夹到新的磁盘。

    二、后台抽取

    1、一开始由于没有设置logstash的批量处理,导致数据抽取非常缓慢,为了方便,就想能不能后台抽取,毕竟该学过用nohup后台运行。

    nohup ./logstash -f /usr/local/install/logstash.cnf &
    

    /usr/local/install/logstash.cnf 是我放置配置文件的地方,千万别直接拷。

    2、一切都应该很和谐,我应该继续拿起冰阔乐了,我好奇的df -l看了一下新的磁盘是不是在上数据了,一个很奇怪的事情发生了,两个磁盘都在上数据,而且旧磁盘数据上的更加的快,我自闭了。

    3、难道是挂载失败了?但是不对啊,新磁盘也在上数据啊,我灵机一动,查看一下文件夹的大小,看看什么文件占用了大的空间

    du -sh * //查看各个文件的大小
    

    找了好久,终于找到了一个文件-nohup.out,这不是nohup的日志吗,为什么有18G那么大?,打开日志才发现,上传数据的所以信息都存在了这个里面,终于发现了原因:在nohup后台运行时,日志文件不能存储所有信息,只需要存储报错信息就行了。

    nohup ./logstash -f /usr/local/install/logstash.cnf >dev.null 2>log & 
    dev/null可以理解为垃圾回收,2>log表示错误信息存储到log文件中,其他文件就送往垃圾回收
    

    继续报错

    结论:最后的报错是由于logstash抽取太快,ES请求频繁,导致的IO堵塞,下篇博客解决次问题。

  • 相关阅读:
    iOS 统计项目代码行数
    iOS Xcode 8 快捷键 (注释 失效 处理)
    iOS NSSet 学习 “无序数组” & 去重 案例
    iOS 学习@autoreleasepool{}
    iOS 学习如何声明私有变量和私有方法
    iOS 系统认知 debug distribution release 和 #ifdef DEBUG
    iOS copy 和 mutableCopy 学习
    iOS 关于 Missing iOS Distribution signing identity for.... 等 打包 校验 出现的事故 处理经验
    iOS NSCoding 的学习 和 使用
    TeamViewer被发现用于(检测为)商业用途解决方案(绝对有效)
  • 原文地址:https://www.cnblogs.com/xushun/p/11294119.html
Copyright © 2011-2022 走看看