实验模拟 搭建elk 日志分析系统

目录

一    实验环境

二    ELK Elasticsearch 集群部署(在Node1、Node2节点上操作)

 1,环境准备

2,  部署 Elasticsearch 软件(node1 node2)

2.1安装es

2.2设置开机自启

2.3修改 elasticsearch主配置文件(先备份)

2.4   创建数据存放路径并改属主,属组

2.5 启动elasticsearch是否成功开启

2.6  查看节点信息

3, 安装 Elasticsearch-head 插件(node1)

3.1 为什么要安装 Elasticsearch-head 插件

3.2 Elasticsearch-head 插件 是什么

3.3 编译安装 node

3.4  安装 phantomjs(前端的框架)

3.5 安装 Elasticsearch-head 数据可视化工具

3.6  修改 Elasticsearch 主配置文件

3.7 启动 elasticsearch-head 服务

4, 通过 Elasticsearch-head 查看 Elasticsearch 信息

5,测试Elasticsearch-head 的作用 (插入索引)

三      ELK Logstash 部署(在 Apache 节点99机器上操作) 

1,Logstash 作用

2,准备环境

3, 安装logstash

4,测试 Logstash

4.1  定义输入和输出流(基本测试)

4.2   使用 rubydebug 输出详细格式显示,codec 为一种编解码器

4.3   使用 Logstash 将信息写入 Elasticsearch 中

5,定义 logstash配置文件

5.1, logstash配置文件组成

5.2 logstash配置文件 语法

5.3 修改 Logstash 配置文件

四     ELK Kiabana 部署(在 Node1 节点上操作)

1,安装kiabana

2, 修改配置文件

3,启动 Kibana 服务

4,验证 Kibana

五    搭建一台完整的elk

1,在logstash节点(99机器)写子配置文件

2,绝对路径启动logstash -f 指定配置文件

3,验证elk 框架是否成功

六   总结

1,ELK日志分析系统

2,Elasticsearch

3, logstash

4,Kibana


一    实验环境

Node1节点(2C/4G):node1/192.168.217.77                    Elasticsearch  Kibana
Node2节点(2C/4G):node2/192.168.217.88                    Elasticsearch
Apache节点:                apache/192.168.217.99                  Logstash  Apache
 

二    ELK Elasticsearch 集群部署(在Node1、Node2节点上操作)

 1,环境准备

关闭防火墙

改主机名

配置域名解析

查看java 环境 (生产环境建议使用jdk

2,  部署 Elasticsearch 软件(node1 node2)

2.1安装es

2.2设置开机自启

2.3修改 elasticsearch主配置文件(先备份)

代码如下:

vim /etc/elasticsearch/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1
--33--取消注释,指定数据存放路径
path.data: /data/elk_data
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

没有问题,scp 传给 node2 (注意把node2的配置文件中的节点  改为node2)

2.4   创建数据存放路径并改属主,属组

2.5 启动elasticsearch是否成功开启

有点慢耐心等待一下

2.6  查看节点信息

浏览器访问  http://192.168.217.77:9200  、 http://192.168.217.88:9200 查看节点 Node1、Node2 的信息。


浏览器访问 http://192.168.217.77:9200/_cluster/health?pretty   http://192.168.217.88:9200/_cluster/health?pretty查看群集的健康情况,可以看到 status 值为 green(绿色), 表示节点健康运行。

绿色:健康  数据和副本 全都没有问题
红色:数据都不完整
黄色:数据完整,但副本有问题

3, 安装 Elasticsearch-head 插件(node1)

3.1 为什么要安装 Elasticsearch-head 插件

使用上述方式查看群集的状态对用户并不友好,可以通过安装 Elasticsearch-head 插件,可以更方便地管理群集。
 

3.2 Elasticsearch-head 插件 是什么

Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs
node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。
 

3.3 编译安装 node

先安装 编译环境

 编译安装node   ./configure    make && make install  (有点慢 等一会)

3.4  安装 phantomjs(前端的框架)

PhantomJS 是一个基于 WebKit 渲染引擎的无头(headless)浏览器,即它是一个没有用户界面(UI)的浏览器环境

先解压 phantomjs 包

将可执行文件拷贝到 /usr/local/bin

3.5 安装 Elasticsearch-head 数据可视化工具

解压Elasticsearch-head

进到这个包里 安装npm install

npm install 是 Node.js 环境中的一个命令,用于安装项目所需的依赖包

在项目根目录下运行此命令时,npm 会做以下两件事之一:

​​​​

  • 初始化新项目: 如果当前目录下不存在 package.json 文件,npm install 会创建一个新的空 package.json 文件,并将其设置为默认的 npm 初始化配置。这通常意味着生成一个简单的项目描述和初始的空白依赖列表。

  • 安装依赖: 如果当前目录下已存在 package.json 文件,npm install 将读取该文件中定义的 dependencies 和(可选的)devDependencies 字段,然后下载并安装这些依赖包及其子依赖到本地的 node_modules 目录。这个过程也被称为“npm install”。)

