一、安装前准备
安装前需要下载如下安装包:
elasticsearch-6.2.4.tar.gz
filebeat-6.2.4-linux-x86_64.tar.gz
jdk-8u162-linux-x64.tar.gz
kibana-6.2.4-linux-x86_64.tar.gz
logstash-6.2.4.tar.gz
所有安装包全部存放在/home/was/elk或/data/was/elk下面
二、elasticsearch服务端安装(10.218.117.1-10)
2.1 安装elasticsearch-6.2.4.tar.gz
cd /data/was/elk
tar fxz elasticsearch-6.2.4.tar.gz 解压安装包
cd elasticsearch-6.2.4
vi config/elasticsearch.yml
保存退出
nohup bin/elasticsearch &启动程序
2.2 问题处理总结
l Java版本要求为jdk8
提示elasticsearch 需要的java最低版本是8,因此需要安装jdk8,并更改elasticsearch 的启动环境变量,如下:
Cd /data/was/elk
Tar fxz jdk-8u162-linux-x64.tar.gz
cd /data/was/elk/elasticsearch-6.2.4
vi bin/elasticsearch-env 将下图中的内容全部注释掉
在内容下面添加一行JAVA=/data/was/elk/jdk1.8.0_162/bin/java,将java变量路径写死,再次启动nohup bin/elasticsearch &,之后观察端口还是没有启动,观察log/ elasticsearch.log日志发现如下报错:
l 内存权限大小与最大打开文件数调优
提示elasticsearch用户拥有的内存权限太小,至少需要262144, 可创建文件描述的权限太低,至少需要65536,因此使用root修改系统参数,如下
在 /etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144
sysctl -p立即生效
vi /etc/security/limits.conf
# 在最后面追加下面内容
*** hard nofile 65536
*** soft nofile 65536
在was用户下面执行export命令将变量重新导入一下即可生效。
l Redhat6不支持SecComp。而es6默认bootstrap.system_call_filter为true进行检测,报错如下:
解决方法如下:
在config/elasticsearch.yml增加如下内容
bootstrap.system_call_filter: false
启动elasticsearch,
Cd /home/was/elk/elasticsearch-6.2.4
Nohup bin/elasticsearch&
Netstat -antp|grep 32200检测端口是否已经开启,可以发现端口已经开启,查看日志,服务已正常启动。
测试:curl http://10.218.117.1:32200,出现如下返回,说明安装启动成功。
三、kibana安装与配置(10.96.169.135)
Cd /home/was/elk
Tar fxz kibana-6.2.4-linux-x86_64.tar.gz
Cd kibana-6.2.4-linux-x86_64
编辑配置文件
vi config/kibana.yml
参数说明:
server.port: kibana服务启动的端口号
server.host:kibana服务器地址
elasticsearch.url: es服务主节点地址
i18n.defaultLocale:设置字符编码
保存退出并启动kibana服务
Nohup bin/kibana&
Netstat -antp|grep 28080端口是否开启
因本地终端无法直接访问该服务器,因此中间使用nginx做了一个代理转发,访问连接如下
http://10.96.19.191:28001
说明kibana服务安装启动成功。
四、logstah安装与配置(10.96.169.135)
cd home/was/elk/
tar fxz logstash-6.2.4.tar.gz
cd logstash-6.2.4
vi bin/logstash.lib.sh更改java环境变量路径
vi config/logstash-SystemOut.conf
参数说明:
input:logstash收集配置,其中beats说明是beat服务收集数据传输给logstash,port是logstash对外提供的端口号;
filter:logstash的过滤参数,可以过滤传输过来的一些信息;
output:logstash将日志信息输出给es服务,hosts里面配置集群地址;index配置索引文件名称。
保存退出启动服务
nohup bin/logstash -f config/ logstash-SystemOut.conf
五、filebeat安装配置
将filebeat分别拷贝到需要采集的服务器(所有前台app)解压,在这里我们分别采集Nginx,tomcat日志
5.1 filebeat配置
Was服务器:
cd /data/was/elk/filebeat-6.2.4-linux-x86_64
[user@localhost filebeat-6.2.4-linux-x86_64]$ vi filebeat.yml
filebeat.prospectors:
- type: log
encoding: GB2312 编码格式,不设置的话不支持中文(依据linux设置)
enabled: true
paths:
- /data/was/boss_app/*/logs/*srv/SystemOut.log 需要采集的日志路径
fields:
multiline.pattern: ^\[ ###如下三项设置后,日志会显示的更完整
multiline.negate: true
multiline.match: after
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 3
output.logstash: ###logstash相关配置
hosts: ["10.96.169.135:21820"]
topic: waslog
[user@localhost filebeat-6.2.4-linux-x86_64]$nohup filebeat -c filebeat.yml &
5.2 问题处理总结
filebeat的使用,极大的降低了客服端采集数据的资源消耗,但其默认配置不支持中文,不支持关键字匹配整行数据,kibana显示时会将一整行数据拆分为多行,因此必须增加如下配置:
encoding: GB2312
multiline.pattern: ^\[ ###如下三项设置后,日志会显示的更完整
multiline.negate: true
multiline.match: after
至此,elk海量日志平台部署完成,可以正式投入使用;
六、kibana日志搜索使用
6.1 首页
打开链接http://10.96.19.191:28001
6.2 添加日志索引
点击management中的index patterns进行索引创建,输入logstash*,可以直接匹配到前段logstash中配置的所有日志索引名称,点击下一步
点击如上下拉箭头,选中@timestamp,点击create创建,完成创建日志索引的步骤。
6.3进入日志搜索界面
点击首页左上方的Discover选项,进入日志搜索界面
6.4日志搜索界面添加需要的索引字段信息
如上图所示,通过点击Available Fields下拉菜单中的各个索引字段进行add添加,将需要的索引添加到Selected Fields菜单中进行展示,一般只需要添加host/source/message三个字段即可,效果见上图
6.5 选择时间范围
点击界面右上方的带时间图标的按钮,即可选中时间范围,详情如下:
可以自行选择最近15分钟、30分钟、1小时等等范围内搜索,具体根据自己需要查询报障发生的时间点;
6.6 根据关键字搜索日志
建议关键字使用 ”关键字” 这种格式进行搜索,如下:
搜索后显示结果如上图,可以根据业务报错信息进一步匹配到相关的报错信息,如”工号”、”订单保存失败:错误原因:null”,如需查看详细的报错信息,请点击time列的下拉箭头,如下:
即可在message里面查看报错明细。
至此,elk日志平台搭建部署完成。