前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elastic Stack——Logstash基本使用、实时数据监控和可视化分析

Elastic Stack——Logstash基本使用、实时数据监控和可视化分析

作者头像
不愿意做鱼的小鲸鱼
发布2022-09-24 10:00:04
5400
发布2022-09-24 10:00:04
举报
文章被收录于专栏:web全栈web全栈

7、Logstash

7.1、简介

Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客

用途

Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客

7.2、部署安装

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#检查jdk环境,要求jdk1.8+
java -version
#上传压缩包
sudo rz
#解压安装包
tar -xvf logstash-6.5.4.tar.gz
#第一个logstash示例
bin/logstash -e 'input { stdin { } } output { stdout {} }'

执行效果如下:

在这里插入图片描述
在这里插入图片描述

7.3、配置详解

Logstash的配置有三部分,如下:

代码语言:javascript
复制
input { #输入
stdin { ... } #标准输入
}
filter { #过滤,对数据进行分割、截取等处理
...
}
output { #输出
stdout { ... } #标准输出
}
7.3.1、输入
  • 采集各种样式、大小和来源的数据,数据往往以各种各样的形式,或分散或集中地存在于很多系统中。
  • Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方* 式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
7.3.2、过滤
  • 实时解析和转换数据
  • 数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。
7.3.3、输出

Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。

在这里插入图片描述
在这里插入图片描述

7.4、读取自定义日志

7.4.1、日志结构

2019-03-15 21:21:21|ERROR|读取数据出错|参数:id=1002 可以看到,日志中的内容是使用“|”进行分割的,使用,我们在处理的时候,也需要对数据做分割处理。

7.4.2、编写配置文件
代码语言:javascript
复制
#vim itcast-pipeline.conf
input {
file {
    path => "/itcast/logstash/logs/app.log"     #读取日志的入口
    start_position => "beginning"                       #从头开始
   }
}
filter {
   mutate {
        split => {"message"=>"|"}     #分割的符号
     }
}
output {
      stdout { codec => rubydebug }         #输出在控制台
}
7.4.3、启动测试
代码语言:javascript
复制
#启动
./bin/logstash -f ./itcast-pipeline.conf
#写日志到文件
echo "2019-03-15 21:21:21|ERROR|读取数据出错|参数:id=1002" >> app.log
#输出的结果
{
    "@timestamp" => 2019-03-15T08:44:04.749Z,
    "path" => "/itcast/logstash/logs/app.log",
    "@version" => "1",
    "host" => "node01",
    "message" => [
        [0] "2019-03-15 21:21:21",
        [1] "ERROR",
        [2] "读取数据出错",
        [3] "参数:id=1002"
    ]
}

可以看到,数据已经被分割了。

7.4.5、输出到Elasticsearch
代码语言:javascript
复制
input {
    file {
        path => "/itcast/logstash/logs/app.log"
        #type => "system"
        start_position => "beginning"
    }
}
filter {
    mutate {
        split => {"message"=>"|"}
    }
}
output {
    elasticsearch {
        hosts => [ "master:9200","salve1:9200","salve2.135:9200","salve3.135:9200"]
    }
}


#启动
./bin/logstash -f ./itcast-pipeline.conf
#写入数据
echo "2019-03-15 21:21:21|ERROR|读取数据出错|参数:id=1003" >> app.log

测试:

Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客
在这里插入图片描述
在这里插入图片描述

8、综合练习

将前面所学习到的Elasticsearch + Logstash + Beats + Kibana整合起来做一个综合性的练习。

8.1、流程说明

Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客

* 应用APP生产日志,用来记录用户的操作 [INFO] 2019-03-15 22:55:20 [cn.itcast.dashboard.Main] - DAU|5206|使用优惠券|2019-03-15 03:37:20 [INFO] 2019-03-15 22:55:21 [cn.itcast.dashboard.Main] - DAU|3880|浏览页面|2019-03-15 07:25:09 * 通过Filebeat读取日志文件中的内容,并且将内容发送给Logstash,原因是需要对内容做处理 * Logstash接收到内容后,进行处理,如分割操作,然后将内容发送到Elasticsearch中 * Kibana会读取Elasticsearch中的数据,并且在Kibana中进行设计Dashboard,最后进行展示

8.2、APP介绍

APP在生产环境应该是真实的系统,为了简化操作,所以就做数据的模拟生成即可。 业务代码如下:

代码语言:javascript
复制
package cn.itcast.dashboard;

