ELK6环境搭建
(一)什么是ELK Stack
ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。
- Elasticsearch 是一个搜索和分析引擎;
- Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中;
- Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
那什么又是什么是ELK Stack呢?在ELK社区发展壮大之后,又加入了一系列轻量型的单一功能数据采集器--Beats,所以Beats是一系列轻量型小工具。
图1.Beats工具集合
在加入Beats工具之后呢,ELK 这个名称又要变了,把它叫做 BELK?BLEK?ELKB?当时的确有过继续沿用首字母缩写的想法。然而,对于扩展速度如此之快的堆栈而言,一直采用首字母缩写的确不是长久之计,就这样,Elastic Stack 这个名字应运而生了。
所以目前的ELK Stack主要是包含了Elasticsearch 、Logstash、Kibana以及Beats,四个软件形成了如下的架构:
图2.ELK Stack架构
接下来我们通过安装ELK 6来了解ELK。
NOTE:本次安装版本为ELK6.5.4,此时ELK最新版本已经是7.9.1,不过公司使用的是6.5.4,因此安装较老的版本。
(二)基础信息
(2.1)操作系统信息
[root@elk6 ~]# cat /etc/centos-release CentOS Linux release 7.4.1708 (Core)
(2.2)基础软件安装包
elasticsearch-6.5.4 kibana-6.5.4-linux-x86_64 filebeat-6.5.4-linux-x86_64
安装包下载,我把所有本文涉及到的安装包都放在网盘里面了:
链接:https://pan.baidu.com/s/1Dzhif5V9Rm1fgwauanf1qQ
提取码:gege
或者也可以从有道云笔记附件下载,链接:http://note.youdao.com/noteshare?id=ab1426fe3c180a08ec540c36337616c5&sub=59BD56337C3D46B2B2F54F3FC2D44503 。
(2.3)安装用户及目录创建
创建安装用户elk,用户组elk
[root@elk6 ~]# groupadd elk
[root@elk6 ~]# useradd elk -g elk -p elk
创建安装目录/elk,后续会将elasticsearch、logstash、kibana安装到该目录。
[root@elk6 ~]# mkdir /elk [root@elk6 ~]# chown -R elk:elk /elk
(三)安装ELK组件
elk stack的安装主要包括elasticsearch、kibana、logstash、filebeat等,elk还需依赖java。
(3.1)安装Java
注意:使用root用户进行安装
elasticsearch的安装至少需要java8,安装方法如下:
STEP1:到Oracle官网下载java8,建议不要使用太新的,下载地址为:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html。
STEP2:安装java
# 使用rpm包直接安装 [root@elk6 ~]# rpm -ivh jdk-8u261-linux-x64.rpm warning: jdk-8u261-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY Preparing... ################################# [100%] Updating / installing... 1:jdk1.8-2000:1.8.0_261-fcs ################################# [100%] Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar... # 配置java的环境变量 [root@elk6 default]# vim /etc/profile # 在rofile文件末尾添加java的环境变量 export JAVA_HOME=/usr/java/default export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # 使环境变量生效 [root@elk6 default]# source /etc/profile
STEP3:查看安装情况
[root@elk6 default]# java -version java version "1.8.0_261" Java(TM) SE Runtime Environment (build 1.8.0_261-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode) [root@elk6 default]# echo $JAVA_HOME /usr/java/default
(3.2)安装elasticsearch
注意:使用elk用户进行安装
STEP1:解压elasticsearch安装包到/elk目录
[elk@elk6 ~]$ tar -xzvf elasticsearch-6.5.4.tar.gz -C /elk/
STEP2:查看安装包
[elk@elk6 ~]$ cd /elk/ [elk@elk6 elk]$ ll total 0 drwxr-xr-x. 8 elk elk 143 Dec 18 2018 elasticsearch-6.5.4
STEP3:启动elasticsearch
[elk@elk6 bin]$ ./elasticsearch -d
STEP4:检查是否启动成功,如果出现如下信息,则说明启动成功
[elk@elk6 ~]$ curl 127.0.0.1:9200 { "name" : "tif-YiB", "cluster_name" : "elasticsearch", "cluster_uuid" : "igsUakpeRse6-41h7aJbiw", "version" : { "number" : "6.5.4", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "d2ef93d", "build_date" : "2018-12-17T21:17:40.758843Z", "build_snapshot" : false, "lucene_version" : "7.5.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
问题记录:
问题1:只能使用127.0.0.1访问elasticsearch,其它IP无法访问。
需要修改配置文件elasticsearch.yml,将其设置为不限制访问的IP
[elk@elk6 config]$ pwd /elk/elasticsearch-6.5.4/config [elk@elk6 config]$ vim elasticsearch.yml network.host: 0.0.0.0
重启后报错:
ERROR: [2] bootstrap checks failed [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改Linux用户资源参数
vim /etc/security/limits.conf # 在最后面添加以下参数 * soft nofile 65536 * hard nofile 65536
修改内核控制参数
vim /etc/sysctl.conf # 在最后面添加以下参数 vm.max_map_count=655360
使内核参数生效
sysctl -p
然后退出elk用户,再次登录启用新的参数即可正常启动。
问题2:elk默认无法使用root用户执行
如果以root执行,会出现无法启动,后续再以elk用户执行,也启动不了,需要重新授权。
[root@elkserver ~]# cd /elk/ [root@elkserver elk]# ls -l total 4 drwxr-xr-x. 5 elk elk 57 Nov 15 17:22 elasticsearch drwxrwxr-x. 14 elk elk 271 Nov 15 22:09 kibana drwxrwxr-x. 13 elk elk 4096 Nov 16 00:48 logstash [root@elkserver elk]# chown -R elk:elk elasticsearch/
(3.3)安装kibana
注意:使用elk用户进行安装
STEP1:解压kibana安装包到/elk目录
[elk@elk6 ~]$ tar -xzvf kibana-6.5.4-linux-x86_64.tar.gz -C /elk/
STEP2:查看安装包
[elk@elk6 ~]$ cd /elk/ [elk@elk6 elk]$ ll total 0 drwxr-xr-x. 9 elk elk 155 Oct 14 14:36 elasticsearch-6.5.4 drwxrwxr-x. 11 elk elk 212 Dec 18 2018 kibana-6.5.4-linux-x86_64
STEP3:启动kibana
[elk@elk6 elk]$ cd kibana-6.5.4-linux-x86_64/bin/ [elk@elk6 bin]$ ls kibana kibana-keystore kibana-plugin [elk@elk6 bin]$ ./kibana
STEP4:登录kibana
使用浏览器登录kibana:http://192.168.10.100:5601。
问题记录:
问题1:kibana启动后,无法使用外部的网页进行访问。在服务器上执行如下命令,也未返回任何信息
[elk@elk6 config]$ curl http://localhost:5601 [elk@elk6 config]$
解决方法:修改kibana的配置文件,不限制访问kibana的主机
[elk@elk6 config]$ pwd /elk/kibana-6.5.4-linux-x86_64/config [elk@elk6 config]$ vim kibana.yml # 修改server.host为不限制访问 server.host: "0.0.0.0"
(3.4)安装logstash
注意:使用elk用户进行安装
logstash依赖于java,我们已经在前面安装过java了,这里可以忽略。如果是在单独的机器上安装logstash,那么需要先安装java。
STEP1:解压logstash安装包到/elk目录
[elk@elk6 ~]$ tar -xzvf logstash-6.5.4.tar.gz -C /elk/
STEP2:查看安装包
[elk@elk6 /]$ cd /elk [elk@elk6 elk]$ ll total 0 drwxr-xr-x. 9 elk elk 155 Oct 14 14:36 elasticsearch-6.5.4 drwxrwxr-x. 11 elk elk 212 Dec 18 2018 kibana-6.5.4-linux-x86_64 drwxrwxr-x. 12 elk elk 255 Oct 14 16:10 logstash-6.5.4
STEP3:启动logstash
[elk@elk6 bin]$ pwd /elk/logstash-6.5.4/bin 启动方式为./logstash -f 配置文件
(3.5)安装filebeat
注意:使用root用户进行安装
STEP1:filebeat一般都是安装在需要进行文件采集的服务器上,这里用另一台服务器来安装filebeat
[root@filebeatserver ~]# tar -xzvf filebeat-6.5.4-linux-x86_64.tar.gz -C /elk/
STEP2:查看解压后的文件
[root@filebeatserver filebeat-6.5.4-linux-x86_64]# pwd /elk/filebeat-6.5.4-linux-x86_64 [root@filebeatserver filebeat-6.5.4-linux-x86_64]# ll total 35452 -rw-r--r--. 1 root root 100372 Dec 18 2018 fields.yml -rwxr-xr-x. 1 root root 35930715 Dec 18 2018 filebeat -rw-r--r--. 1 root root 68183 Dec 18 2018 filebeat.reference.yml -rw-------. 1 root root 7610 Dec 18 2018 filebeat.yml drwxr-xr-x. 4 root root 24 Dec 18 2018 kibana -rw-r--r--. 1 root root 13675 Dec 18 2018 LICENSE.txt drwxr-xr-x. 20 root root 271 Dec 18 2018 module drwxr-xr-x. 2 root root 4096 Dec 18 2018 modules.d -rw-r--r--. 1 root root 163067 Dec 18 2018 NOTICE.txt -rw-r--r--. 1 root root 802 Dec 18 2018 README.md
STEP3:启动filebeat
[root@filebeatserver filebeat-6.5.4-linux-x86_64]# ./filebeat
到此ELK Stack的所有组件已经安装完毕,需要说明的是,ELK的安装相对简单,但是配置却十分复杂,本文并没有将如何配置beats、logstash等,后续会逐步展开,敬请期待。
【完】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?