文档章节

【经验案例】采用ELK(Elasticsearch+Logstash+Kibana)+redis搭建日志分析系统

远方的晨
 远方的晨
发布于 2016/12/09 17:49
字数 825
阅读 108
收藏 1

正文

材料准备

System: Linux x64

JDK: 1.7.0_67

Elasticsearch: 2.4.1

Logstash-2.4.0

Kibana: 4.6.1-linux-x86_64

Redis: 3.0.2

 

补充:

ELK下载地址:https://www.elastic.co/downloads

 

平台搭建

1.搭建客户端Logstash

(1)先在文件目录下解压包:tar -zxvf logstash-2.4.0.tar.gz

(2)编写配置文件

cd logstash-2.4.0

mkdir config

vi config/client.conf

 

配置文件的内容如下:

 
  1. input {
  2. file {
  3. path => ["/xxx/access*.log"]
  4. start_position => "beginning"
  5. tags => ["haha"]
  6. }
  7. }
  8. output {
  9. redis {
  10. host => "10.168.242.92"
  11. port => 7380
  12. data_type => "list"
  13. key => "logstash:redis"
  14. }
  15. }

(3)启动

nohup ./bin/logstash -f config/client.conf &

 

2.搭建服务端Logstash

同1,

配置文件略有不同

 
  1. input {
  2. redis {
  3. host => "192.168.52.102"
  4. port => "7380"
  5. data_type => "list"
  6. key => "logstash:redis"
  7. type => "redis-input"
  8. }
  9. }
  10. filter {
  11. #自定义数据字段
  12. grok {
  13. match => {
  14. "message" => ["%{DATA:dateTime}\|%{IP:clientIP}\|%{DATA:clientPort}\|%{IP:serverIP}\|%{DATA:serverPort}\|%{DATA:group}\|%{DATA:serviceName}\|%{DATA:version}\|%{DATA:methodName}\|%{DATA:methodParam}\|%{DATA:exception}\|%{NUMBER:executionTime}\|"]
  15. }
  16. }
  17. #date {
  18. # target => "runtime"
  19. # locale => "en"
  20. # match => ["dateTime","yyyy-MM-dd HH:mm:ss"]
  21. #}
  22. }
  23. output {
  24. if "wishdubbo" in [tags]{
  25. elasticsearch {
  26. hosts => ["115.231.103.57:9200"]
  27. index => "info"
  28. #采用自定义索引模板
  29. manage_template => false
  30. #模板名称
  31. template_name => "info"
  32. #elasticsearch 采用了自定义的索引模板,这里要指向模板文件
  33. template => "/data/project/chenkw/elasticsearch-2.4.1/config/templates/info.json"
  34. }
  35. }
  36. }

 

这里的模板文件,详见elasticsearch部分。

redis在此处仅用做缓冲队列,避免数据丢失,非必需。

 

 

补充相关参考文档:

logstash最佳实践:http://udn.yyuap.com/doc/logstash-best-practice-cn/output/elasticsearch.html

logstash grok dubber:https://grokdebug.herokuapp.com/

 

3.搭建Elasticsearch

(1)先在文件目录下解压包:tar -zxvf elasticsearch-2.4.1

(2)编写配置文件

vi elasticsearch-2.4.1/config/elasticsearch.yml

具体内容如下:

 
  1. cluster.name : es_cluster
  2. node.name : node0
  3. path.data : /xxx/elasticsearch-2.4.1/data
  4. path.logs : /xxx/elasticsearch-2.4.1/logs
  5. network.host : 23.453.103.57
  6. network.port : 9200

(3)自定义索引模板

由于我们的日志,直接导入到elasticsearch的时候,诸如number、ip等类型,都会被默认模板定义为string。这会使得kibana不能对这些字段做数据统计。

引入自定义模板,可以解决这个问题。

 