import org.apache.commons.lang3.RandomUtils;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Main {

    private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);

    public static final String[] VISIT = new String[]{"浏览页面", "评论商品", "加入收藏", "加入购物车", "提交订单", "使用优惠券", "领取优惠券", "搜索", "查看订单"};

    public static void main(String[] args) throws Exception {
        while(true){
            Long sleep = RandomUtils.nextLong(200, 1000 * 5);
            Thread.sleep(sleep);
            Long maxUserId = 9999L;
            Long userId = RandomUtils.nextLong(1, maxUserId);
            String visit = VISIT[RandomUtils.nextInt(0, VISIT.length)];
            DateTime now = new DateTime();
            int maxHour = now.getHourOfDay();
            int maxMillis = now.getMinuteOfHour();
            int maxSeconds = now.getSecondOfMinute();
            String date = now.plusHours(-(RandomUtils.nextInt(0, maxHour)))
                    .plusMinutes(-(RandomUtils.nextInt(0, maxMillis)))
                    .plusSeconds(-(RandomUtils.nextInt(0, maxSeconds)))
                    .toString("yyyy-MM-dd HH:mm:ss");

            String result = "DAU|" + userId + "|" + visit + "|" + date;
            LOGGER.info(result);
        }

    }
}

运行结果:

Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客

代码在资料中可以找到,itcast-dashboard-generate.zip。也可以自己生成导出jar包。 部署:

代码语言:javascript
复制
#打包成jar包,在linux上运行
java -jar itcast-dashboard-generate-1.0-SNAPSHOT.jar
#运行之后,就可以将日志写入到/itcast/logs/app.log文件中

8.3、Filebeat

代码语言:javascript
复制
#vim itcast-dashboard.yml
filebeat.inputs:
    - type: log
    enabled: true
    paths:
        - /itcast/logs/*.log
setup.template.settings:
    index.number_of_shards: 3
output.logstash:
    hosts: ["master:5044"]

#启动
./filebeat -e -c itcast-dashboard.yml

8.4、Logstash

代码语言:javascript
复制
#vim itcast-dashboard.conf
input {
    beats {
        port => "5044"
    }
}
filter {
    mutate {
        split => {"message"=>"|"}
    }
    mutate {
        add_field => {
        "userId" => "%{message[1]}"
        "visit" => "%{message[2]}"
        "date" => "%{message[3]}"
        }
    }
    mutate {
        convert => {
        "userId" => "integer"
        "visit" => "string"
        "date" => "string"
        }
    }
}
#output {
# stdout { codec => rubydebug }
#}
output {
    elasticsearch {
        hosts => [ "master:9200","salve1:9200","salve2.135:9200","salve3.135:9200"]
    }
}


#启动
./bin/logstash -f itcast-dashboard.conf

8.5、Kibana

启动Kibana:

代码语言:javascript
复制
#启动
./bin/kibana
#通过浏览器进行访问
http://master/app/kibana

注意:如果启动Kibana后服务器变得非常卡,可以换一台虚拟机启动Kibana,配置和之前一样。

添加Logstash索引到Kibana中:

在这里插入图片描述
在这里插入图片描述
8.5.1、时间间隔的柱形图
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客

说明:x轴是时间,以天为单位,y轴是count数 保存:(my-dashboard-时间间隔的柱形图)

8.5.2、各个操作的饼图分布
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客

统计各个操作的数量,形成饼图。 保存:(my-dashboard-各个操作的饼图)

8.5.3、数据表格
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客
Elastic Stack——Logstash基本使用、实时数据监控和可视化分析-左眼会陪右眼哭の博客

在数据探索中进行保存,并且保存,将各个操作的数据以表格的形式展现出来。 保存:(my-dashboard-表格)

8.5.4、制作Dashboard
在这里插入图片描述
在这里插入图片描述
8.5.5、其他操作
  1. 可以根据自己的需求,绘制不同的统计图
  2. 可以点击share,导出链接代码,可以直接使用
在这里插入图片描述
在这里插入图片描述
  1. 可以将制作的表格,或者监控到的数据导出为 csv
  2. 可以自己调整统计图的样式,和实时监控刷新的频率
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 7、Logstash
    • 7.1、简介
      • 7.3、配置详解
        • 7.3.1、输入
        • 7.3.2、过滤
        • 7.3.3、输出
      • 7.4、读取自定义日志
        • 7.4.1、日志结构
        • 7.4.2、编写配置文件
        • 7.4.3、启动测试
        • 7.4.5、输出到Elasticsearch
    • 8、综合练习
      • 8.1、流程说明
        • 8.2、APP介绍
          • 8.3、Filebeat
            • 8.4、Logstash
              • 8.5.1、时间间隔的柱形图
              • 8.5.2、各个操作的饼图分布
              • 8.5.3、数据表格
              • 8.5.4、制作Dashboard
              • 8.5.5、其他操作
          相关产品与服务
          Elasticsearch Service
          腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档