1. 什么是ELK?
ELK是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
2. 为什么需要使用ELK?
ELK常用于日志收集和分析。日志主要包括系统日志、应用程序日志和安全日志。运维和开发人员可以通过日志了解服务器运行过程中发生的错误及错误产生的原因。定期分析日志可以了解服务器的运行情况、性能、安全性等。每台服务器或应用程序都会产生日志,如果每次都登录这些服务器查看日志并分析会耗费大量时间,而且效率低下,这时我们就需要思考如何将日志汇总起来统一查看。日志集中管理之后又会产生新的问题,日志量太大,日志统计和检索又成为新的问题,如何能实现高性能的检索统计呢?ELK能完美解决我们的问题。
- Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用。
- kibana 也是一个开源和免费的工具,它可以为 Logstash 和 Elasticsearch 提供的日志分析友好的 Web 界面,可以汇总、分析和搜索重要数据日志。
3. windows系统下如何使用ELK?
- 下载ELK
- 安装JDK
- 启动ELK
- 将ELK注册到windows服务
第一步:下载ELK
Elasticsearch:https://www.elastic.co/cn/elasticsearch/
Logstash:https://www.elastic.co/cn/logstash/
Kibana:https://www.elastic.co/cn/kibana
下载后解压,注意:解压目录中不要有中文,如下:
第二步:下载安装JDK
由于Logstash的运行依赖于Java运行环境,所以必须安装java环境,官网下载,双击根据向导安装即可。
安装成功后配置系统环境变量,如下:
查看是否安装成功:
第三步:启动ELK
由于Logstash服务依赖Elasticsearch,Kibana服务依赖Logstash和Elasticsearch,所以服务启动顺序如下:Elasticsearch -> Logstash -> Kibana
3.1 启动Elasticsearch服务
cmd进入elasticsearch目录,运行以下命令,启动ES服务,如下图:
bin\elasticsearch
看到这些内容说明ES已经启动成功,这时我们可以在浏览器中访问:http://localhost:9200/,出现以下内容说明启动成功了。
3.2 启动Logstash服务
3.2.1 配置Logstash服务
在logstash文件夹的bin目录里新建logstash.conf配置文件,参数内容根据自己需求自定义,我这边需要从kafka中获取日志数据,所以配置如下:
3.2.2 启动服务
cmd进入logstash下的bin目录,执行以下命令启动服务:
logstash -f logstash.conf
看到以上输出内容说明服务启动成功,这时我们可以在浏览器中访问:http://localhost:9600/,出现以下内容说明启动成功了。
3.3 启动Kibana服务
cmd进入Kibana下的bin目录,执行以下命令:
kibana
看到以上输出内容说明服务启动成功,这时我们可以在浏览器中访问:http://localhost:5601/,出现以下内容说明启动成功了。
至此,ELK在windows平台算是启动完成了。但是都是通过命令直接启动,如果电脑重启了我们还得将三个服务使用命令重启一次,太麻烦,这时我们会想到能否将三个服务加入到windows服务中,让其随着系统重启而自动重启呢?接下来我再简单说明下如何将三个服务注册到windows服务中。
第四步:将ELK注册到windows服务
4.1 安装配置elasticsearch服务
cd进入elasticsearch下bin目录,执行如下服务安装、配置命令:
elasticsearch-service install -- 安装ES elasticsearch-service manager --配置ES elasticsearch-service remove --卸载ES
注意:如果服务启动失败,是因为JDK版本问题,使用ES自带的JDK即可。解决方案如下:
打开bin目录下的elasticsearch-env.bat文件,找到如下代码:(从这段代码中可以看到ES会先找JAVA_HOME环境变量,如果没配置就使用ES自带的jdk。)
if defined JAVA_HOME ( set JAVA="%JAVA_HOME%\bin\java.exe" set JAVA_TYPE=JAVA_HOME ) else ( set JAVA="%ES_HOME%\jdk\bin\java.exe" set JAVA_HOME="%ES_HOME%\jdk" set JAVA_TYPE=bundled jdk )
将上面的代码修改为以下代码:
set JAVA="%ES_HOME%\jdk\bin\java.exe" set JAVA_HOME="%ES_HOME%\jdk" set JAVA_TYPE=bundled jdk
修改完成后,卸载原来的服务,重新注册服务即可。
4.2 安装logstash服务
创建服务启动批处理文件,logstashstart.bat,内容如下:
这时我们需要nssm工具(一款注册windows服务的工具),从官网下载后将nssm.exe放到logstash下bin目录里,cmd进入目录执行以下命令:
nssm install logstash
在依赖项中添加ES服务。因为logstash的输出配置的是Elasticsearch,如果Elasticsearch没有启动,logstash无法正常工作。添加依赖项如下,最后点击"install service"即可。
4.3 安装Kibana服务
安装kibana服务和logstash差不多,将nssm.exe放到kibana下bin目录里,cmd进入目录执行以下命令:
nssm install kibana
最后,打开windows服务,将以上三个服务启动即可。
至此,windows下安装部署ELK就全部完成了!