当前位置 : 主页 > 操作系统 > centos >

ELK海量日志平台部署与问题处理

来源:互联网 收集:自由互联 发布时间:2022-06-20
一、安装前准备 安装前需要下载如下安装包: 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 所有安装包全部存放在/hom

一、安装前准备

安装前需要下载如下安装包:

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

ELK海量日志平台部署与问题处理_搜索

保存退出

nohup bin/elasticsearch &启动程序

2.2 问题处理总结

l Java版本要求为jdk8

ELK海量日志平台部署与问题处理_elasticsearch_02

提示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    将下图中的内容全部注释掉

ELK海量日志平台部署与问题处理_搜索_03

在内容下面添加一行JAVA=/data/was/elk/jdk1.8.0_162/bin/java,将java变量路径写死,再次启动nohup bin/elasticsearch &,之后观察端口还是没有启动,观察log/ elasticsearch.log日志发现如下报错:

ELK海量日志平台部署与问题处理_ELK_04

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进行检测,报错如下:

ELK海量日志平台部署与问题处理_elasticsearch_05

解决方法如下:

在config/elasticsearch.yml增加如下内容

bootstrap.system_call_filter: false

启动elasticsearch,

Cd /home/was/elk/elasticsearch-6.2.4

Nohup bin/elasticsearch&

Netstat -antp|grep 32200检测端口是否已经开启,可以发现端口已经开启,查看日志,服务已正常启动。

ELK海量日志平台部署与问题处理_linux_06

测试:curl ​​http://10.218.117.1:32200​​,出现如下返回,说明安装启动成功。

ELK海量日志平台部署与问题处理_搜索_07

三、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

ELK海量日志平台部署与问题处理_linux_08

参数说明:

server.port: kibana服务启动的端口号

server.host:kibana服务器地址

elasticsearch.url: es服务主节点地址

i18n.defaultLocale:设置字符编码

保存退出并启动kibana服务

Nohup bin/kibana&

Netstat -antp|grep 28080端口是否开启

ELK海量日志平台部署与问题处理_linux_09

因本地终端无法直接访问该服务器,因此中间使用nginx做了一个代理转发,访问连接如下

​​http://10.96.19.191:28001​​ 

ELK海量日志平台部署与问题处理_elasticsearch_10

说明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环境变量路径

ELK海量日志平台部署与问题处理_linux_11

vi config/logstash-SystemOut.conf

ELK海量日志平台部署与问题处理_elasticsearch_12

参数说明:

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​​

ELK海量日志平台部署与问题处理_elasticsearch_13

6.2 添加日志索引

ELK海量日志平台部署与问题处理_搜索_14

点击management中的index patterns进行索引创建,输入logstash*,可以直接匹配到前段logstash中配置的所有日志索引名称,点击下一步

ELK海量日志平台部署与问题处理_ELK_15

点击如上下拉箭头,选中@timestamp,点击create创建,完成创建日志索引的步骤。

6.3进入日志搜索界面

点击首页左上方的Discover选项,进入日志搜索界面

ELK海量日志平台部署与问题处理_linux_16

6.4日志搜索界面添加需要的索引字段信息

ELK海量日志平台部署与问题处理_ELK_17

如上图所示,通过点击Available Fields下拉菜单中的各个索引字段进行add添加,将需要的索引添加到Selected Fields菜单中进行展示,一般只需要添加host/source/message三个字段即可,效果见上图

6.5 选择时间范围

ELK海量日志平台部署与问题处理_ELK_18

点击界面右上方的带时间图标的按钮,即可选中时间范围,详情如下:

ELK海量日志平台部署与问题处理_ELK_19

可以自行选择最近15分钟、30分钟、1小时等等范围内搜索,具体根据自己需要查询报障发生的时间点;

6.6 根据关键字搜索日志

建议关键字使用  ”关键字” 这种格式进行搜索,如下:

ELK海量日志平台部署与问题处理_linux_20

搜索后显示结果如上图,可以根据业务报错信息进一步匹配到相关的报错信息,如”工号”、”订单保存失败:错误原因:null”,如需查看详细的报错信息,请点击time列的下拉箭头,如下:

ELK海量日志平台部署与问题处理_elasticsearch_21

即可在message里面查看报错明细。

至此,elk日志平台搭建部署完成。


网友评论