蛋疼了: 重新编辑后 图片都显示不出来,,
自己写成word了,需要的下载
需要下载ELK的官方地址:https://www.elastic.co/downloads
实时日志分析流程图:
如图所示
实时日志分析在elastic官网一共提供了两种渠道,
第一种: 多web项目的logger通过 Beats采集,然后Beats(主要用里面的fileBeats插件)可以直接发送给es存储或者先通过logstash进行一下数据分析,在进行es存储,最后 通过Kibana进行页面展示。
第二种: 多web项目的Logger直接通过logstash采集,进行数据解析处理,存储es ,Kibana页面展示。
这里涉及到fileBeats 和Logstash的区别
两者都具有日志采集的功能。
logstash 为Java编写,系统资源开销要大一些,但本身支持日志分析的filter功能,支持正则。
fileBeats 为go语言编写,系统资源开销更小。
这里主要讲一下 web logger -> logstash -> elasticSearch的部署配置
elasticSearch 前面已经安装完成了,9200的端口,
logstash的安装(version:5.3.1),
从官网下载对应版本的tar.gz包,解压到/usr/local/logstash,安装完成。
启动logstash需要指定对应的输入源和输出源
我们新建一个配置文件。vim logstash_es.conf,
input {
stdin { } #输入源为控制台输入
}
output {
stdout { } #输出源为控制台输出
}
保存, bin/logstash -f logstash_es.conf
Bin/logstash为启动命令 -f指向外部配置文件
启动项目。需要等1-2分钟左右。
显示运行日志 并以 successfully started logstash 结尾,启动成功。
因为我们这里设置的输入源和输出源都为liunx控制台,
启动后 在控制台输入 Hello world ,输出解析后的hello word数据。
现在开始,设置输入源为log,输出源为 es,
依旧是修改 logstash_es.conf 文件
修改后的样子
输入源: 注释掉 控制台输入,新增 Log4j输入源 和tcp输入源,分别对应 log4j日志和Logback日志,
mode= server,意思为以本地服务器为服务端, port为监听的端口,
host 应为本地的IP(localhost),但我需要远程访问开发,所以暂时设置为0.0.0.0 同es一样,允许外网进行访问。
输出源: 在控制台输出(开发调试需要)的基础上,新增es输出源,新增index字段,这里设置为 applog-时间 类型,
保存,重启,若es输出源连接不到,会报错,请检查es的启动状态,
现在进行 java端的日志文件的修改,
若项目的日志为log4j,
需在配置文件 log4j.properties 新增,apperedSocket配置,
Pom文件里新增log4j依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>{log4j.version}</version>
</dependency>
对应input里log4j里的端口 ,这里设置为9601
1. log4j.appender.logstash=org.apache.log4j.net.SocketAppender
2. log4j.appender.logstash.Port=9601
3. log4j.appender.logstash.RemoteHost=47.93.6.131
4. log4j.appender.logstash.ReconnectionDelay=60000
5. log4j.appender.logstash.LocationInfo=true
若为logback日志,需在 logback.xml中新增一下配置,对应input里 tcp的端口,这里设置为9602
1. <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
2. <destination>47.93.6.131:9602</destination>
3. <queueSize>1048576</queueSize>
4. <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"
5. <customFields>{"appName":"elkDemo"}</customFields> <!--可选,自定义的字段,内容,会作为key value存到es-->
6.
7.
8.
9.
10. <level value="info"
11. <appender-ref ref="console"
12. <appender-ref ref="logstash"
13.
保存,重启项目,这时候所有的日志在打印的同时,就开始向Logstash
进行filter解析( 我这里暂时没有进行解析),然后寻找output输出源,打印到控制台,并存到到本地es,
通过es查看。发现新增了一个 applog_2017.10.11 的index,里面存放的都是日志文件。
到这里实时的采集日志就完成了。
然后我们开始kibana的搭建和部署。
一样的官网下载包(version 5.6.1),解压,完成,修改 config/kibana.yml文件,设置需要查询的es地址关联到es
1. [root@iZ2zeiv4hb4aj7euwgy6jfZ
2. # Kibana is served by a back end server. This setting specifies the port to use.
3. server.port: 5601
4.
5. server.host: "0.0.0.0"
6. elasticsearch.url: "http://localhost:9200"
若不需要外网访问,则server.host设置为localhost,server.port为对外的访问端口
bin/kibana 启动,访问 ip:5601进行 kibana界面。
Management 设置, 里index patterns里新增我们要查询的index,create index
applog-*,查询所有的applog-*的索引,
然后在discover里可以进行查询,下面标识一些简单的操作,
1.查询需要显示的索引,对应的结果会在右边给实时显示出来
2,除开默认显示的结果,我们可以新增需要显示的结果,点击add按钮进行 字段的新增显示。(这个字段是咱们logback自定义添加的字段)
3,根据5中的时间段来显示对应的时间范围内的结果集
4,自动刷新最新时间的设置,默认不开始
6,点击可以进行排序
其余操作请参考 kibana 5.x 中文操作文档。
http://cwiki.apachecn.org/pages/viewpage.action?pageId=8159377