模板如下,供参考:

 
  1. {
  2. "order": 0,
  3. "template": "info*",
  4. "settings": {
  5. "index": {
  6. "refresh_interval": "5s"
  7. }
  8. },
  9. "mappings": {
  10. "_default_": {
  11. "dynamic_templates": [
  12. {
  13. "message_field": {
  14. "mapping": {
  15. "index": "analyzed",
  16. "omit_norms": true,
  17. "fielddata": {
  18. "format": "disabled"
  19. },
  20. "type": "string"
  21. },
  22. "match_mapping_type": "string",
  23. "match": "message"
  24. }
  25. },
  26. {
  27. "string_fields": {
  28. "mapping": {
  29. "index": "analyzed",
  30. "omit_norms": true,
  31. "fielddata": {
  32. "format": "disabled"
  33. },
  34. "type": "string",
  35. "fields": {
  36. "raw": {
  37. "index": "not_analyzed",
  38. "ignore_above": 256,
  39. "type": "string"
  40. }
  41. }
  42. },
  43. "match_mapping_type": "string",
  44. "match": "*"
  45. }
  46. }
  47. ],
  48. "properties": {
  49. "@timestamp": {
  50. "type": "date"
  51. },
  52. "geoip": {
  53. "dynamic": true,
  54. "properties": {
  55. "location": {
  56. "type": "geo_point"
  57. },
  58. "longitude": {
  59. "type": "float"
  60. },
  61. "latitude": {
  62. "type": "float"
  63. },
  64. "ip": {
  65. "type": "ip"
  66. }
  67. }
  68. },
  69. "@version": {
  70. "index": "not_analyzed",
  71. "type": "string"
  72. },
  73. "dateTime": {
  74. "type": "string"
  75. },
  76. "clientIP": {
  77. "type": "ip"
  78. },
  79. "clientPort": {
  80. "type": "string",
  81. "index": "not_analyzed"
  82. },
  83. "serverIP": {
  84. "type": "ip"
  85. },
  86. "serverPort": {
  87. "type": "string",
  88. "index": "not_analyzed"
  89. },
  90. "message": {
  91. "type": "string"
  92. },
  93. "serviceName": {
  94. "type": "string",
  95. "index": "not_analyzed"
  96. },
  97. "version": {
  98. "type": "string",
  99. "index": "not_analyzed"
  100. },
  101. "methodName": {
  102. "type": "string",
  103. "index": "not_analyzed"
  104. },
  105. "executionTime": {
  106. "type": "long"
  107. }
  108. },
  109. "_all": {
  110. "enabled": true,
  111. "omit_norms": true
  112. }
  113. }
  114. },
  115. "aliases": {}
  116. }

通过以下指令,把模板推送到elasticsearch

curl -XPUT http://123.21.103.517:9200/_template/template_info -d '@/xxx/elasticsearch-2.4.1/config/templates/info.json'

 

(4)启动

nohup ./bin/elasticsearch &

 

(5)注意点

A. 搭建elasticsearch时,修改elasticsearch.yml配置项时需要注意,每个配置项的key和value不能使用等于号(=),应使用英文冒号,且冒号前后要有空格!否则,启动会报错!

 

(6)补充

elasticsearch指南(中文版):http://es.xiaoleilu.com/

elasticsearch最佳实践:http://udn.yyuap.com/doc/logstash-best-practice-cn/output/elasticsearch.html

 

4.搭建Kibana

(1)先在文件目录下解压包:tar -zxvf kibana-4.6.1-linux-x86_64

(2)编写配置文件

vi kibana-4.6.1-linux-x86_64/config/kibana.yml

 

 
  1. server.port : 5601
  2. server.host : 115.231.103.57
  3. elasticsearch.url : http://123.21.103.517:9200
  4. kibana.index : ".kibana"

(3)启动

nohup ./bin/kibana &

 

(4)注意点:

A. 在linux服务器上通过./kibana启动kibana后,发现用ps -ef|grep kibana 并不能找到进程,可以通过netstat -nap|grep 5601(端口号)来找到进程

 

5. 效果

elasticsearch界面:http://123.21.103.517:9200/_plugin/head/

kibana界面:http://123.21.103.517:5601/

 

 

 

 

 

 

参考文章

http://www.tuicool.com/articles/YR7RRr

http://ju.outofmemory.cn/entry/270938

http://tshare365.com/archives/2344.html

© 著作权归作者所有

共有 人打赏支持
远方的晨
粉丝 0
博文 6
码字总数 847
作品 0
杭州
使用ELK构建微服务的日志平台

1 概述 在微服务架构中,会部署众多的应用,其中有基础应用,比如:网关,服务发现等。同时还有大量的业务应用。所以,如何有效的收集它们的日志,并且方便查询,同时提供友好的可视化展示,...

Java大蜗牛
08/18
0
0
ELK环境搭建(ElasticSearch+Logstash+kibana)

ELK是指Elasticsearch + Logstash + Kibaba三个组件的组合。本文讲解一个基于日志文件的ELK平台的搭建过程,有关ELK的原理以及更多其他信息,会在接下来的文章中继续研究。   在这个系统中...

阿恒灬
2017/10/31
0
0
在CentOS7下实现Elastic Stack 数据分析系统的部署

本文介绍关于关于搭建elasticsearch+logstash(beats)+kibana实现搭建可视化的日志分析系统。 这几款软件也都是免费开源的,其官方站点为:https://www.elastic.co/cn/products 一、关于这几...

LUksl
06/26
0
0
使用logstash+elasticsearch+kibana快速搭建日志平台

日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情 监控系统的运行状况 统计分析,比如接口的调用次数、执行时间...

eddy_linux
2015/11/13
0
0
基于ELK实时日志分析的最佳实践

在2018云栖大会深圳峰会大数据分析与可视化专场上,由阿里巴巴搜索引擎事业部开放搜索团队的吴迪带来了“基于ELK实时日志分析的最佳实践”的主题分享。介绍了传统的日志分析、ELK的概念和ELK...

smile小太阳
05/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
1
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部