3.6  修改 Elasticsearch 主配置文件

跨域问题
由于安全原因,Elasticsearch 默认可能不允许跨域访问。如果您在访问 Elasticsearch Head 时遇到跨域问题,需要在 Elasticsearch 配置文件(通常位于 elasticsearch.yml)中添加以下配置:

vim /etc/elasticsearch/elasticsearch.ymlhttp.cors.enabled: true				#开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"			#指定跨域访问允许的域名地址为所有

systemctl restart elasticsearch

3.7 启动 elasticsearch-head 服务

#必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。

查看是否启动

4, 通过 Elasticsearch-head 查看 Elasticsearch 信息

通过浏览器访问 http://192.168.217.77:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。

5,测试Elasticsearch-head 的作用 (插入索引)

通过命令插入一个测试索引,索引为 index-demo,类型为 test。

代码如下;

curl -X PUT 'localhost:9200/index-demo1/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'这条 curl 命令的作用是向本地运行的 Elasticsearch 服务的 index-demo1 索引中,使用 PUT 方法更新或创建一个 ID 为 1、类型为 test 的文档。文档内容为一个包含 user 和 mesg 字段的 JSON 对象,并且请求期望接收格式化的 JSON 响应。

浏览器访问 http://192.168.217.77:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。
点击“数据浏览”,会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。

可以看到 索引类型

三      ELK Logstash 部署(在 Apache 节点99机器上操作) 

1,Logstash 作用

Logstash 一般部署在需要监控其日志的服务器。在本案例中,Logstash 部署在 Apache 服务器上,用于收集 日志信息并发送到 Elasticsearch。

2,准备环境

改主机名

安装Apahce服务(httpd)

查看java 环境

3, 安装logstash

解压压缩包

 做开机自启

做软连接

4,测试 Logstash

Logstash 命令常用选项:
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。

4.1  定义输入和输出流(基本测试)

logstash -e 'input { stdin{} } output { stdout{} }' 是一条运行 Logstash 的命令,用于快速搭建一个简单的数据处理管道。以下是对此命令的中文解释:

logstash: 这是命令本身,代表了 Elastic Stack 中用于收集、转换和输出日志和其他事件数据的工具。

-e (或 --config-string): 这是一个命令行选项,用于指定一个简短的 Logstash 配置字符串。这种方式适用于快速测试或临时运行简单的 Logstash 管道,而不必编写完整的配置文件。

'input { stdin{} } output { stdout{} }': 这是传递给 -e 选项的配置字符串,定义了一个基本的 Logstash 数据处理管道,由输入(input)和输出(output)两个阶段组成:

输入阶段 (input { ... }):

  • stdin{}: 表示使用 stdin 输入插件。这个插件从标准输入(通常指键盘输入或管道传输)读取数据。当运行此命令时,您可以直接在终端中输入文本,这些文本将作为 Logstash 处理的数据源。

输出阶段 (output { ... }):

  • stdout{}: 表示使用 stdout 输出插件。这个插件将 Logstash 处理后的数据输出到标准输出(通常指终端屏幕)。在本例中,经过 Logstash 处理的任何数据都会直接显示在终端上。

综上所述,这条命令启动了一个 Logstash 实例,其配置为从标准输入读取数据,经过内部处理(默认情况下,不做任何转换),然后将处理结果输出到标准输出。这是一个最基础的 Logstash 管道示例,常用于快速测试 Logstash 的功能或验证自定义过滤器规则。在实际使用中,Logstash 配置通常会更复杂,包含多个输入源、复杂的过滤规则以及多种输出目的地。

4.2   使用 rubydebug 输出详细格式显示,codec 为一种编解码器

logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
 

输入阶段 (input { ... }):

  • stdin{}: 与之前相同,表示使用 stdin 输入插件,从标准输入读取数据。

