一、创建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 端口号 中断进程。