一、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的簡單的實例測試。