ELK是目前最流行的日志分析套件,基于lucene,提供全文检索功能,ES是目前最快的索引型数据库并提供RESTful接口,对开发人员很友好,横向扩展,Logstash提供多种插件,支持各类日志格式的定制和插件并实时将日志内容写入ES或其他目标源,Kibana提供对ES数据的展示功能,多用于日志检索,实时报表。
已经是大名鼎鼎的产品了,不多废话,直接上干货,这里就使用目前最新的7.7.0版本。
下载
全部下载: https://www.elastic.co/cn/downloads
ES: https://www.elastic.co/cn/downloads/elasticsearch
Kibana: https://www.elastic.co/cn/downloads/kibana
Logstash: https://www.elastic.co/cn/downloads/logstash
Filebeat: https://www.elastic.co/cn/downloads/beats/filebeat
这里下载tar.gz版。
-------------------------------------安装----------------------------------
JDK
ES是基于JVM的,所以需要安装1.8的JDK。
rpm -ivh jdk-8u192-linux-x64.rpm
vi /etc/profile
export JAVA_HOME=/usr/java/latest
vi ~/.bash_profile
export PATH=$JAVA_HOME/bin:$PATH
#刷新环境变量
source /etc/profile
source ~/.bash_profile
查看java版本:
java -version
2020-07-10 更新: 下面的代码中用到的如$ES_HOME,$LS_HOME等环境变量也是使用这种方式来配置,在使用sudo命令执行shell时,实际执行脚本的是sudo后的用户,因此需要先切换到那个用户之后刷新环境变量,再执行sudo命令;否则会报错找不到该环境变量;
ElasticSearch
解压tar包
tar zxvf elasticsearch-7.7.0-linux-x86_64.tar.gz -C /opt/app/
创建data和logs目录
mkdir /opt/app/elasticsearch-7.7.0/data
mkdir /opt/app/elasticsearch-7.7.0/logs
配置文件
vim /opt/app/elasticsearch-7.7.0/config/elasticsearch.yml
cluster.name: MyES #集群名称
node.name: node01 #本节点名称
path.data: /opt/app/elasticsearch-7.7.0/data #数据存储目录
path.logs: /opt/app/elasticsearch-7.7.0/logs #日志存储目录
network.host: 0.0.0.0 #所有机器都可监听
http.port: 9200 #默认端口
cluster.initial_master_nodes: ["node01"] #主节点名称,与上面配置的保持一致
JVM配置
因为ES是基于Java开发的,所以依赖于JVM,有需求可以修改JVM属性:
vim /opt/app/elasticsearch-7.7.0/config/jvm.options
-Xms4g
-Xmx4g
创建elk用户
ES不允许使用root用户启动,所以我们创建一个elk用户:
useradd elk
chown -R elk:elk elasticsearch-7.7.0
启动:
su elk
$ES_HOME/bin/elasticsearch
报错:
ERROR: [3] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: Elasticsearch did not exit normally - check the logs at /opt/app/elasticsearch-7.7.0/logs/MyES.log
查看机器限制:
ulimit -Sn
ulimit -Hn
修改限制:
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
elk soft nproc 4096
elk hard nproc 4096
vim /etc/sysctl.conf
vm.swappiness = 0
vm.max_map_count=262144
执行命令sysctl -p另其生效:
切换elk用户再次启动ES,在浏览器中输入node01:9200验证,出现下面的结果说明已正常安装并启动:
编写启停脚本 start-es.sh以及stop-es.sh,编写后记得切换到elk用户刷新一下环境变量,否则会找不到$ES_HOME:
start-es.sh
sudo -u elk nohup $ES_HOME/bin/elasticsearch >> $ES_HOME/output.log 2>&1 &
stop-es.sh
#!/bin/bash
PROCESS=`ps -ef | grep 'elasticsearch-7.7.0' |grep -v grep | grep -v PPID | awk '{ print }'`
echo $PROCESS
for i in $PROCESS
do
echo "Kill the elasticsearch process [ $i ]"
kill -9 $i
done
Logstash
解压
tar -zxvf /home/wyk/logstash-7.7.0.tar.gz -C /opt/app/
解压即是安装结束,下面是个小例子:
新增一个配置文件: 读取日志文件打印到窗口中
vim $LS_HOME/config/logstash-csdn.yml
input {
# 从文件读取日志信息
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
filter {
}
output {
# 标准输出
stdout {}
}
执行配置文件:
cd $LS_HOME
bin/logstash -f config/logstash-csdn.yml
Kibana
解压
tar -zxvf /home/wyk/kibana-7.7.0-linux-x86_64.tar.gz -C /opt/app/
配置
vim config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"] #ES所在的ip
#elasticsearch.username: "kibana" #如果ES有配置用户则这里需要配置用户密码
#elasticsearch.password: "123456"
chown -R elk:elk /opt/app/kibana-7.7.0-linux-x86_64
启动:
$KB_HOME/bin/kibana
浏览器登录node01:5601 ,出现下面的界面即成功
编写启停脚本start-kb.sh 和stop-kb.sh
start-kb.sh
#!/bin/bash
sudo -u elk nohup $KB_HOME/bin/kibana > $KB_HOME/output.log 2>&1 &
stop-kb.sh
#!/bin/bash
PROCESS=`ps -ef | grep 'kibana' |grep -v grep | grep -v PPID | awk '{ print }'`
echo $PROCESS
for i in $PROCESS
do
echo "Kill the kibana process [ $i ]"
kill -9 $i
done