一、創建Elk目錄,下載軟件壓縮包
登錄系統后,進入opt目錄,創建Elk文件夾
[root@localhost opt]# cd /opt/ [root@localhost opt]# mkdir ElK
下載軟件包
#node.js wget https://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-x64.tar.xz #jdk10 wget https://repo.huaweicloud.com/java/jdk/10.0.1+10/jdk-10.0.1_linux-x64_bin.tar.gz #elasearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.0-linux-x86_64.tar.gz #logstash wget https://artifacts.elastic.co/downloads/logstash/logstash-7.12.0-linux-x86_64.tar.gz #kibana wget https://artifacts.elastic.co/downloads/kibana/kibana-7.12.0-linux-x86_64.tar.gz
二、安裝node和jdk
解壓上面下載的壓縮包,命令如下:
tar -xvf node-v14.16.1-linux-x64.tar.xz
tar -zxvf jdk-10.0.1_linux-x64_bin.tar.gz
解壓完成后可以看到 “node-v14.16.1-linux-x64” 和 “jdk-10.0.1” 兩個文件夾,移動node到ElK文件夾下,
mv node-v14.16.1-linux-x64 ./ElK
配置jdk和node的系統PATH。
vim /etc/profile #java export JAVA_HOME=/opt/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib #nodejs export NODE_HOME=/opt/ElK/node-v14.16.1-linux-x64 export PATH=$PATH:$NODE_HOME/bin
保存退出后,執行: source /etc/profile 重新加載系統文件。驗證是否成功:
[root@localhost ElK]# node -v v14.16.1 [root@localhost ElK]# java -version java version "10.0.1" 2018-04-17 Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10) Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
出現上面輸出說明node和jdk配置成功了。
三、安裝elasearch
1.解壓壓縮包,把解壓之后的文件移動到ElK目錄下。
tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz
mv elasticsearch-7.12.0 ./ElK
2.編輯配置文件 config/elasticsearch.yml。
#打開以下配置並修改 cluster.name: myelasearch network.host: 0.0.0.0 #用於外部訪問 http.port: 9200 node.name: node-1 cluster.initial_master_nodes: ["node-1"] #文件結尾添加 http.cors.enabled: true http.cors.allow-origin: "*"
3.修改系統配置文件sysctl.conf,修改完記得重啟系統!!!
vi /etc/security/limits.conf #在文件末尾添加: * soft nofile 65535 * hard nofile 65535 sudo vi /etc/sysctl.conf #在文件末尾添加: vm.max_map_count=262144 reboot #重啟系統 ulimit -n #查看修改情況
4.elasticsearch在centos系統下不允許已root用戶啟動,所以我們創建一個新的用戶“elasticsearch”。
#創建用戶 adduser elasticsearch #密碼隨便輸入 passwd elasticsearch #給文件夾賦予用戶權限 chown -R elasticsearch /opt/ 切換用戶 su elasticsearch
5.啟動elasticsearch
#顯示啟動過程 ./bin/elasticsearch #后台啟動 ./bin/elasticsearch -d 后台啟動
第一次我選擇的顯示啟動過程,啟動成功后,重新打開一個窗口,看到以下返回說明elasticsearch 啟動成功了,然后 “Ctrl +c”停用服務,改用后台啟動。
[root@localhost config]# curl 127.0.0.1:9200 { "name" : "node-1", "cluster_name" : "myelasearch", "cluster_uuid" : "8t26YSY_Tly36t8EsdswmA", "version" : { "number" : "7.12.0", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "78722783c38caa25a70982b5b042074cde5d3b3a", "build_date" : "2021-03-18T06:17:15.410153305Z", "build_snapshot" : false, "lucene_version" : "8.8.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } [root@localhost config]#
想要停止服務時,輸入 “ps -ef | grep elasticsearch”,然后 kill 對應的進程id。
[root@localhost logs]# ps -ef | grep elasticsearch root 1785 1743 0 14:53 pts/0 00:00:00 su elasticsearch elastic+ 1930 1 3 14:54 pts/0 00:05:12 /opt/jdk-10.0.1/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.locale.providers=SPI,COMPAT --add-opens=java.base/java.io=ALL-UNNAMED -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.io.tmpdir=/tmp/elasticsearch-2768486000531970052 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m -Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=536870912 -Des.path.home=/opt/ElK/elasticsearch-7.12.0 -Des.path.conf=/opt/ElK/elasticsearch-7.12.0/config -Des.distribution.flavor=default -Des.distribution.type=tar -Des.bundled_jdk=true -cp /opt/ElK/elasticsearch-7.12.0/lib/* org.elasticsearch.bootstrap.Elasticsearch -d elastic+ 1945 1930 0 14:54 pts/0 00:00:00 /opt/ElK/elasticsearch-7.12.0/modules/x-pack-ml/platform/linux-x86_64/bin/controller root 2857 1764 0 17:20 pts/1 00:00:00 grep --color=auto elasticsearch [root@localhost logs]# kill 1930
重啟服務可能遇到的問題:TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block,可以參考下面配置。
關鍵的參數cluster.routing.allocation.disk.threshold_enabled
(es可以根據磁盤使用情況來決定是否繼續分配shard。默認設置是開啟的).
為了在本地單機上測試,我自己電腦磁盤空間剩下沒多少了,修改elasticsearch.yml,設置cluster.routing.allocation.disk.threshold_enabled: false。
如果后續虛擬機磁盤空間不夠,啟動失敗了可以刪除了data,logs里的文件。
四、安裝logstash
解壓壓縮包,把解壓之后的文件移動到ElK目錄下,編輯配置文件config/logstash.yml
#打開並修改以下配置,用於外部訪問 http.host: 0.0.0.0
在bin目錄下創建 logstash.conf 文件,並寫入下面代碼,保存退出。
input { file { path => ["/opt/logs/*.log"] codec => json { charset => "UTF-8" } } } output { elasticsearch { hosts => ["http://127.0.0.1:9200"] index => "ceshi-%{+YYYY.MM.dd}" #user => "elastic" #password => "changeme" } }
下面兩種方式選一種啟動logstash。
./bin/logstash -f ./bin/logstash.conf #顯示執行過程 nohup ./bin/logstash -f ./bin/logstash.conf & #后台執行
啟動成功后,驗證:
[root@localhost bin]# curl 127.0.0.1:9600 {"host":"localhost.localdomain","version":"7.12.0","http_address":"0.0.0.0:9600","id":"d562e790-449c-471a-a85f-0beaf4744866","name":"localhost.localdomain","ephemeral_id":"520d56fa-bdd1-438b-a3ff-8afe292f55fe","status":"green","snapshot":false,"pipeline":{"workers":1,"batch_size":125,"batch_delay":50},"build_date":"2021-03-18T05:13:33Z","build_sha":"4399d72a9afe6f06db8adbaad8030e5b111e86b6","build_snapshot":false}[root@localhost bin]#
如果看到上面輸出,說明成功了。
五.安裝kibana
解壓壓縮包,把解壓之后的文件移動到ElK目錄下,編輯配置文件config/kibana.yml。
#端口 server.port: 5601 #外部訪問 server.host: "0.0.0.0" #調整為中文 i18n.locale: "zh-CN"
選擇一種方式啟動kibana。
#顯示過程啟動 ./bin/kibana #后台啟動 nohup ./bin/kibana
啟動成功后,用windows宿主機訪問虛擬機ip+5601 訪問kibana。出現下面界面啟動成功。
六、創建索引模式
在上面logstash配置文件(logstash.conf)中path目錄下創建一個日志文件,隨便輸入一些內容。
[root@localhost logs]# cd /opt/logs [root@localhost logs]# vim test.log [root@localhost logs]#
點擊“創建索引模式”,創建索引。
成功后點擊左側“Discover”,進入搜索界面,ELK日志系統搭建完成。
netstat -lnp | grep 5601 查看端口占用情況。
kill -9 端口號 中斷進程。