Elastic Stack实战学习教程~日志数据的收集、分析与可视化

Elastic Stack介绍

近几年,互联网生成数据的速度不断递增,为了便于用户能够更快更精准的找到想要的内容,站内搜索或应用内搜索成了不可缺少了的功能之一。同时,企业积累的数据也再不断递增,对海量数据分析处理、可视化的需求也越来越高。

在这个领域里,开源项目ElasticSearch赢得了市场的关注,比如,去年Elastic公司与阿里云达成合作伙伴关系提供阿里云 Elasticsearch 的云服务、今年10月Elastic公司上市,今年11月举行了Elastic 中国开发者大会、目前各大云厂商几乎都提供基于Elasticsearch的云搜索服务,等等这些事件,都反映了Elasticsearch在企业的应用越来越普遍和重要。

先来看看官网的介绍,ok,核心关键字:搜索、分析。

Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data so you can discover the expected and uncover the unexpected.

Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

产品优势:速度快、可扩展性、弹性、灵活性。
在某些应用场景中,不仅会使用Elasticsearch,还会使用Elastic旗下的其他产品,比如Kibana、Logstash等,常见的ELK指的就是Elasticsearch、Logstash、Kibana这三款产品,Elastic Stack指的是Elastic旗下的所有开源产品。

应用场景:(图片截于Elastic官网)

场景实战

接下来,我们来实战一个应用场景。

场景:一个后端应用部署在一台云服务器中,后端应用会以文件形式记录日志。需求为:收集日志内容,对每行日志解析,得到结构化数据,便于搜索、处理与可视化。

方案:使用Filebeat转发日志到Logstash,后者解析或转换数据,然后转发到Elasticsearch储存,接着数据就任君处理了,这里我们把日志数据根据某些需求进行可视化,可视化的活就交给Kibana完成。(另种方案也可:通过Filebeat将日志数据直接转发到Elasticsearch,由Elasticsearch Ingest node负责数据的数据处理)

所需软件

本案例使用的产品版本如下:系统:CentOS,这里分开部署了,也可以放在一起。
1、Kibana_v6.2.3 (IP: 192.168.0.26)
2、Elasticsearch_v6.2.3 (IP: 192.168.0.26)
3、Filebeat_v6.2.3 (IP: 192.168.0.25)
4、Logstash_v6.2.3 (IP: 192.168.0.25)

日志内容

假设一行日志内容如下:(日志文件放在/root/logs目录下)

其中一行日志内容如下:
2018-11-08 20:46:25,949|https-jsse-nio-10.44.97.19-8979-exec-11|INFO|CompatibleClusterServiceImpl.getClusterResizeStatus.resizeStatus=|com.huawei.hwclouds.rds.trove.api.service.impl.CompatibleClusterServiceImpl.getResizeStatus(CompatibleClusterServiceImpl.java:775)

一行日志中可得到5个字段,以“|”分割
2018-11-08 20:46:25,949| #时间
https-jsse-nio-10.44.97.19-8979-exec-11| # 线程名称
INFO| # 日志级别
CompatibleClusterServiceImpl.getClusterResizeStatus.resizeStatus=| # 日志内容
trove.api.service.impl.CompatibleClusterServiceImpl.getResizeStatus(CompatibleClusterServiceImpl.java:775) # 类名

文件目录如下:(Elasticsearch和Kibana在另一台服务器,且已启动)

Logstash配置

logs目录存放需要收集的应用日志,logstash.conf 为Logstash准备的配置文件。

logstash.conf内容如下:

input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{GREEDYDATA:Timestamp}\|%{GREEDYDATA:ThreadName}\|%{WORD:LogLevel}\|%{GREEDYDATA:TextInformation}\|%{GREEDYDATA:ClassName}" }
  }
  date {
    match => [ "Timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
  }
}

output {
  elasticsearch {
    hosts => "192.168.0.26:9200"
    manage_template => false
    index => "java_log"
  }
}

接下来启动Logstash(启动成功,监听5044端口,等待日志数据传入):

Filebeat配置

接下来看下Filebeat的配置文件:

