文档章节

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

远方的晨
 远方的晨
发布于 2016/12/09 17:49
字数 825
阅读 90
收藏 1
点赞 0
评论 0

正文

材料准备

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
博文 5
码字总数 847
作品 0
杭州
基于ELK实时日志分析的最佳实践

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

smile小太阳 ⋅ 05/06 ⋅ 0

CTO详细讲解海量日志处理ELK

ELK实时日志分析平台之Elasticsearch简介 Elasticsearch是一个高度灵活的开源全文检索和分析引擎。它能够迅速(几乎是实时地)地存储、查找和分析大规模数据。通常被用在有复杂的搜索要求的系...

Java架构分享 ⋅ 05/23 ⋅ 0

Elasticsearch + Kibana 集群环境搭建

Elk 提供了完备且成熟的日志存储和分析的解决方案,虽然不开源,但是可以免费使用。本文主要介绍 elasticsearch 集群以及 kibana 的环境搭建。 Elasticsearch Elasticsearch 可以理解为一个支...

xjtuhit ⋅ 04/16 ⋅ 0

简单安装ELK分析日志及使用心得

ELK是由Elasticsearch、Logstash、Kibana三个组件组成的。 Elasticsearch:是ELK的核心插件,是一个基于Lucene的搜索服务器,它提供一个分布式多用户能力的全文搜索引擎,能够达到实时搜索,...

狼叔LSF ⋅ 06/10 ⋅ 0

Docker下ELK三部曲之一:极速体验

《Docker下ELK三部曲》一共三篇文章,为您揭示如何快速搭建ELK环境,以及如何将web应用的日志上报到ELK用,三部曲内容简述如下: 1. 极速体验ELK服务,即本章的内容; 2. 细说技术详情,例如...

boling_cavalry ⋅ 04/15 ⋅ 0

基于Docker部署ELK (Elasticsearch, Logstash, Kibana)集中日志处理平台,及在Spring Boot应用

当我们还是单体部署我们的Spring Boot项目的时候,日志通常都是放在我们的Linux服务器目录,使用简单的Spring Boot已经包含的Logback框架即可实现。当我们基于Docker部署我们的分布式或者集群...

ImWiki ⋅ 05/27 ⋅ 0

Elasticsearch的功能、使用场景以及特点

Elasticsearch的功能 (1)分布式的搜索引擎和数据分析引擎 搜索:百度,网站的站内搜索,IT系统的检索 数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最近1...

facula ⋅ 06/15 ⋅ 0

Graylog日志监控集群搭建

场景及日志量 由于公司是物联网场景,设备每10秒都会上报Gps数据,后端猿对每个每个上传数据的处理都加入了日志,加上后端猿用Quartz写了许多无状态的后台服务,每10s跑一次,而且有多个环境...

秦时明月路 ⋅ 05/30 ⋅ 0

Elasticsearch中文分词研究

一、ES分析器简介 ES是一个实时搜索与数据分析引擎,为了完成搜索功能,必须对原始数据进行分析、拆解,以建立索引,从而实现搜索功能; ES对数据分析、拆解过程如下: 首先,将一块文本分成...

zhaipengfei1231 ⋅ 04/18 ⋅ 0

Centos6搭建elk系统,监控IIS日志

**所需程序: 服务器端:java、elasticsearch、kikbana 客 户 端:IIS、logstash** 一、服务器端(192.168.10.46)操作: 先建立一个ELK专门的目录: [root@Cent65 ~]mkdir /elk/ 上传到elk...

D杀手D ⋅ 04/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

sbt网络问题解决方案

http://dblab.xmu.edu.cn/blog/maven-network-problem/

狐狸老侠 ⋅ 7分钟前 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 50分钟前 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 56分钟前 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

Spring clound 组件

Spring Cloud技术应用从场景上可以分为两大类:润物无声类和独挑大梁类。 润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。 Ribbon,客户端负载均衡,特性有区域亲和、重试机制。...

英雄有梦没死就别停 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部