一、背景

当生产环境web服务器做了负载集群后,查询每个tomcat下的日志无疑是一件麻烦的事,elk为我们提供了快速查看日志的方法。这里是自己搭建的一套,后续会介绍使用阿里云的日志服务。

二、环境

CentOS7、JDK8、这里使用了ELK5.0.0(即:Elasticsearch-5.0.0、Logstash-5.0.0、kibana-5.0.0),安装ElasticSearch6.2.0也是一样的步骤,已亲测。

三、注意

  • 安装ELK一定要JDK8或者以上版本。

  • 关闭防火墙:systemctl stop firewalld.service

  • 启动elasticsearch,一定不能用root用户,需要重新创建一个用户,因为elasticsearch会验证安全。

  • 官网历史版本下载:https://www.elastic.co/downloads/past-releases

四、Elasticsearch安装

1.用root登录centos,创建elk组,并且将elk用户添加到elk组中,然后创建elk用户的密码

2.进入/usr/local目录,创建elk目录,并将该目录的使用权赋给elk用户。下载elasticsearch,可以从官网下载,也可以直接使用wget下载,这里使用wget下载

3.使用root用户,进入/usr/local/elk/elasticsearch-5.0.0/config目录,编辑 elasticsearch.yml ,修改以下参数:

将data/elk目录的使用权限 赋予 elk用户:

4.使用root用户,修改/etc/sysctl.conf 配置文件,在最后一行添加:vm.max map count=262144, 然后使其生效:sysctl -p /etc/sysctl.conf。如果不配置这一个的话,启动es会报如下错误:

5.使用root用户,修改/etc/security/limits.conf文件,添加或修改如下行:

如果不配置,会报如下错误:

6.切换到elk用户,启动es(直接后台启动了,加上 -d 即为后台启动,配置完4、5步骤基本不会出什么问题了),

7.验证是否启动成功,输入以下命令:

当看到如下时,即为启动成功:

或者使用浏览器访问:192.168.1.66:9200

但是6版本集成了x-pack插件,可能会出现如下:

需要加上用户名密码,如下:

五、Logstash安装

1.下载logstash5.0.0,也是使用 wget下载,解压logstash

2.编辑 usr/local/elk/logstash-5.0.0/config/logstash.conf 文件,这是一个新创建的文件,在文件中添加如下内容:

logstash的配置文件须包含三个内容:

  • input{}:此模块是负责收集日志,可以从文件读取、从redis读取 或者 开启端口让产生日志的业务系统直接写入到logstash,这里使用的是:开启端口让产生日志的业务系统直接写入到logstash

  • filter{}:此模块是负责过滤收集到的日志,并根据过滤后对日志定义显示字段

  • output{}:此模块是负责将过滤后的日志输出到elasticsearch或者文件、redis等,生产环境中可以将 stdout 移除掉,防止在控制台上打印日志。

3.启动logstash,先不以后台方式启动,为了看logstash是否可以启动成功

当看到控制台上出现如下内容时,即为启动成功:

Ctrl+C,关闭logstash,然后 后台启动:

六、Kibana安装

1.下载并解压Kibana,wget下载:

2.修改/usr/local/elk/kibana-5.0.0-linux-x86_64/config/kibana.yml文件,修改内容如下:

3.启动Kibana,后台启动:

4.浏览器访问:x.x.x.x:5601,然后配置索引匹配,如下:

七、使用logback向logstash中写入日志

1.新建一个SpringBoot工程,引入 logstash需要的jar包依赖:

2.添加 logback.xml 文件,内容如下:

3.application.properties文件中配置使用 我们刚刚加入的logback.xml文件

4.新建一个测试类,如下:

在浏览器中输入:192.168.1.66:5601,选中 左侧菜单中的Discover,然后在 下图框中输入'66666'(注意:单引号代表模糊查询,双引号代表精确查询),回车,看到下图中可以查询出刚刚LogTest中输入的日志,说明logback已经可以向logstash中写入日志了。

相关文章