输出阶段 (output { ... }):

  • stdout{ codec=>rubydebug }: 这里仍然使用 stdout 输出插件,但添加了 codec 参数并赋值为 rubydebugcodec(编码器/解码器)在 Logstash 中用于定义数据的序列化和反序列化方式。具体到 rubydebug 编码器,它提供了详细的、易于阅读的输出格式,特别适用于调试。当使用 rubydebug 编码器时,Logstash 输出的数据将包含事件的元数据(如时间戳、事件类型等)以及事件的具体内容,以一种结构清晰、易于理解的方式展示。

综上所述,这条命令启动了一个 Logstash 实例,其配置与之前相似,但输出阶段使用了 rubydebug 编码器。这意味着从标准输入读取的数据在经过 Logstash 处理后,将被格式化为详细且易于阅读的形式输出到标准输出(终端屏幕)。这种配置尤其适用于开发和调试阶段,因为您可以直观地查看每个事件的完整结构和处理细节。在实际生产环境中,可能会选择更适合日志存储或分析需求的输出目的地和编码器,如将数据输出到 Elasticsearch 或使用更紧凑的 JSON 编码格式。

4.3   使用 Logstash 将信息写入 Elasticsearch 中

输入阶段 (input { ... }):

  • stdin{}: 与之前相同,表示使用 stdin 输入插件,从标准输入读取数据。

输出阶段 (output { ... }):

  • elasticsearch { hosts=>["192.168.217.77:9200"] }: 使用 elasticsearch 输出插件,将处理后的数据发送到指定的 Elasticsearch 服务器。这里的配置参数 hosts 指定了目标 Elasticsearch 服务器的地址和端口:

     Code 
    1hosts => ["192.168.217.77:9200"]

    表示 Logstash 将连接到 IP 地址为 192.168.217.77、监听在端口 9200 的 Elasticsearch 实例。Logstash 会将从标准输入读取并处理过的数据作为事件发送到该 Elasticsearch 服务器,存储在相应的索引中。

综上所述,这条命令启动了一个 Logstash 实例,其配置为从标准输入读取数据,经过内部处理(默认情况下,不做任何转换),然后将处理结果发送到 IP 地址为 192.168.217.77、端口为 9200 的 Elasticsearch 服务器。这种配置适用于将数据持久化存储到 Elasticsearch 中,便于后续进行日志搜索、分析和可视化。在实际使用中,可能还需要根据需求配置其他输出参数,如索引名、文档类型(对于旧版本 Elasticsearch)、映射模板等。

 
//结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://192.168.10.13:9100/ 查看索引信息和数据浏览。

5,定义 logstash配置文件

5.1, logstash配置文件组成

Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用)。
input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等
filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。

5.2 logstash配置文件 语法

#格式如下:
input {...}
filter {...}
output {...}

 #在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:

input {
    file { path =>"/var/log/messages" type =>"syslog"}
    file { path =>"/var/log/httpd/access.log" type =>"apache"}
}

5.3 修改 Logstash 配置文件

#修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。
首先给httpd 的日志加  可读的权限

写 子配置文件

子配置文件如下:

input {file{path =>"/var/log/messages"						#指定要收集的日志的位置type =>"system"									#自定义日志类型标识start_position =>"beginning"					#表示从开始处收集}
}
output {elasticsearch {										#输出到 elasticsearchhosts => ["192.168.217.77:9200"]			#指定 elasticsearch 服务器的地址和端口index =>"system-%{+YYYY.MM.dd}"					#指定输出到 elasticsearch 的索引格式}
}

重启   systemctl restart logstash 

浏览器访问 http://192.168.217.77:9100/ 查看索引信息

四     ELK Kiabana 部署(在 Node1 节点上操作)

1,安装kiabana

2, 修改配置文件

 代码如下:

vim /etc/kibana/kibana.yml
--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"--21--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.url: "http://192.168.217.77:9200" --30--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"

3,启动 Kibana 服务

4,验证 Kibana

浏览器访问 http://192.168.217.77:5601
第一次登录需要添加一个 Elasticsearch 索引:

具体方法:

单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。
数据展示可以分类显示,在“Available Fields”中的“host”,然后单击 “add”按钮,可以看到按照“host”筛选后的结果

点击创建索引

输入对应的索引,注意要es 机器上有的! kibana 只是显示es机器上有的

查看索引

五    搭建一台完整的elk

即有logstash 搜集httpd的 日志,输出到两台es 机器上,最后通过kiabana 人性化显示

1,在logstash节点(99机器)写子配置文件

目的:将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示

代码如下:

input {file{path => "/etc/httpd/logs/access_log"type => "access"start_position => "beginning"}file{path => "/etc/httpd/logs/error_log"type => "error"start_position => "beginning"}
}
output {if [type] == "access" {elasticsearch {hosts => ["192.168.217.77:9200"]index => "apache_access-%{+YYYY.MM.dd}"}}if [type] == "error" {elasticsearch {hosts => ["192.168.217.77:9200"]index => "apache_error-%{+YYYY.MM.dd}"}}
}

2,绝对路径启动logstash -f 指定配置文件

/usr/share/logstash/bin/logstash -f apache_log.conf

3,验证elk 框架是否成功

首先浏览器访问 http://192.168.217.77:9100 查看索引是否创建

即es机器上   是否有httpd的日志   logstash是否把日志传给es节点

因为es 节点没有的话,   你kiabana 也看不到

再去浏览器访问 http://192.168.217.77:5601 登录 Kibana,单击“Create Index Pattern”按钮添加索引, 在索引名中输入之前配置的 Output 前缀 apache_access-*,并单击“Create”按钮。在用相同的方法添加 apache_error-*索引。
选择“Discover”选项卡,在中间下拉列表中选择刚添加的 apache_access-* 、apache_error-* 索引, 可以查看相应的图表及日志信息。

 

 

六   总结

1,ELK日志分析系统

一套基于Elasticsearch、Logstash、Kibana三个开源的日志收集、存储、检索和可视化的解决方案

elk可以帮助用户快速定位和分析应用程序的故障,监控应用程序的性能和安全性,以及提供丰富的数据分析和展示功能。

2,Elasticsearch

Elasticsearch 是一个分布式和搜索和分析引擎,它可以对各种类型的数据进行近实时的索引和查询,支持高可用和水平扩展性

3, logstash

logstash:是一个数据处理管道,它可以从多个来源采集数据,对数据进行过滤、转换和增强,然后将数据发送到Easticsearch或者其他的目的地

4,Kibana

Kibana:是一个针对Elasticsearch的数据可视化平台,它可以通过各种图表、仪表盘和地图来展示和探索Elasticsearch中的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/807483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【vue/uniapp】使用 smooth-signature 实现 h5 的横屏电子签名

通过github链接进行下载,然后代码参考如下,功能包含了清空、判断签名内容是否为空、生成png/jpg图片等。 签名效果: 预览效果: 下载 smooth-signature 链接:https://github.com/linjc/smooth-signature 代码参考&a…

极狐GitLab 如何在 helm 中恢复数据

本文作者:徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何在极狐GitLab …

查杀linux挖矿病毒 kswapd0

中毒现象 高cpu占用,使用top命令查看cpu使用率长时间50%以上,cpu占用异常的进程八成就是挖矿病毒进程 此病毒隐藏了自己,top命令无法查看到挖矿病毒进程,可通过sysdig命令找到隐藏进程 安装sysdig curl -s https://s3.amazonaw…

[CSS]样式属性+元素设置

哎呀,好多东西,根本记不住,更多的还是边用边记吧,这里的代码就当使用范例,但其实如果可以让gpt应该会更好,哎学吧,反正记得住当然更好 文本 属性名描述word-break单词换行。取值如下&#xff1…

[自研开源] MyData数据融合平台 诚邀试用

MyData ,一个旨在简化 Web 应用之间数据对接的工具,提高日常工作效率,如其名“我的数据” 旨在让用户更好的掌控和管理数据。 v1.0 的目标是:针对多应用之间数据集成的场景,为开发人员提供更安全、更方便的对接集成方…

Elasticsearch8.x 设置密码

文章目录 一、环境说明二、使用elasticsearch-reset-password工具修改1、elasticsearch-reset-password工具位置2、设置密码 一、环境说明 elasticsearch版本:8.13.0 系统版本:Ubuntu 18.04.6 二、使用elasticsearch-reset-password工具修改 1、elast…

【Java程序员面试专栏 综合面试指南】5年资深程序员面试指南

基础知识对于5年内工作经验的同学考察相对比较多。包括编程语言、计算机网络、操作系统、设计模式、分布式知识、MySQL、Redis这种。其中随着年限的增长,基础知识考察的会越来越少,例如操作系统基本上只在学生阶段考察,计算机网络对于5年经验来说也考察的相对较少。5年以上对…

优化策略:企业海量文件传输事件处理(上)

在当今快速发展的商业环境中,企业的数据量正以前所未有的速度增长。这种增长不仅带来了机遇,也带来了挑战,特别是在文件传输任务的管理上。文件传输是企业日常运营中不可或缺的一部分,它涉及到大量的数据流动和信息交换。因此&…

0 idea搭建springboot项目

1 2 3 4 5 配置文件 application.yaml server:servlet:context-path: /app #项目名controller //注入到spring容器 Controller public class HelloController {GetMapping("hello")ResponseBodypublic String hello(){return "Hello,SpringBoot";} }启…

【MATLAB 预测算法教程】_1粒子群算法优化BP神经网络预测 - 教程和对应MATLAB代码

本文以MATLAB自带的脂肪数据集为例,将数据保存在EXCEL工作簿内,方便替换数据使用,以下介绍粒子群算法优化BP神经网络预测的MATLAB代码编写,主要流程包括1. 读取数据 2.划分训练集和测试集 3.归一化 4.确定BP神经网络的隐含层最优节点数量 5. 使用粒子群算法优化BP的神经网络…

[数据概念|数据技术]智能合约如何助力数据资产变现

“ 区块链上数据具有高可信度,智能合约将区块链变得更加智能化,以支持企业场景。” 之前鼹鼠哥已经发表了一篇文章,简单介绍了区块链,那么,智能合约又是什么呢?它又是如何助力数据资产变现的呢?…

Swagger转换成Excel文件

1、添加swagger解析依赖包&#xff1a; <dependency><groupId>io.swagger.parser.v3</groupId><artifactId>swagger-parser</artifactId><version>2.1.12</version></dependency>2、示例代码&#xff1a; package com.rlclou…

华为校招机试 - 相似图片分类(20240410)

题目描述 小明想要处理一批图片&#xff0c;将相似的图片分类。 他首先对图片的特征采样&#xff0c;得到图片之间的相似度&#xff0c;然后按照以下规则判断图片是否可以归为一类&#xff1a; 相似度 > 0 表示两张图片相似如果 A 和 B 相似&#xff0c;B 和 C 相似&…

基于spring boot的大学生体质测试管理系统

基于spring boot的大学生体质测试管理系统设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 …

新鲜出炉!这一套二手平台管理系统,太牛了,直接领取【带源码】

​今天给大家分享一套基于SpringbootVue的二手平台管理系统源码&#xff0c;在实际项目中可以直接复用。(免费提供&#xff0c;文末自取) 一、系统运行图&#xff08;设计报告和接口文档&#xff09; 1、登陆页面 2、后台页面 3、设计报告包含接口文档 二、系统搭建视频教程 …

基于RKNN的YOLOv5安卓Demo

1.简介 基于RKNPU2 SDK 1.6.0版的安卓YOLOv5演示应用程序&#xff0c;选择图片进行对象检测并显示识别结果。 GitHub源码地址&#xff1a;https://github.com/shiyinghan/rknn-android-yolov5 2.实现过程 参考RKNN官方库RKNN Model Zoo提供的YOLOv5对象检测demo&#xff0c…

SQL注入sqli_labs靶场第三题

?id1and 11 and 11和?id1and 11 and 11进行测试如果11页面显示正常和原页面一样&#xff0c;并且12页面报错或者页面部分数据显示不正常&#xff0c;那么可以确定此处为字符型注入。 根据报错信息判断为单引号带括号注入 联合查询&#xff1a; 猜解列名 ?id1) order by 3-…

Java毕业设计 基于springboot vue撸宠平台 宠物系统

Java毕业设计 基于springboot vue撸宠平台 宠物系统 springboot撸宠平台 宠物系统 功能介绍 首页 图片轮播 用户或商家注册 用户或商家登录 登录验证码 店铺信息 店铺详情 店铺投诉 宠物信息 宠物详情 预订 退订 搜索 收藏 点赞 踩 评论 个人中心 更新信息 我的收藏 在线客服…

提升法律文书起草效率:AlphaGPT 助力律师快速生成诉讼和仲裁文件

法律文书起草对于法律专业人士而言是一项基础而关键的任务。无论是民事、刑事还是行政诉讼&#xff0c;以及仲裁案件&#xff0c;精确的法律文书撰写对于案件的成功至关重要。然而&#xff0c;这一过程往往既耗时又复杂&#xff0c;尤其是在处理复杂的案情和面对当事人难以理解…

syncfusion-diagram:demo1如何实现

xmlns:syncfusion"http://schemas.syncfusion.com/wpf" xmlns:stencil"clr-namespace:Syncfusion.UI.Xaml.Diagram.Stencil;assemblySyncfusion.SfDiagram.WPF"当我们进入syncfusion的diagram中&#xff0c;可以看到&#xff0c;一个非常炫酷的例子 不仅实…