filebeat.prospectors:
- type: log
  enabled: true
  # 配置日志目录的路径或者日志文件的路径
  paths:
    - /root/logs/*.log

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

setup.template.settings:
  index.number_of_shards: 3
  #index.codec: best_compression
  #_source.enabled: false

setup.kibana:
  host: "192.168.0.26:5601"

# 配置output为logstash
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

启动Filebeat:(当日志文件有更新时,会被Filebeat监听到,被转发出去。)

日志查询和可视化

最后来看看Kibana,进行日志的可视化。在Kibana创建好index pattern,这里命名为:java_log。在Discover页面中对日志数据进行查询。

在Visualize中创建可视化图形。

在Dashboard中组合我们的图形。
 

到此,就完成一个简单的日志数据的收集、分析、可视化。

Elastic Stack还有很多强大的功能,后面我们来一个应用内搜索案例。

参考资料

1. https://www.elastic.co/cn/blog/alibaba-cloud-to-offer-elasticsearch-kibana-and-x-pack-in-china 阿里云与Elastic公司合作

2. https://www.elastic.co/guide/en/beats/libbeat/6.2/getting-started.html beat入门

3. https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html grok插件



公众号:码农阿呆 (欢迎关注和交流)

原文地址:https://www.cnblogs.com/coderadai/p/10090744.html

时间: 2024-10-11 16:33:06

Elastic Stack实战学习教程~日志数据的收集、分析与可视化的相关文章

用R语言对购物篮数据进行关联分析及可视化

数据格式: 1001,Choclates1001,Pencil1001,Marker1002,Pencil1002,Choclates1003,Pencil1003,Coke1003,Eraser1004,Pencil1004,Choclates1004,Cookies1005,Marker1006,Pencil1006,Marker1007,Pencil1007,Choclates R Source Code: #Install the R package arules install.pac

Elastic Stack之kibana入门

为了解决公司的项目在集群环境下查找日志不便的问题,我在做过简单调研后,选用Elastic公司的Elastic Stack产品作为我们的日志收集,存储,分析工具. Elastic Stack是ELK(Elasticsearch,Logstash,Kibana)从5版本开始的新名称,那么的他们都能干什么?参见下图: 我们使用logstash来收集日志,Elasticsearch存储日志,Kibana用来搜索并展示可视化的页面给用户. ok,本章重点讲Kibana在linux下的安装,假设你已经安装了

CentOS7下Elastic Stack 5.0日志分析系统搭建

一.概述 Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是一个开源的用于收集,分析和存储日志的工具. Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以汇总.分析和搜索重要数据日志. Beats是elasticsearch公司开源的一款采集系统监控数据的代理ag

【ExtJS 4.x学习教程】(5)数据包(The Data Package)

作者:周邦涛(Timen) Email:[email protected] 转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details/27707361 1. 简介 数据包主要负责加载和保存你应用程序的所有数据,它包含41个类,但是其中三个是最重要的-- Model,Store和Ext.data.proxy.Proxy.这三个类几乎在每个应用程序都有使用,并且有很多卫星类作支持. 2. Model和Store data包的核心是Ext.d

C++基础学习教程(六)----类编写的前情回顾以及项目实战(1)

在开始类的编写之前我们依然需要回顾整理一下前面所说的内容,(前面虽然是一个自定义数据类型的实现过程,但是内容有点繁杂). 先看一段代码: /** @file calssStruct.cpp */ /** Member Functions for Class point */ #include <cmath> // for sqrt and atan using namespace std; struct point { point() : x_(0.0), y_(0.0) {} point(d

集中式日志分析平台 Elastic Stack(介绍)

一.ELK 介绍 ELK 构建在开源基础之上,让您能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地对数据进行搜索.分析和可视化. 最近查看 ELK 官方网站,发现新一代的日志采集器 Filebeat,他是 Beats 家族其中的一员,性能超越 logstash,部署简单,占用资源少,可以很方便的和 logstash,ES 对接. 从官方网站可以看出新一代 ELK 架构如下: 1.Beats Beats 平台集合了多种单一用途数据采集器.这些采集器安装后可用作轻量型代理,从成百上千或成千

ES 集中式日志分析平台 Elastic Stack(介绍)

一.ELK 介绍 ELK 构建在开源基础之上,让您能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地对数据进行搜索.分析和可视化. 最近查看 ELK 官方网站,发现新一代的日志采集器 Filebeat,他是 Beats 家族其中的一员,性能超越 logstash,部署简单,占用资源少,可以很方便的和 logstash,ES 对接. 从官方网站可以看出新一代 ELK 架构如下: 1.Beats Beats 平台集合了多种单一用途数据采集器.这些采集器安装后可用作轻量型代理,从成百上千或成千

Deep Learning 十一_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)

理论知识:UFLDL数据预处理和http://www.cnblogs.com/tornadomeet/archive/2013/04/20/3033149.html 数据预处理是深度学习中非常重要的一步!如果说原始数据的获得,是深度学习中最重要的一步,那么获得原始数据之后对它的预处理更是重要的一部分. 1.数据预处理的方法: ①数据归一化: 简单缩放:对数据的每一个维度的值进行重新调节,使其在 [0,1]或[ − 1,1] 的区间内 逐样本均值消减:在每个样本上减去数据的统计平均值,用于平稳的数

flume学习(三):flume将log4j日志数据写入到hdfs(转)

原文链接:flume学习(三):flume将log4j日志数据写入到hdfs 在第一篇文章中我们是将log4j的日志输出到了agent的日志文件当中.配置文件如下: [plain] view plaincopy tier1.sources=source1 tier1.channels=channel1 tier1.sinks=sink1 tier1.sources.source1.type=avro tier1.sources.source1.bind=0.0.0.0 tier1.sources