1、ELK介绍
ELK是三个开源软件的缩写,分别为:Elasticsearch 、 Logstash以及Kibana , 它们都是开源软件。不过现在还新增了一个Beats,它是一个轻量级的日志收集处理工具(Agent),Beats占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具,目前由于原本的ELK Stack成员中加入了 Beats 工具所以已改名为Elastic Stack。
Elastic Stack包含:
目前Beats包含六种工具:
ELK官网:
https://www.elastic.co/cn/
中文指南:
https://www.gitbook.com/book/chenryn/elk-stack-guide-cn/details
官方的安装文档:
https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html
ELK架构图:
准备工作:
1).下载Elasticsearch
在elk的官网上下载最新的Elasticsearch压缩包,并放到服务器的/usr/elk/目录下进行解压。
Elasticsearch下载地址:
https://www.elastic.co/cn/downloads/elasticsearch
安装命令如下:
cd /usr/elk/
tar -vxf elasticsearch-6.5.4.tar.gz #解压
2).下载jdk1.8
Elasticsearch只能在jdk1.8的环境下运行,由于服务器中其他应用使用的是jdk1.7,在此需要先下载jdk1.8压缩包解压到jdk1.7的同级目录下。
jdk1.8下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
安装命令如下:
cd /usr/java
tar -vxf jdk-8u191-linux-x64.tar.gz #解压
3).配置Elasticsearch使用jdk1.8启动
修改elasticsearch
的启动脚本(elasticsearch_HOME/bin/elasticsearch
),命令如下:
cd /usr/elk/elasticsearch-6.5.3/bin/
vim elasticsearch #编辑启动文件
在该该文件内容最前面添加以下代码:
export JAVA_HOME=/home/yutao/jdk1.8.0_121/
export PATH=$JAVA_HOME/bin:$PATHif [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/home/yutao/jdk1.8.0_121/bin/java"
else
JAVA=`which java`
fi
4).配置Elasticsearch监听ip和端口号
Elasticsearch默认地址是localhost:9200,需在/usr/elk/elasticsearch-6.5.3/config/elasticsearch.yml配置文件下,增加如下内容:
network.host: 192.168.202.175 #改配置已存在,放开注释修改原内容
http.port: 9200 #改配置已存在,放开注释即可
5).启动Elasticsearch
Elasticsearch由于可以接收执行客户端脚本,所以无法在root用户下启动,所以首先需要创建用户,命令如下:
useradd elastic #新建elastic用户
passwd elastic #给elastic设置密码
再将Elasticsearch文件夹相关权限授权给elastic用户,命令如下:
cd /usr/elk/
chown elastic elasticsearch-6.2.3 -R #给elastic用户授权
切换到elastic用户下,启动elasticsearch,命令如下:
su elastic #切换到用户
cd /usr/elk/elasticsearch-6.2.3/bin #切换到elasticsearch的bin目录下
./elasticsearch -d #后台启动elasticsearch
Elasticsearch启动成功后,可通过浏览器访问如下地址查看是否启动成功:
http://192.168.202.175:9200
如果启动成功,则会显示:
6).elasticsearch集群
以上步骤为elasticsearch单机版搭建,集群版即在不同的服务器上同时安装elasticsearch,或者在一个服务器上安装多个elasticsearch,然后修改如下配置文件即可:
vim /usr/elk/elasticsearch-6.5.3/config/elasticsearch.yml
添加如下配置:
#集群名称(必须一样)
cluster.name: carryless-es
#节点名称(必须不一样)
node.name: node-0
#本机的IP地址
network.host: 192.168.31.157
#服务的端口号(在本地配置多个时,请注意修改为不一样的端口)
http.port: 9200
#服务发现端口(在本地配置多个时,请注意修改为不一样的端口)
transport.tcp.port: 9300
#集群发现IP集合
discovery.zen.ping.unicast.hosts: ["192.168.31.58:9300", "192.168.31.58:9301","192.168.31.58:9302"]
其他节点上对应的配置文件按上面配置,将节点名称、IP地址、端口号对应修改,然后将服务依次启动即可,启动完成后可,通过访问如下地址查看集群情况:
http://192.168.77.128:9200/_cluster/health?pretty
7).排错记录
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
解决:原因为内存不足,需在需在/usr/elk/elasticsearch-6.5.3/config/jvm.options文件下修改jvm空间分配:
-Xms1g
-Xmx1g
修改为
-Xms512m
-Xmx512m
ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]
解决:切换到root用户,修改配置limits.conf。
vim /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解决:切换到root用户,修改配置sysctl.conf。
vim /etc/sysctl.conf
添加如下内容:
vm.max_map_count=655360
并执行命令:
sysctl -p
准备工作:
1).下载Logstash
在elk的官网上下载最新的Logstash压缩包,并放到服务器的/usr/elk/目录下进行解压。
Logstash下载地址:
https://www.elastic.co/downloads/logstash
安装命令如下:
cd /usr/elk/
tar -vxf logstash-6.5.3.tar.gz
2).配置Logstash
Logstash默认地址是localhost:9600,需修改如下配置文件:
vim /usr/elk/logstash-6.5.3/config/logstash.yml
增加如下内容
http.host: "192.168.202.175" #改配置已存在,放开注释修改原内容
http.port: 9600-9700 #改配置已存在,放开注释即可
Logstash默认指向Elasticsearch的地址是localhost:9600,需修改如下配置文件:
vim /usr/elk/logstash-6.5.3/config/logstash-sample.conf
修改如下配置:
output
elasticsearch
hosts => ["http://192.168.202.175:9200"]
3).启动Logstash
执行如下命令,启动Logstash:
cd /usr/elk/logstash-6.5.3/bin/
nohup ./logstash -f ../config/logstash-sample.conf > myout.file 2>&1 &
出现如下日志说明启动成功:
浏览器访问http://192.168.202.175:9600,显示如下内容:
准备工作:
1).下载Kibana
在elk的官网上下载最新的Kibana压缩包,并放到服务器的/usr/elk/目录下进行解压。
Kibana下载地址:
https://www.elastic.co/downloads/kibana
安装命令如下:
cd /usr/elk/
tar -vxf kibana-6.5.3-linux-x86_64.tar.gz
2).配置Kibana
vim /usr/elk/kibana-6.5.3-linux-x86_64/config/kibana.yml
增加如下内容:
# 配置kibana的端口
server.port: 5601
# 配置监听ip
server.host: 192.168.202.175
# 配置es服务器的ip,如果是集群则配置该集群中主节点的ip
elasticsearch.url: "http://192.168.202.175:9200"
# 配置kibana的日志文件路径,不然默认是messages里记录日志
logging.dest: /var/log/kibana.log
touch /var/log/kibana.log; chmod 777 /var/log/kibana.log
3).启动Kibana
执行如下命令,启动Kibana:
cd /usr/elk/kibana-6.5.3-linux-x86_64/bin
nohup ./filebeat -e -c filebeat.yml > myout.file 2>&1 &
启动成功后访问http://192.168.202.175:5601,显示如下内容:
准备工作:
1).下载Filebeat
在elk的官网上下载最新的Filebeat压缩包,并放到服务器的/usr/local/目录下进行解压。
Filebeat下载地址:
https://www.elastic.co/downloads/beats/filebeat
安装命令如下:
cd /usr/local/
tar -vxf filebeat-6.5.3-linux-x86_64.tar.gz
2).配置Filebeat
在filebeat的filebeat.yml文件需要修改配置:
vim /usr/local/filebeat-6.5.3-linux-x86_64/filebeat.yml
修改如下配置:
filebeat.inputs:
- type: log #type可配置多个
enabled: true #此配置修改成true,才可使日志采集器生效
paths:
- /usr/deployWarDir/nuocityRpc/logs/**/*.log #采集地址可配置多个,指向实际应用的日志输出路径
setup.kibana:
host: "192.168.202.175:5601"
output.elasticsearch:
hosts: ["192.168.202.175:9200"]
3).启动Filebeat
执行如下命令,启动Filebeat:
cd /usr/local/filebeat-6.5.3-linux-x86_64/
nohup ./filebeat -e -c filebeat.yml > myout.file 2>&1 &
启动成功后,可输入以下命令验证是否启动成功:
ps -ef | grep filebeat
显示以下内容说明启动成功: