当前位置: 首页 > news >正文

# 08_Elastic Stack 从入门到实践(八)---2

08_Elastic Stack 从入门到实践(八)—2

一、综合练习之流程说明

1、综合练习说明

使用Elasticsearch +Logstash +Beats +Kibana整合起来做一个综合性的练习,目的是能够更加深刻的理解Elastic Stack的使用。

2、综合练习流程

在这里插入图片描述

3、综合练习流程说明

1)应用APP生产日志,用来记录用户的操作

[INFO] 2025-03-15 22:55:20 [dzs.it.dashboard.Main]-DAU|5206|使用优惠券|2025-03-15
03:37:20。
[INFO] 2025-03-15 22:55:21 [dzs.it.dashboard.Main]-DAU|3880|浏览页面|2025-03-15 07:25:09

2)通过Filebeat读取日志文件中的内容,并且将内容发送给Logstash,原因是需要对内容做处理。

3)Logstash接收到内容后,进行处理,如分割操作,然后将内容发送到Elasticsearch中。

4)Kibana会读取Elasticsearch中的数据,并且在Kibana中进行设计Dashboard,最后进行展示。

5)说明:日志格式、图表、Dashboard都是自定义的。

二、综合练习之 APP 介绍

1、APP介绍

APP在生产环境应该是真实的系统,然而,我们现在仅仅的学习,为了简化操作,所以就做数据的模拟生成即可。

2、打开idea创建新的 maven项目 dzs168-dashboard-generate 并导入依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>dzs.it</groupId><artifactId>dzs168-dashboard-generate</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.3.2.RELEASE</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version></dependency><dependency><groupId>org.apache.parquet</groupId><artifactId>parquet-format</artifactId><version>2.3.1</version></dependency><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.10.3</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.36</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.6</version> <!-- 使用最新版本 --><scope>runtime</scope> <!-- 确保在运行时包含 --></dependency></dependencies>
</project>

3、在 dzs168-dashboard-generate 项目中,创建测试类,业务代码如下:

// D:\java-test\idea2019\elasticsearch\dzs168-dashboard-generate\src\main\java\dzs\it\dashboard\Main.javapackage dzs.it.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);}}
}

4、项目运行测试

在这里插入图片描述

5、项目打包:代码打包成 dzs168-dashboard-generate.jar

1)在IDEA的顶部菜单栏中选择【File】,然后选择【Project Structure】(或者使用快捷键Alt + Ctrl + Shift + S)。

2)在弹出的窗口中,选择左侧的【Artifacts】选项。

3)点击窗口右上角的【+】按钮,选择【JAR】—>【From modules with dependencies】。

4)在弹出的窗口中,选择项目中的模块(dzs168-dashboard-generate),并且指定【Main Class】为你的项目的执行入口类(Main.class),最后点击【确定】按钮即可。

5)配置Jar包的输出路径: 在右侧的【Output Layout】窗口中,选择【+】按钮,并选择【Directory Content】。

6)选择你希望将Jar包输出的路径,通常建议选择项目根目录下的【out】文件夹,点击【OK】保存配置(默认就是out目录)。

7)构建Jar包: 点击顶部菜单栏中的【Build】—> 【Build Artifacts】 —> 【Build】。
IDEA将会自动构建并打包你的Java项目,并将生成的Jar包输出到之前配置的路径中。如果配置的路径下出现Jar包,表示Java项目打包成功。

8)验证Jar包:右击Jar包依次选择【Show In Explorer】,在Windows资源管理器中打开。
然后在终端(CMD)下执行 java -jar dzs168-dashboard-generate.jar 进行测试验证。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6、把 dzs168-dashboard-generate.jar上传到虚拟机服务器 linux 系统上(/dzs168/ 目录中)运行。运行之后,就可以将日志写入到 /dzs168/logs/app.log 的 log 文件中。

$ cd /dzs168/
$ java -jar dzs168-dashboard-generate.jar
$ java -jar dzs168-dashboard-generate-1.0-SNAPSHOT.jar &

在这里插入图片描述

在这里插入图片描述

三、综合练习之部署 Filebeat 以及 Logstash

1、启动 ElasticSearch 集群,打开谷歌浏览器,点击elasticsearch-head 插件,连接elasticsearch 集群。

