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堵塞,下篇博客解決次問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM