Linux系統的ELK安裝及配置

一、ES簡介

  ES是一個基於RESTful web接口並且構建在Apache Lucene 的開源分佈式搜索引擎。它的特點是:高可用,高擴展,是一種NOSQL的數據存儲工具。

二、ES安裝前的準備(elk安裝包版本要求一致)

  需要下載以下5個下載包:
在這裏插入圖片描述
下載包的鏈接地址是:鏈接:https://pan.baidu.com/s/1wr4Xt1Z8DBWX7xygHB0Zfg 提取碼:8dw0
除此之外,還需要安裝一下jdk,jdk的版本不唯一,可使用自己平時用的jdk版本,我這裏使用的是:jdk-8u221-linux-x64.tar.gz。
  除了準備下載包,還要講虛擬機搭建好,我這裏依然採用MobaXterm來實現(這裏可以參考第一篇文章來搭建虛擬機)

三、ELK的安裝

  以上工作做好後,進入MobaXterm環境,在根目錄下建一個software文件夾,將上面下載好的6個拖到裏面去,進行追個解壓。由於最新的工程沒有unzip解壓命令,需要先下載:yum install -y unzip,下載好後,進入software目錄下,
分別輸入一下命令進行解壓:

tar -zxf elasticsearch-6.2.2.tar.gz -C /opt
tar -zxf kibana-6.2.2-linux-x86_64.tar.gz -C/opt
tar -zxf logstash-6.2.2.tar.gz -C /opt
tar -zxf node-v8.9.1-linux-x64.tar.gz -C/opt
tar -zxf jdk-8u221-linux-x64.tar.gz -C/opt
unzip -d /opt elasticsearch-head-master.zip

將所有解壓好的文件都變更到opt目錄下(注意unzip命令和tar命令的變更目錄命令不一樣)。解壓好後使用命令:rm -rf * 將software文件裏的東西全部刪除,然後切到opt目錄下查看一下下載好的6個文件:
在這裏插入圖片描述
爲了便於記憶和書寫,我們將這6個文件都進行重命名:
在這裏插入圖片描述

四、ES的配置

  配置之前,需要將主機名和主機列表修改一下:

[root@promote opt]# vi /etc/hostname
[root@promote opt]# vi /etc/hosts

進入到hostname中將原有的主機名(第一行)直接刪除,輸入bigdata01(這裏可以自行設置),然後保存退出;
進入到hosts中:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.102 bigdata01

前兩行是原有的地址和主機名,在其下方輸入:192.168.56.102 bigdata01 即自己虛擬機的地址和剛剛在hostname中設置的主機名,然後保存退出。
  配置ES參數,輸入命令:

vi /opt/es622/config/elasticsearch.yml

進入之後,直接按shift+g跳到最後一行,按o直接在下行進行輸入,需要輸入一下參數設置:

cluster.name : bigdata		--集羣名
node.name : master		--節點名
node.master : true		--是否是主節點
network.host : 192.168.56.102	--本機地址
discovery.zen.ping.unicast.hosts : ["192.168.56.102"]	--本機地址
http.cors.enabled : true
http.cors.allow-origin : "*"

注意這裏的冒號前後要有空格,不然後面運行會報錯,然後保存退出。
  配置系統參數,輸入命令:

[root@promote opt]# vi /etc/sysctl.conf

進入後,在最後一行按o進行插入:

vm.max_map_count=655360

輸入完後保存退出,最好在輸入以下命令使之立即生效:

[root@promote opt]# sysctl -w vm.max_map_count=655360
vm.max_map_count = 655360
[root@promote opt]#

出現之前配置的參數說明配置參數成功。還需要配置另外一個系統參數,輸入命令:

[root@promote opt]# vi /etc/security/limits.conf

進入之後仍然是跳到最後一行,按o在其下面進行插入:

* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

這裏的*號後面要有空格,然後保存退出。
  新建一個es用戶,然後給es設置分組以及賦權:

useradd es
chown -R es:es es622

將es622文件賦給es組下的es用戶,然後使用命令切換到es用戶,輸入命令來啓動es:

su es
./es622/bin/elasticsearch

這時候可能會報以下錯誤:

[root@promote opt]# su es
[es@promote opt]$ ./es622/bin/elasticsearch
which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
could not find java; set JAVA_HOME or ensure java is in PATH
[es@promote opt]$

找不到路徑,此時就需要進行jdk環境變量的配置,再次之前需要輸入命令:echo $PATH,獲取java的路徑(看後面的PS註釋):
在這裏插入圖片描述
然後再輸入命令:vi /etc/profile,進入到jdk文件裏,還是第一篇博客一樣加入一下內容:

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/opt/java8
export CLASSPATH=.:$JAVA_HOME/rt.jar:$JAVA_HOME/tools.jar:$JAVA_HOME/dt.jar
export JRE_HOME=$JAVA_HOME/jre
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

這裏需要注意,第二行的jdk名稱如果之前有重命名過就要在這裏更改,還需要加上一行上面獲取的java路徑(即倒數第二行),然後保存退出。(PS:需要先將其他環境變量配置好後纔可以得到PATH的值,然後再回來加上倒數第二行!!!)退出後依然需要使之立即生效:source /etc/profile,然後輸入命令:java -version,能夠正確顯示版本號就說明配置成功。這時候再去重新 啓動es:./es622/bin/elasticsearch ,這裏要在es用戶下啓動,如果還是報之前的錯誤,只需要將MobaXterm重啓一下就可以了。
重啓之後,再次輸入:./es622/bin/elasticsearch,會加載數據,最後顯示的界面是:
在這裏插入圖片描述
然後使用windows,在瀏覽器中輸入網址:192.168.56.102:9200(主機號+9200),可以出現下面的界面就說明ES配置成功。
在這裏插入圖片描述

五、Head-master及node的配置

  首先還是需要進入jdk文件添加配置:vi /etc/profile,

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/opt/java8
export CLASSPATH=.:$JAVA_HOME/rt.jar:$JAVA_HOME/tools.jar:$JAVA_HOME/dt.jar
export JRE_HOME=$JAVA_HOME/jre
export NODE_HOME=/opt/node891
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$NODE_HOME/bin

一定要在PATH上方加:export NODE_HOME=/opt/node891(node891是之前設置的別名),然後再最後一行的末尾加上:$NODE_HOME/bin(以冒號連接)。然後保存退出,使之立即生效。輸入:node -v 可以查看是否配置成功,出現node的版本號說明配置成功。
  下面開始安裝Head-master,可以安裝一個加速器:

npm config set registry https://registry.npm.taobao.org 

然後輸入命令:

[root@promote opt]# cd /opt/eshead
[root@promote eshead]# npm install -g grunt-cli

此時需要等待一段時間(要有耐心啊,夥伴們)。出現下面結果即安裝成功。

added 150 packages in 28.177s

除此之外,還要安裝一個映像文件:

[root@bigdata01 eshead]# npm install phantomjs-prebuilt@2.1.14 --ignore-scripts

出現下面版本號即安裝成功:

+ phantomjs-prebuilt@2.1.14
added 95 packages in 7.697s
[root@bigdata01 eshead]#

安裝成功後需要配置兩個js文件,輸入命令:vi Gruntfile.js,進入之後:
在這裏插入圖片描述
在port: 9100下一行加入:

hostname: '*',

完成後保存退出。在輸入命令:vi _site/app.js。進入後找到4360行,輸入:4360gg直接跳到4360行。

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.56.102:9200";

將localhost改成自己的主機地址。保存退出。輸入命令:npm run start 啓動head-master,(這裏如果不成功,需要輸入命令:npm install,安裝成功之後,要確保之前的es622的啓動狀態),然後再啓動head-master。啓動成功之後,在windows輸入網址:192.168.56.102:9100,出現下面結果說明head-master安裝成功。
在這裏插入圖片描述
在這裏插入圖片描述

六、kibana安裝,配置

  輸入命令: cd /opt/kibana622/,再輸入:vi config/kibana.yml,進入之後跳到最後一行,在下一行加入參數:

server.host: "192.168.56.102"
elasticsearch.url: "http://192.168.56.102:9200"

然後保存退出。輸入命令:./bin/kinana 啓動kinana。在windows輸入網址:192.168.56.102:5601,出現以下結果就說明kinaba配置成功。
在這裏插入圖片描述

七、logstash實例測試

  輸入命令:cd /opt/logstash622 切換到logstash目錄下,輸入命令來測試logstash能否正常工作,等待時間要一小段時間:

[root@promote logstash622]# ./bin/logstash -e 'input { stdin{} } output { stdout{} }'

這裏最好在input和output的{}前後都有空格。出現下面結果表明可以正常工作:
在這裏插入圖片描述
abc 和 123是我輸入的內容,最後一行會有等待輸入的光標。
當然這裏將輸入的結果轉成json格式輸出,只需要在輸出命令里加上轉json格式的代碼:

[root@promote logstash622]# ./bin/logstash -e 'input { stdin{} } output { stdout{ codec => json } }'

可以得到輸出的結果爲json格式在這裏插入圖片描述
也可以轉成rubydebug類型輸出,命令如下:

[root@promote logstash622]# ./bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } elasticsearch { hosts => ["192.168.56.111"] } }'

結果如下:
在這裏插入圖片描述
同時已經將這些數據上傳到es上,可以登錄網址:192.168.56.111:9100進行查看
在這裏插入圖片描述
可以看到之前輸入的數據都上傳到es上面了。這樣就可以實現數據的共享。
除此之外,我們還可以使用logstash讀取文件信息。建一個文件夾tmp,然後在裏面新建兩個文件test.txt和test.conf,在test.txt文件中隨便輸入幾行內容然後保存退出,在test.conf中輸入以下內容:

input{
        file{
                path => "/opt/logstash622/tmp/test.txt"
                start_position => "beginning"
                sincedb_path => "/dev/null"
        }
}
output{
        stdout{
                codec => rubydebug
        }
        elasticsearch{
                hosts => ["192.168.56.111"]
        }
}

然後保存退出,test.conf文件讀取的文件內容是test.txt的文件,從頭開始讀取,增加sincedb_path,即linux系統特殊的空洞文件,當logstash每次重啓讀取sincedb內容,都是空的,也就理解成之前沒有記錄,自然從頭開始讀取。
配置完成後,輸入命令開始讀取文件內容:

./bin/logstash -f tmp/test.conf

可以成功打印test.txt文件的內容,並以rubydebug格式輸出,即可以正常使用logstash讀取文件。
在這裏插入圖片描述
此外,這些數據也自動上傳到es上,可以自行查看。這樣我們就完成了logstash的簡單的實例測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章