# 关闭防火墙
systemctl stop firewalld# 切换用户(ElasticSearch不能用root用户启动)
su - elsearch# 启动ElasticSearch 集群服务
# 如:192.168.130.250, 192.168.130.71, 192.168.130.207/dzs168/es-cluster/elasticsearch-6.5.4/bin/elasticsearch

在这里插入图片描述

2、创建 Filebeat 配置文件,并启动 Filebeat

# 切换目录
cd /dzs168/filebeat-6.5.4-linux-x86_64/$ vim dzs168-dashboard.ymlfilebeat.inputs: 
-type: log enabled: true paths: - /dzs168/logs/*.log 
setup.template.settings: index.number_of_shards: 3 
output.logstash: hosts: ["192.168.130.71:5044"] #启动(需先启动Logstash后,再启动 filebeat)
./filebeat -e -c dzs168-dashboard.yml
/dzs168/filebeat-6.5.4-linux-x86_64/filebeat -e -c /dzs168/filebeat-6.5.4-linux-x86_64/dzs168-dashboard.yml

3、创建 Logstash 配置文件,并启动 Logstash 观察获取的日志。

# 切换目录
cd /dzs168/logstash-6.5.4/$ vim dzs168-dashboard.conf input {beats {port => "5044" }
}
output {stdout { codec => rubydebug }
}#启动
./bin/logstash -f dzs168-dashboard.conf
/dzs168/logstash-6.5.4/bin/logstash -f /dzs168/logstash-6.5.4/dzs168-dashboard.conf

在这里插入图片描述

4、修改 Logstash 配置文件,并重新启动 Logstash 再次观察获取的日志。

# 切换目录
cd /dzs168/logstash-6.5.4/$ vim dzs168-dashboard.conf input {beats {port => "5044" }
}
filter {mutate {split => {"message"=>"|"} } 
}
output {stdout { codec => rubydebug }
}#启动
./bin/logstash -f dzs168-dashboard.conf
/dzs168/logstash-6.5.4/bin/logstash -f /dzs168/logstash-6.5.4/dzs168-dashboard.conf

在这里插入图片描述

5、修改 Logstash 配置文件,并重新启动 Logstash 再次观察获取的日志。

# 切换目录
cd /dzs168/logstash-6.5.4/$ vim dzs168-dashboard.conf input {beats {port => "5044" }
}
filter {mutate {split => {"message"=>"|"} }mutate {add_field => {"userId" => "%{message[1]}" "visit" => "%{message[2]}" "date" => "%{message[3]}" } }   
}
output {stdout { codec => rubydebug }
}#启动
./bin/logstash -f dzs168-dashboard.conf
/dzs168/logstash-6.5.4/bin/logstash -f /dzs168/logstash-6.5.4/dzs168-dashboard.conf

在这里插入图片描述

6、修改 Logstash 配置文件,并重新启动 Logstash 再次观察获取的日志。

# 切换目录
cd /dzs168/logstash-6.5.4/$ vim dzs168-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 }
}#启动
./bin/logstash -f dzs168-dashboard.conf
/dzs168/logstash-6.5.4/bin/logstash -f /dzs168/logstash-6.5.4/dzs168-dashboard.conf

在这里插入图片描述

7、修改 Logstash 配置文件,添加 ElasticSearch 并重新启动 Logstash 打开谷歌浏览器,点击 elasticsearch-head 插件,连接 ElasticSearch 服务器,再次观察获取的日志。

# 切换目录
cd /dzs168/logstash-6.5.4/$ vim dzs168-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 => [ "192.168.130.250:9200","192.168.130.71:9200","192.168.130.207:9200" ]}
}#启动
./bin/logstash -f dzs168-dashboard.conf
/dzs168/logstash-6.5.4/bin/logstash -f /dzs168/logstash-6.5.4/dzs168-dashboard.conf

在这里插入图片描述

四、综合练习之 Kibana 的使用(制作自定义图表和 Dashboard)

1、制作 kibana 时间间隔的柱形图

1)启动 kibana

# 切换目录
$ cd /dzs168/kibana-6.5.4-linux-x86_64# 启动 kibana
./bin/kibana
$ /dzs168/kibana-6.5.4-linux-x86_64/bin/kibana

2)打开浏览器,地址栏输入:http://192.168.130.250:5601 访问 kibana主页。

3)点击【Management】,再点击【kibana】下的【Index Patterns】创建索引。

在这里插入图片描述

4)点击【Create index patten】,在 Index patten 下输入【logstash-*】,点击【Next step】下一步。

在这里插入图片描述

5)在【Time Filter field name】下,选择时间字段【@timestamp】,点击【Create index pattern】创建索引。

在这里插入图片描述

6)点击【Visualize】可视化,再点击【+】添加。

在这里插入图片描述

7)点击【Vertical Bar】柱形图,选择【logstash】

在这里插入图片描述

在这里插入图片描述

8)【X-Axis】Aggregation X轴选择 时间轴:【Date Histogram】,Y轴选择【Count】,点击【运行】,【刷新】。如下图:

在这里插入图片描述

9)可以选择【Refresh Interval】刷新时间,如选择:【10seconds】,【Time Range】时间范围,如选择:【Last 15 minutes】,点击【save】保存。

在这里插入图片描述

10)输入【my-dashboard-时间间隔的柱形图】,保存。

在这里插入图片描述

2、制作 kibana 各个操作的饼形分布图

1)点击【Visualize】可视化,再点击【+】添加。

2)点击【Pie】饼形图,选择【logstash】

3)【Buckets】Select buckets type选择 过滤 Aggregation选择【Filters】,
Filter 1选择【visit:查看订单】,点击【标签】在 【Filter 1 label】下输入【查看订单】,点击【运行】,【刷新】。如下图:

在这里插入图片描述

在这里插入图片描述

4)点击【Add Filter】,选择【Filters】,依次多添加过滤词和标签。

Filter 2选择【visit:浏览页面】,点击【标签】在 【Filter 2 label】下输入【浏览页面】,点击【运行】,【刷新】。
Filter 3选择【visit:评论商品】,点击【标签】在 【Filter 3 label】下输入【评论商品】,点击【运行】,【刷新】。
Filter 4选择【visit:加入收藏】,点击【标签】在 【Filter 4 label】下输入【加入收藏】,点击【运行】,【刷新】。
Filter 5选择【visit:加入购物车】,点击【标签】在 【Filter 5 label】下输入【加入购物车】,点击【运行】,【刷新】。
Filter 6选择【visit:提交订单】,点击【标签】在 【Filter 6 label】下输入【提交订单】,点击【运行】,【刷新】。
Filter 7选择【visit:使用优惠券】,点击【标签】在 【Filter 7 label】下输入【使用优惠券】,点击【运行】,【刷新】。
Filter 8选择【visit:领取优惠券】,点击【标签】在 【Filter 8 label】下输入【领取优惠券】,点击【运行】,【刷新】。
Filter 9选择【visit:搜索】,点击【标签】在 【Filter 9 label】下输入【搜索】,点击【运行】,【刷新】。

在这里插入图片描述

5)可以选择【Options】选项,取消勾选:【Donut】。点击【运行】,【刷新】。

在这里插入图片描述

6)选择【Legend Position】下拉三角,选择【bottom】底部,可以把标签显示在底部,在【Labels Settings】标签设置下面,可以勾选【Show Labels】,显示标签。点击【运行】。

在这里插入图片描述

7)可以选择【Refresh Interval】刷新时间,如选择:【10seconds】,【Time Range】时间范围,如选择:【Last 15 minutes】,点击【save】保存。

8)输入【my-dashboard-各个操作的饼形图】,保存。

在这里插入图片描述

3、制作 kibana 数据表格

1)点击【Discover】发现,再点击【logstash-*】。

在这里插入图片描述

2)在下面找到【date】[ userId ], [ visit ] 三个字段,点击后面的【Add】添加。

在这里插入图片描述

3)可以选择【Refresh Interval】刷新时间,如选择:【10seconds】,【Time Range】时间范围,如选择:【Last 15 minutes】,点击【save】保存。

在这里插入图片描述

4)输入【my-dashboard-表格】,点击【Confirm Save】,保存。

在这里插入图片描述

4、制作 kibana 的 自定义 Dashboard 仪表盘

1)点击【Dashboard】仪表盘,再点击【Create new dashboard】创建新的仪表盘。

在这里插入图片描述

2)点击【Add】添加。

在这里插入图片描述

3)在搜索栏搜索【my…】 找到选择【my-dashboard-时间间隔的柱形图】【my-dashboard-各个操作饼形图】

在这里插入图片描述

4)点击【Saved Search】,搜索【my-dashboard-表格】,点击添加。

在这里插入图片描述

5)点击柱形图的设置图标,选择【Customize panel】,可以自定义显示标签名,如把【my-dashboard-时间间隔柱形图】改为:【时间间隔柱形图】,同样方法可以修改饼形图和表格名。

在这里插入图片描述

在这里插入图片描述

6)可以选择【Refresh Interval】刷新时间,如选择:【10seconds】,【Time Range】时间范围,如选择:【Last 15 minutes】,点击【save】保存。

在这里插入图片描述

7)输入【我的仪表盘2】,点击【Confirm Save】保存。

在这里插入图片描述

五、课程总结

1、Nginx日志分析系统

1.1、项目需求
1.2、业务流程

2、部署安装Nginx

3、Beats 简介

4、Filebeat

4.1 架构
4.2 部署与运行
4.3 读取文件
4.4 自定义字段
4.5 .输出到Elasticsearch
4.6 Filebeat工作原理
4.7 读取Nginx日志文件
4.8 Module
4.8.1 nginx module 配置
4.8.2 配置filebeat
4.8.3 测试

5、Metricbeat

5.1、Metricbeat组成
5.2、部署与收集系统,指标
5.3、Module
5.4、Nginx Module
##### 5.4.1、开启nginx的状态查谁
5.4.2、配置Nginx Module

6、Kibana

6.1、配置安装
6.2、功能说明
6.3、数据探素
6.4、Metricbeat 仪表盘
6.5、Nginx指标仪表盘
6.6、Nginx日志仪表盘
6.7、自定义图表
6.8、开发者工具

7、Logstash

7.1、简介
7.2、部署安装
7.3、配置详解
7.3.1 输入
7.3.2 过滤
7.3.3 输出
7.4 读取自定义日志
7.4.1、日志结构
7.4.2、编写配置文件
7.4.3、启动测试
7.4.4、输出到Elasticsearch

8、综合练习

8.1、流程说明
8.2、APP介绍
8.3、Filebeat
8.4、Logstash
8.5、Kibana
8.5.1 时间间隔的柱形图
8.5.2 各个操作的饼图分布
8.5.3 数据表格
8.5.4 制作 Dashboard

上一节关联链接请点击:

08_Elastic Stack 从入门到实践(八)—1

http://www.xdnf.cn/news/517339.html

相关文章:

  • 关于文件分片的介绍和应用
  • Linux基础第三天
  • 例举3种强制类型转换和2种隐式
  • |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面
  • 系统思考:IT企业项目困境分析
  • 基于Java+MySQL+Servlet的留言系统开发全解析
  • 电子电路:怎么理解电子在导体中的热运动?
  • C++数组详解:一维和多维数组的定义、初始化、访问与遍历
  • 算法优化——以“LCR 080. 组合”为例
  • React Native打包报错: Task :react-native-picker:verifyReleaseResources FAILE
  • IIS入门指南:原理、部署与实战
  • 电动车仪表上的数字怎么来的,想知道吗?
  • leetcode3546. 等和矩阵分割 I- medium
  • uniapp中的easycom工作机制
  • Flask快速入门和问答项目源码
  • ​在 ASP.NET 中,HTTP 处理程序(HttpHandler)是处理 HTTP 请求的核心组件​
  • 【Bluedroid】蓝牙HID DEVICE 报告发送与电源管理源码解析
  • Python 中 if 和 else 基础知识的详解和使用
  • 中级统计师-统计学基础知识-第四章 假设检验
  • 【老马】离线版金融敏感信息加解密组件开源项目 encryption-local
  • python打卡day29
  • spark数据处理练习题详解【下】
  • 【simulink】IEEE33节点系统潮流分析模型
  • 2025年全国青少年信息素养大赛C++小学全年级初赛试题
  • MyBatis框架(入门)
  • 【java多线程】线程间通信-利用wait和notify轮流按序打印奇数和偶数
  • 一文读懂-嵌入式Ubuntu平台
  • 基于Bootstrap 的网页html css 登录页制作成品
  • C++学习:六个月从基础到就业——C++17:if/switch初始化语句
  • MATLAB中的Switch语句讲解