ELK相关搭建过程
关于ELK日志分析平台搭建过程
近段时间一直在进行老项目的微服务改造。其实之前的项目单一应用开发,用阿里的负载均衡做分布式的时候,关于日志一直有着诟病。日志产生在各个业务服务器中,服务器是内网无法通过ip单独进行访问日志,所以只能去服务器上download下来。不能通过域名访问,因为域名绑定到负载上,访问业务服务器是随机的。
借此微服务改造的机会,想把这样的问题给解决掉。通过收集一些资料,了解到现在主流的日志分析平台是ES公司的开源产品,包括elastic search、logstash还有kibana,统称为ELK。其中,es主要负责日志的存储和分析,logstash负责采集和过滤日志,kibana则是负责图形化的展现。
下面主要来为大家讲解ELK的搭建过程。
一、服务器
这次搭建是测试环境,服务器是阿里云的ECS,系统则是centos,配置为2核4G。ELK三个组件均是搭建到一台服务器上,配置勉强能够跑起来,具体能有多大负载,还需要进一步的测试。所需要开放的端口在阿里云控制台的安全组设置,在这里不再赘述。
二、准备工作
1、安装JDKElastic search所支持的最低版本是JAVA 8,所以在这之前需要先配置好jdk环境。我这里的服务器是由JAVA 7的镜像还原的,考虑到后期也有可能跑其它业务。所以这里并没有重新设置环境变量,只是下载了jdk。
2、创建用户ES为了安全起见不能由初始的root用户启动,所以需要额外创建用户。使用root登录系统:# useradd es# passwd es
对于linux不熟悉的我在使用SSH设置密码的时候,以为输入的密码会以明文或者*显示出来,结果输入后没有反应,还以为键盘坏了。
创建完用户后记得使用chown –R给用户分配权限。
三、elastic search搭建
选择所需版本,我下载的是最新版本。下载后的文件为elasticsearch.tar.gz。使用tar –zxvf命令将文件解压到指定目录。
解压好后先修改es的配置文件conf/elasticsearch.yml。主要是设置本机ip和端口,在后期与其它组件对接的时候都要用到。
然后就可以使用新创建的用户启动了。# ./bin/elasticsearch &
启动后可以在浏览器上访问。
浏览器显示类似这样的信息就表明启动成功了。
如果启动失败,需要去logs下查看日志。我在启动的时候碰到了虚拟内存不足的问题,需要将系统虚拟内存大于es最小内存限制即可。
四、log stash搭建
下载解压与上面步骤一样。
解压好之后同样到config下修改logstash.conf配置文件。
首先需要讲一样logstash收集日志的几种方式。Logstash的input数据源可以来自于文件,也可以通过数据库的形式,这里的数据库包括mysql、redis等。另外还可以使用beats插件的形式输入。我这里用的是TCP的形式,即日志产生后通过TCP协议传输给logstash。输入源可以设置不同的type,在过滤的时候判断不同type来进行不同的过滤方式。这种做法主要是考虑的并不是一类应用在使用logstash,不同的系统可以同时使用一个。
除了输入源需要设置外,还需要设置对日志的过滤,即filter的配置项。目前我在这里只是简单的将日志进行格式化,规定了储存到es的形式。
最后输出output需要将上一步搭建的ES的ip和端口配置至此。
这里的配置文件我就不截图了,网上有很多可以参考一下。
到这里log stash就搭建完了,启动即可,启动的时候加上-f指定到你修改的配置文件。另外别忘了对项目的改造,将业务系统日志输出到log stash上。
在spring boot项目中测试环境的配置文件修改原来的logging.file改为logging.config: classpath:logback-spring.xml。在resource下添加logback-spring.xml文件。文件内容如下图所示。
别忘了添加依赖。<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.1</version></dependency>
五、kibana搭建
下载安装不再说了,跟上面一样。
修改config下的kibana.yml,这里主要是配置kibana项目的端口,还需要配置ES。Kibana与logstash并不直接对接,它两个是靠ES连接起来的。最后启动就可以了。
虽然kibana搭建的篇幅很少,但我花在它的时间最长,当天下午搭建完后,后面的时间一直在琢磨如何使用kibana。不多不说kibana的页面设计我很喜欢,但是里面都是英文,对于我这个ES新手来说,并不会使用这个玩意。不多说了,列几个截图吧,最后感谢大家的浏览。
悦码
写下你的留言