上一篇ELK安装简单说了下安装ELK,这一篇就来具体说下怎么让者三个联动起来。
其工作流程如下图所示,(从Kibana官网拿的流程图)
简单来讲,其具体流程是logstash agent 监控并过滤日志,将过滤后的日志内容发给Redis(这里的redis只处理队列不做存储),logstash index将日志收集在一起交给elasticSearch,并通过Kibana进行展示。
在实际中,还可以加上logback实现自定义的日志。
其具体流程如下
(网上找的一个图,链接找不到了……sorry)
大概就是这个意思,不过是在最左边又加了一个logback。
安装和部署
Redis
Redis的安装和配置之前写过,链接在:Centos 7服务器搭建(三)—安装Redis
在这里不需要其它更改。
Logback
(1)安装
logback是一个开源包,使用Maven可以自动部署。
不得不说Maven是个好东西,顺便贴一个地址,用来寻找包的Maven依赖http://mvnrepository.com/。
当前最新版是1.1.7,使用logback-classic会自动添加其它logback-core、slf4j等依赖。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
(2)配置
在所在项目的resources文件夹下新建logback.xml,logback会自动寻找配置文件。
一个配置如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
这里使用了一个开源项目logback-redis-appender,其用途是生成logback到redis的appender,首先需要加入Maven依赖:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
其项目地址在这里,可以查找最新的版本号。
一个检验程序如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
运行了之后,由于在com.task包里,会调用两个appender,一个送到redis服务器,一个输出到滚动文件。可以分别看看结果。
- 1
- 2
- 1
- 2
Logstash
现在假设ELK都已经安装成功,具体在这里:
看下logstash安装在哪儿:
whereis logstash
默认是安装在/opt/logstash
下,配置文件在/etc/logstash/conf.d
下。不过该目录是空的,需要自己新建配置文件
vi config-fire-name.conf
增加以下内容,需要注意的是,这里的配置需要和logback.xml里关于redis的配置相同,也就是说logback输出到redis后,logstash获取并作为输入。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
这里的output还加了一个标准输出stdout{codec=>rubydebug}
,可以删除,不影响elasticsearch。
进入logstash目录,启动服务
- 1
- 1
Elasticsearch和Kibana
这两个基本都不用再配置,按照上一篇就行。
启动服务后,通过浏览器访问Kibana:http://server-address:5601/,默认端口为5601;
在Setting里设置index pattern,根据logstash的配置,传输过来的索引名为logstash-test,填在Index name or pattern里,creat就行。
然后在Discover里就可以看到已索引的数据。
Ok,现在可以再次运行一下上面的测试程序,生成log并传输到elasticsearch,可以在Kibana里看到了。