最近项目中有用到elk,虽然说之前了解过,但是真的把它在项目中用起来,还是有点考验熟练度。在这里记一下自己操作时的步骤,方便个人学习使用。
一、基础环境
安装linux中的一个下载文件工具
yum -y install wget
安装JDK
1.下载jdk
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
2.修改权限
chmod 755 jdk-8u131-linux-x64.rpm
3.安装jdk
rpm -ivh jdk-8u131-linux-x64.rpm
jdk默认安装路径 /usr/java/jdk1.8.0_131
4.检查是否安装成功
输入命令java -version,结果如下就是安装成功(我这里安装的jdk1.8)
[root@VM-4-5-centos ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
5.配置环境变量
vim /etc/profile
在最后增加这几行
export JAVA_HOME=/usr/java/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
6.重新加载配置文件
source /etc/profile
二、安装elasticsearch
注意:
1.elasticsearch和kibana都不能用root用户启动,所以需要增加用户
2.elasticsearch、kibana、logstash 要使用对应版本(版本可以可以查官网,也可以直接址用相同版本)
0.创建用户并赋予相应权限
// 创建目录用来作为安装路径
mkdir /usr/local/elk
// 添加用户
useradd elk
passwd elk
// 赋予权限
chown -R elk:elk /usr/local/elk
用户创建成功之后,切换用户:su elk,一下操作使用elk用户操作
1.下载elasticsearch
cd /usr/local/elk/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.3-linux-x86_64.tar.gz
2.解压重命名
tar -zxvf elasticsearch-7.17.3-linux-x86_64.tar.gz
mv elasticsearch-7.17.3 elasticsearch
3.修改elasticsearch 配置文件(我这里启动的是单节点)
vim elasticsearch.yml
# 两个path路径需要我们自己创建一下目录,如果不存在
path.data: /usr/local/elk/elasticsearch/data
path.logs: /usr/local/elk/elasticsearch/log
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1"]
discovery.type: single-node
4.启动
bin/elasticsearch -d
5.启动报错解决
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错
#切换到root用户
vim /etc/security/limits.conf
末尾添加如下配置:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
[2]: max number of threads [1024] for user [es] is too low, increase to at least [4096]
无法创建本地线程问题,用户最大可创建线程数太小
vim /etc/security/limits.d/20-nproc.conf
改为如下配置:
* soft nproc 4096
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 最大虚拟内存太小,调大系统的虚拟内存
vim /etc/sysctl.conf
追加以下内容:
vm.max_map_count=262144
保存退出之后执行如下命令:
sysctl -p
[4]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
缺少默认配置,至少需要配置discovery.seed_hosts/discovery.seed_providers/cluster.initial_master_nodes中的一个参数.
vim config/elasticsearch.yml
#添加配置
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]
#或者 单节点(集群单节点)
discovery.type: single-node
三、安装Kibana
0.切换用户
su elk
1.下载kibana并且解压
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.3-linux-x86_64.tar.gz
tar -zxvf kibana-7.17.3-linux-x86_64.tar.gz
2.修改配置文件
vim config/kibana.yml
server.port: 5601
server.host: "0.0.0.0" #这里配置本地可能会做成其它机器访问不了
elasticsearch.hosts: ["http://localhost:9200"] #elasticsearch的访问地址
i18n.locale: "zh-CN" #Kibana汉化
3.启动kibana
nohup bin/kibana &
有如下日志字样内容的应该就启动成功了
"type":"log","@timestamp":"2022-09-03T19:47:17+08:00","tags":["info","status"],"pid":28767,"message":"Kibana is now degraded"
4.验证
浏览器访问 http://ip:5601/
5.访问问题解决
在访问 http://localhost:5601/ 时可能会出现,页面一直loadding的状态,如下图
这个时候不要急,打开F12看一下控制台,你可能会发现前台有这样一个一个错误
Uncaught Error: kbnBundles does not have a module defined for “entry/core/public”
这个错误是因为浏览器版本过低导致的,重新下载一个浏览器应该可以解决。我当时在这里卡在很久,网上也有看到说是版本过低,于是我查看了我的谷歌双核浏览器版本发现是最新的版本,直到最后我重新下载了一个firefox浏览器才发现,双核浏览器也是坑了我。
四、安装logstash
1.下载logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.3-darwin-x86_64.tar.gz
2.解压
tar -zxvf logstash-7.17.3-darwin-x86_64.tar.gz
3.目录重命名
mv logstash-7.17.3 logstash
4.验证
bin/logstash -e 'input { stdin { } } output { stdout {} }'
启动之后,直接在命令窗口 输入hello ,回车,看到有结果输出就ok了。
至此基础环境就搭建好了,但是想要将elk应用与服务中,获取日志,按结构化输出,还是需要对各个组件做更深的了解。