一、简介
二、安装配置
1、软件清单
jdk 1.8.0_144
elasticsearch/logstash/kibana/filebeat 5.5.2
说明:
(1)jdk
①logstash安装时需要检测系统java运行环境,以此安装正确的启动方法。同时要求1.8版本以上Java,不支持Java 9。
②
建议使用Oracle版本,而不是操作系统自带的OpenJDK。
-
检查预载的jdk信息 rpm -qa|grep jdk
-卸载 yum -y remove java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.i686
-配置java运行环境 编辑/etc/profile,新增如下内容
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-使配置生效 source /etc/profile
-检查配置 echo $PATH
(2)为了减少版本选择的困扰,从5.0版本开始,ELK升级为ElasticStack,并将各个产品的版本进行统一。每一次升级,所有产品的版本信息都会同时更新。
2、下载与安装
(1)根据服务器情况以及安装方式选择相应的安装包,由于这里演示的是最简单的安装方式,我们直接选择LINUX 32/64-BIT(kibana/filebeat)和TAR.GZ(elasticsearch/logstash)。
(2)出于安全考虑,elasticsearch默认不允许以root身份启动,可以通过修改配置实现。这里建议为elk创建用户组与用户。
-添加用户组 group elasticstack
-添加用户 useradd -g elasticstack elasticstack
-添加用户密码 passwd elasticstack
(3)使用elasticstack登陆,上传安装包,解压elk到服务器指定位置
-解压 tar -xzf elasticsearch-5.5.2.tar.gz
3、配置
elk的各个配置文件使用yaml语言编写,位于相应软件的config目录下,elasticsearch.yml/logstash.yml/kibana.yml。
(1)elasticsearch
①将elasticsearch.yml的network.host
设为安装elasticsearch的服务器ip,不能使用localhost/127.0.0.1/0.0.0.0。如:
network.host: 10.0.7.227。
②启动(加参数d,可以后台运行)
./bin/elasticsearch
③检查
浏览器访问elasticsearch服务器,默认端口为9200。如:
http://10.0.7.227:9200/ 。即可以查看es信息。
注意:
①开放服务器相应端口。
②需要增大elasticstack用户能打开的文件数量至65536以上。切换root用户,修改/etc/security/limits.conf,添加以下内容,保存退出文件后,退出服务器重新登陆即可生效。
elasticstack soft nofile 65536
elasticstack hard nofile 131072
③需要增大一个进程可以拥有的虚拟内存区域的数量。切换root用户,修改/etc/sysctl.conf,添加以下内容,并使用sysctl -p使配置生效。
vm.max_map_count=655360
④这种“开箱即用”的方式,默认的数据与日志文件存放在应用目录下,在升级或卸载时将会带来安全隐患。通过修改配置文件的path.data与path.logs项即可。
elasticsearch默认数据与日志文件位置:
./elasticsearch-5.5.2/data/
./elasticsearch-5.5.2/logs/
修改配置:
path.data: /home/elasticsearch/elk/data/elasticsearch/
path.logs: /home/elasticsearch/elk/log/elasticsearch/
⑤elasticsearch head是一款通过界面管理elasticsearch索引等信息的插件,可以在chrome应用店下载也可以在github上得到更多的安装方式。
(2)logstash
logstash.yml完成有关工作线程、队列等等配置,以此提高资源的利用率,我们使用默认即可,更详细的配置信息可以参阅官方文档。logstash在elasticstack中完成的主要工作是将收集的日志进行过滤与整理,再传递给elasticsearch。其运行依赖“管道”文件。
①在config目录中创建一个文件,用于定义我们的输入输出与过滤规则。以我编写的first-pipeline.conf做简要说明:
#input定义数据来源
input {
#beats插件为官方提供的用于接收filebeat/packetbeat/winlogbeat等beats产品传送的数据
#这里我们只需监听logstash默认端口即可
beats { port => 5044 }
}
#定义过滤规则,logstash将会从日志取得符合规则的信息,并整理成单个字段,以方便我们在kibana
检索
数据
filter {
#使用grok表达式灵活定义,更多插件请参阅官方文档
grok{
#指定自定义表达式文件位置
patterns_dir => ["/usr/local/logstash-5.5.2/config/patterns"]
#用message字段进行规则匹配
match => {
"message" => "%{LOG:LEVEL}\^\^%{LOG:TIMESTAMP}\^\^%{LOG:REQUEST_ID}\^\^%{LOG:IP}\^\^%{LOG:REQUEST_URL}\^\^%{LOG:USERID}\^\^%{LOG:REQUEST_PARAM}\^\^%{LOG:OPERATION}\^\^%{LOG:OBJECT}\^\^%{LOG:OLD_VALUE}\^\^%{LOG:NEW_VALUE}\^\^%{LOG:DESCRIPTION}\^\^%{LOG:RESULT}\^\^%{LOG:JAVACLASS}"
}
}
}
#将处理之后的日志输出至elasticsearch
output {
elasticsearch { hosts => ["10.0.7.227:9200"]
}
②运行
./logstash-5.5.1/bin/logstash -f ./logstash-5.5.1/config/first-pipeline.conf
常见运行参数:
-f 指定配置文件
-e 指定配置字符串
-l 指定日志输出地址
-t 测试配置文件是否正确
③检查
使用ps -ef|grep logstash命令检查进程是否启动,或修改运行命令为./logstash -e 'input { stdin { } } output { stdout {} }',logstash将从标准输入接收数据,并返回至标准输出,也就是将屏幕上将返回你键入的数据。
(3)kibana
①修改kibana.yml
server.host: "10.0.7.227"
elasticsearch.url: "
http://10.0.7.227:9200";
②运行
./bin/kibana
③检查
浏览器访问
http://10.0.7.227:5601
(4)filebeat
filebeat负责业务日志收集,解压安装在业务服务器上
①修改filebeat.yml,指定监听的日志文件并设置输出至logstash
filebeat.prospectors:
- input_type: log
paths:
- /data/usr/tomcat/logs/log.*
output.logstash:
hosts: ["10.0.7.227:5044"]
②运行
./filebeat -e -c filebeat.yml
③检查
浏览器访问10.0.7.227:5601,进入kibana,创建logstash-*索引,即可在Discover页查看到所有日志
三、参阅资料
1、elasticstack官方文档
https://www.elastic.co/guide/index.html
2、elasticsearch中文指南
https://kibana.logstash.es/content/
3、elasticsearch中文社区
https://elasticsearch.cn/
4、grok debugger
https://grokdebug.herokuapp.com/