六.逼格拉满-Prometheus+Grafana微服务监控告警

前言

微服务架构是一个分布式系统,由多个独立的服务组成,每个服务可能运行在不同的容器、虚拟机或物理机上,那么在生产环境中我们需要随时监控服务的状态,以应对各种突发情况,比如:内存爆满,CPU标高等等。Prometheus作为一种开源的监控和告警系统,天生就是为分布式系统设计的。它能够轻松地收集、存储和查询各个微服务的监控数据,为微服务架构提供全面的监控能力。

在这里插入图片描述

一.Prometheus概述

1.认识Prometheus

Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。Prometheus有如下特点:

强大的数据收集和处理能力:Prometheus采用Pull模型从被监控目标中拉取指标数据,并且提供了多维度的数据模型和灵活的查询接口(PromQL)。这使得Prometheus能够轻松地收集和处理微服务中的各种监控数据,包括CPU、内存、网络、磁盘等系统级指标,以及应用程序级指标(如请求量、响应时间、错误率等)。

服务发现和动态配置:微服务架构中的服务是动态变化的,服务实例的创建、销毁和迁移是常态。Prometheus支持多种服务发现机制(如Kubernetes、Consul、Eureka等),能够自动发现新的被监控目标,并动态调整监控规则和告警配置。这使得Prometheus能够自动适应微服务架构的动态变化,确保监控的准确性和实时性。

告警和通知:Prometheus支持基于查询结果的告警规则配置,当满足特定条件时,会自动触发告警并发送通知。这对于微服务架构来说非常重要,因为微服务之间的依赖关系复杂,一旦某个服务出现故障,可能会影响到整个系统的稳定性。通过Prometheus的告警和通知功能,运维人员可以及时发现并处理故障,确保系统的稳定性和可用性。

可视化与仪表盘:Prometheus提供了内置的Web界面(Prometheus UI)来展示监控数据和仪表盘,同时还支持与第三方可视化工具(如Grafana)的集成。这使得运维人员可以直观地了解微服务的运行状态和性能指标,及时发现潜在问题并进行优化。

社区支持和扩展性:Prometheus是一个开源项目,拥有庞大的用户社区和活跃的开发者群体。这使得Prometheus具有强大的社区支持和扩展性,用户可以根据需求定制和扩展Prometheus的功能。同时,Prometheus也提供了丰富的插件和扩展接口,方便用户集成其他系统和工具,实现更全面的监控和管理。

2.Prometheus的架构

下面是Prometheus的架构图,Prometheus可以看做是一个数据采集中心,它需要去收集和存储数据,并通过UI展示出来,如下:
在这里插入图片描述
Prometheus的架构图通常展示了其核心组件以及它们之间的交互方式。以下是一个Prometheus架构图及其组件的解释:

  • Prometheus Server:
    这是Prometheus系统的核心组件,负责收集和存储时间序列数据。Prometheus Server会定期从配置的目标(targets)中拉取(pull)监控数据。
    Prometheus Server还提供了一个HTTP API,允许用户查询存储的数据、配置告警规则等。Prometheus Server使用内置的时间序列数据库(TSDB)来存储监控数据,这使其具有高性能的写入和查询能力。
  • Exporters:
    Exporters是负责从各种服务和系统(如数据库、中间件、硬件等)中抓取监控数据的组件。它们将监控数据转换为Prometheus可以理解的格式(通常是文本格式),并通过HTTP接口暴露给Prometheus Server。
    Prometheus提供了许多官方的Exporters,同时也支持第三方开发的Exporters。这些Exporters使得Prometheus能够监控各种类型的应用和服务。
  • Pushgateway:
    Pushgateway是Prometheus的一个组件,用于接收短期作业(如批处理任务)的监控数据。由于这些作业的生命周期较短,可能无法被Prometheus Server及时抓取到数据。因此,这些作业可以将数据推送到Pushgateway,然后由Prometheus Server从Pushgateway中拉取数据。
    Pushgateway通常用于监控那些生命周期较短、或者网络位置不便于直接抓取的服务。
  • Alertmanager:
    Alertmanager负责处理Prometheus Server发送的告警通知。用户可以配置告警规则,当满足特定条件时,Prometheus Server会发送告警通知给Alertmanager。
    Alertmanager会对告警通知进行去重、分组、路由和静默等操作,并通过各种方式(如邮件、Slack、Webhook等)将告警发送给相关人员。
  • Web UI & Grafana:
    Prometheus提供了一个内置的Web UI,用于展示监控数据和仪表盘。用户可以通过Web UI浏览监控数据、配置告警规则等。
    同时,Prometheus也支持将监控数据集成到Grafana等第三方可视化工具中,提供更丰富的可视化效果和仪表盘定制能力。

二.Prometheus安装

我这里准备了2台机器,一个是作为Prometheus+Grafana的安装,一个是作为被监控的目标

172.168.120.150 : Prometheus
172.168.120.190 : 被监控主机

1.安装Docker

没有安装Docker的需要先安装Docker,

[root@root ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@root ~]# yum install docker-ce -y
[root@root ~]# systemctl start docker
[root@root ~]# systemctl enable docker

2.准备工作目录

mkdir /opt/prometheus

创建一个目录,后续容器映射的相关文件将会在放到该目录中

3.创建配置文件

普罗米修斯的配置是通过yaml来配置的,我们在工作目录中创建配置文件。配置文件参考官网:https://prometheus.io/docs/prometheus/latest/getting_started/

vi /opt/prometheus/prometheus.yml

global:
  scrape_interval:    15s #15s抓取一次目标数据
  evaluation_interval: 15s

scrape_configs:
- job_name: prometheus #一个监控目标配置一个 job_name,这里在监控prometheus 自己
  scrape_interval: 5s #5s一次数据抓取
  static_configs:
  - targets: ['localhost:9090']	#监控目标主机,监控prometheus 自己
    labels:
      instance: prometheus #给监控目标制定标签名

注意:上面主要配置了一下监控的目标主机:9090是prometheus容器的端口,9100是grafana的端口。我这里打算把prometheus安装到一起,如果不是本机安装那么需要把localhost改成对应的机器IP

4.安装Prometheus容器

官方安装文档:https://prometheus.io/docs/prometheus/latest/installation/

docker run  --name=prometheus -d \
-p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \
prom/prometheus

启动好容器之后,可以通过:192.168.112.30:9090 访问prometheus ,在菜单:status - Targets 中可以看到监控的目标
在这里插入图片描述

注意:如果出现了警告提示 需要在服务器更正时间:ntpdate ntp.aliyun.com
在这里插入图片描述

三.Grafana 安装

Grafana是一款开源的数据可视化和监控平台。它主要用于时序数据的监控,能够将复杂的数据转化为易于理解的图表和仪表盘,并在一个界面中集中展示多个数据源的数据。

Grafana支持多种数据源,包括时序数据库、关系型数据库、日志文件等,用户可以方便地从不同数据源中查询和聚合数据。同时,它提供了丰富的图表和面板,可以将数据以直观的方式展示出来,帮助用户更好地理解数据。

Grafana还具备实时监控和告警功能,能够实时了解系统状态、性能等指标的变化情况,并在达到预设阈值时发送通知,提醒用户关注和处理。此外,Grafana支持插件式的开发模式,用户可以通过插件扩展功能,满足自己的特定需求。

总之,Grafana是一个功能强大的数据可视化工具,可以帮助用户实时监控和分析数据,提高数据分析效率和工作效率。

在这里插入图片描述

1.创建挂载数据目录

mkdir /opt/grafana-storage

设置目录权限,因为这个文件需要写入所以要给一定的权限,这里为了方便测试给777,具体权限要根据具体实际情况而定。

chmod 777 -R /opt/grafana-storage

2.启动Grafana容器

需要制定-v目录映射,Grafana的端口是3000

docker run -d \
-p 3000:3000 \
--name=grafana \
-v /opt/grafana-storage:/var/lib/grafana \
grafana/grafana

安装好之后,通过 3000端口访问,账号密码都是admin ,第一个登录会要求修改密码 ,登录成功之后,如下:
在这里插入图片描述

3.配置Grafana 数据源

登录之后,找到 Data Source ,给Grafana添加数据源 。大概意思就是 Grafana要从Prometheus中获取数据用来做图表展示,所以需要把Prometheus作为 Data Source配置给Grafana
在这里插入图片描述
点击 add datasource 按钮添加数据源。 然后在添加面板中指定 Prometheus 的URL,然后点击下面的 Save 保存,如下
在这里插入图片描述

四.监控Docker

接下来是对目标主机做监控,通常情况下我们有Linux监控 和 Docker监控两种方式,Docker监控我们可以使用cAdvisor:用于收集正在运行的容器资源使用和性能信息。的,他会把数据采集到Prometheus中,Grafana再从Prometheus抓取数据做展示,官方文档:https://github.com/google/cadvisor

1.在目标主机安装cadvisor

注意:我是在另外一台【ip :172.168.120.190】机器上安装的

docker run -d \
-v /:/rootfs:ro \
-v /var/run:/var/run:ro \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-v /dev/disk/:/dev/disk:ro \
-p 9200:8080 \
--name=cadvisor \
google/cadvisor

通过访问9200端口即可看到cadvisor的界面,但是它的界面并不友好,且cadvisor只有数据采集能力,没有数据存储能力,我们还是需要把数据交给Prometheus去存储
在这里插入图片描述

2.Prometheus监控cadvisor

cadvisor通过目录映射的方式拿到容器的监控信息,端口是9200,然后Prometheus需要从cadvisor中拿到数据。接下来配置Prometheus,在Prometheus机器上修改配置文件,增加对cadvisor的监控

vi /opt/prometheus/prometheus.yml

global:
  scrape_interval:    15s
  evaluation_interval: 15s

scrape_configs:
- job_name: prometheus
  scrape_interval: 5s
  static_configs:
  - targets: ['localhost:9090']
    labels:
      instance: prometheus
- job_name: docker #增加对目标主机的监控
  scrape_interval: 5s
  static_configs:
  - targets: ['172.168.120.190:9200'] #目标主机的地址和端口
    labels:
      instance: docker

修改完配置后需要重启prometheus : docker restart prometheus

3.通过Grafana监控Docker主机

现在我们在190机器上安装了cadvisor,他会负责采集Docker主机的数据,然后prometheus 会从cadvisor中pull数据,那么我们需要在Grafana可视化界面中添加pannel来展示数据
在这里插入图片描述
我们可以在 create 菜单中,自己去创建Panel来展示数据,但是自己去添加挺麻烦的,Grafana内置了一些监控模板。找到:import 菜单点击进去在这里插入图片描述
这里我们可以输入模板的下载地址,或者模板的编号ID,比如:

  • Docker主机监控模板 :193
  • Lingux主机监控模板 :9276

在输入框中输入:193,然后点击load,界面效果如下:
在这里插入图片描述
这里指定监控的名字,下面选择 Prometheus ,然后点击import导入,效果如下:
在这里插入图片描述
面板中可以看到容器情况,CPU情况,内存情况,网络情况等

五.监控Linux

接下来是对目标主机做监控,通常情况下我们有Linux监控 和 Docker监控两种方式,Linux监控我们可以使用node_exporter:node_exporter是用于监控Linux系统的指标采集器,他会把数据采集到Prometheus中,Grafana再从Prometheus抓取数据做展示,官方文档:https://prometheus.io/docs/guides/node-exporter/

1.安装node-exporter

下载安装包:https://github.com/prometheus/node_exporter/releases,通过下面命令直接下载

wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz

下载成功后需要解压

tar -zxvf node_exporter-1.7.0.linux-amd64.tar.gz
mv node_exporter-1.7.0.linux-amd64 /usr/local/node_exporter

2.安装node_expoter服务

将node_expoter部署到被监控端,并配置为系统服务管理:

# vi /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

创建好服务之后就可以启动服务了

systemctl daemon-reload
systemctl start node_exporter
# systemctl enable node_exporter

启动成功之后,可以通过:ps -ef | grep node 来查看是否启动成功
在这里插入图片描述
通过浏览器访问:172.168.120.190:9100 ,如果访问不成功可能是防火墙问题,可以通过:systemctl stop firewalld 暂时关闭防火墙,或者直接开放端口firewall-cmd --zone=public --add-port=9100/tcp --permanent
在这里插入图片描述

3.配置Prometheus

接下来配置Prometheus,在Prometheus机器上修改配置文件,增加对NodeExporter的监控

vi /opt/prometheus/prometheus.yml

global:
  scrape_interval:    15s
  evaluation_interval: 15s

scrape_configs:
- job_name: prometheus
  scrape_interval: 5s
  static_configs:
  - targets: ['localhost:9090']
    labels:
      instance: prometheus
- job_name: docker #增加对目标主机的监控
  scrape_interval: 5s
  static_configs:
  - targets: ['172.168.120.190:9200'] #目标主机的地址和端口
    labels:
      instance: docker
- job_name: linux #增加对目标主机的监控
  scrape_interval: 5s
  static_configs:
  - targets: ['172.168.120.190:9100'] #目标主机的地址和端口
    labels:
      instance: linux

修改之后使用 docker restart prometheus 重启,然后再Grafana左边菜单 import中去导入 9276图表模板:成功导入后效果如下
在这里插入图片描述
如果某些图标没数据,那是因为收集数据的表达式中的属性名没有对上,比如可以点中图表右键编辑。比如:网卡名是 enp0s3(通过:ifconfig查看) ,而默认 $inc 所以出不来数据,修改保存即可
在这里插入图片描述

六.设置告警

当我们的设备指标过高,比如:cpu标高到90%以上我们可以通过Grafana触发报警,然后通过邮件,webhook或其他方式,给管理员告警,管理员可以及时进行抢修。

1.Grafana配置邮件

如果要实现邮件报警就需要有发送邮件的邮箱 和 接受邮件的邮箱,下面我使用QQ邮箱来测试,登录QQ邮箱后找到 设置 - 账号 - 找到 POP3/IMAP/SMTP … 邮件服务,然后去开通smtp服务功能,开通过后会得到一个授权码,是一个随机字符串。
在这里插入图片描述
然后我们需要把该发送放邮箱配置给grafana,因为是docker启动的,所以我这里把配置文件拷贝出来修改

Grafnan的配置文件在容器中的这个位置/etc/grafana/grafana.ini,把容器中的配置文件拷贝出来方便修改

docker cp grafana:/etc/grafana/grafana.ini ./

编辑配置文件vi grafana.ini,修改smtp邮箱配置,你需要把对应的内容修改为你自己的哦

[smtp]
enabled = true
host = smtp.qq.com:587
user = xxxx@qq.com
password = 邮箱你的授权码
;cert_file =
;key_file =
;skip_verify = false
from_address = xxxx@qq.com
from_name = Grafana
ehlo_identity = 
startTLS_policy = 
[emails]
welcome_email_on_sign_up = true
templates_pattern = emails/*.html, emails/*.txt
content_types = text/html

把配置文件拷贝进去 docker cp grafana.ini grafana:/etc/grafana , 然后重启 docker restart grafana 。 重启成功后,进入到Grafana界面 - 找到setting - 查看邮件是否配置成功
在这里插入图片描述

2.配置告警规则

我们首先找到监控面板,比如我要对CPU做告警监控,点击标题右键 - Edit编辑
在这里插入图片描述
在编辑页面 - 下方 - 有一个 alert 菜单,去创建一个Alert 如下
在这里插入图片描述
第一步:填写好 rule name ; floder 可以自定义一个然后create 如下:
在这里插入图片描述
第二步:设置预警值:在项目 A 点击 run queries可以显示CPU的监控数据,然后在 B(有可能不是B)项目中When的地方选择预警条件: when(当) , last(最后一次数据) , is Above (超过某个值),然后图标中会出现一个红色的线条就是预警值了。
在这里插入图片描述
第三步:设置告警条件 , 往下滚动在Define alert conditions , 下面的含义是:每隔1分钟做一次检测,如果持续5分钟都超过告警值就会触发告警。
在这里插入图片描述
设置好之后,点击右上角的保存按钮:在这里插入图片描述

3.设置告警接受邮箱

设置了alert告警规则后在 alert 菜单中可以看到告警规则
在这里插入图片描述
我们点击Contact points配置联系人,也就是邮件接受者,点击 new Contact points
在这里插入图片描述
这里需要填写name, Contact point type 选择 email即可,这个地方可以选择多种报警方式,比如:wehook,钉钉等。

然后填写好收件人邮箱,右边点击 test 测试 。 如果能发送就点击save即可。
在这里插入图片描述

那么当CPU的使用率达到了 我们设置的阈值机会自动告警并且触发邮件发送。效果如下
在这里插入图片描述

文章结束,如果对你有帮助请给好评哦

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过短信群发平台拓客引流营销的效果好不好?

通过短信群发平台进行营销拓客引流的效果可以是非常显著的,但具体效果会受到多种因素的影响,如目标受众的选择、短信内容的吸引力、发送时间和频率的合理性等。 以下是一些短信群发平台营销拓客引流的优势: 1.广泛覆盖:短…

Linux|ubuntu22.04安装CUDA最新完整教程

文章目录 一、安装前准备工作查看GPU和型号查看GCC版本*下载gcc12 *检查驱动 二、安装CUDA Toolkit*安装驱动 三、安装后的工作必要操作推荐的操作开启守护进程模式删除本地下载安装包 四、验证删除CUDA常见问题及解决方案还需要安装cuDNN吗?nvcc: No such file or …

Java-常见面试题收集(十六)

二十五 RocketMQ 1 消息队列介绍 消息队列,简称 MQ(Message Queue),它其实就指消息中间件,当前业界比较流行的开源消息中间件包括:RabbitMQ、RocketMQ、Kafka。(一个使用队列来通信的组件&…

信捷XD系列PLC通讯失败程序无法下载如何设置

如题:最近在使用信捷PLC,有时会出现通讯不上的问题,下面将通讯配置步骤及注意事项分享。 一、确保PLC通电,电脑使用USB通讯线和PLC连接。 二、打开程序,点击串口标识,会弹出通信配置窗口。 三、双击USB通讯这条进行设…

【AI如何帮你编写测试用例并输出表格格式】

1、工具:顺便使用一款生成式AI即可,此处用的是ChatGPT,Kimi这两个工具试验。 2、首先要拿到需求文档,根据需求文档向AI发出如下指令(Prompt) “请根据下面这段需求,编写测试用例: …

Spark-键值对RDD数据分区

Spark概述 Spark-RDD概述 在Spark中,键值对RDD数据分区是指将键值对RDD中的数据分布到集群中的不同节点上的过程。 Spark目前支持Hash分区、Range分区和用户自定义分区。Hash分区为当前的默认分区。 分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle后…

【Docker系列】 Docker容器具体信息查询

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

TCP通信流程

TCP通信流程 TCP和UDP的区别 TCP(传输控制协议) 面向连接的:在数据传输之前,TCP 需要三次握手来建立连接。可靠的传输:通过序列号、确认响应、重传机制、流量控制和拥塞控制来保证数据正确传输。基于字节流&#xf…

Redis崩溃后,如何进行数据恢复的?no.24

本课时我们主要学习通过 RDB、AOF、混合存储等数据持久化方案来解决如何进行数据恢复的问题。 Redis 持久化是一个将内存数据转储到磁盘的过程。Redis 目前支持 RDB、AOF,以及混合存储三种模式。 RDB Redis 的 RDB 持久化是以快照的方式将内存数据存储到磁盘。在…

MongoDB基础入门到深入(八)MongoDB整合SpringBoot、Chang Streams

文章目录 系列文章索引十五、MongoDB整合SpringBoot1、环境准备2、集合操作3、文档操作(1)相关注解(2)创建实体(3)添加文档(4)查询文档(5)更新文档&#xff0…

Science| 单体耦合纤维实现无芯片纺织电子(纤维器件/智能织物/柔性可穿戴电子)

东华大学Hongzhi Wang,Chengyi Hou和Qinghong Zhang团队在《Science》上发布了一篇题为“Single body-coupled fiber enables chipless textile electronics”的论文。论文内容如下: 一、 摘要 智能纺织品为将技术融入日常生活中提供了理想的平台。然而,目前的纺织电子系统…

非关系型数据库NOSQL

文章目录 1. NOSQL 概述2. 相关理论基础2.1 一致性2.2 分区2.3 存储分布2.4 查询模型 3. NOSQL 数据库的种类3.1 文档存储3.2 键值存储3.3 列存储3.3 图存储 4. NOSQL 应用案例和新技术4.1 HBase 数据库4.2 云数据库 GeminiDB 非关系型的数据库 NOSQL (Not Only SQL)是对不同于…

paligemma、Grounding-DINO-1.5简单无需标注无需训练直接可以使用的VLM图像到文本模型

1、paligemma 参考:https://github.com/google-research/big_vision/blob/main/big_vision/configs/proj/paligemma/README.md 模型架构: 文本与图像特征一起送入大模型 在线体验网址: https://huggingface.co/spaces/big-vision/paligemma 通过文字prompt既可与图片对话…

Windows11下使用Qt5.14.2编译QtXlsx驱动详细步骤

原有&#xff1a;由于系统需要将QTableWidget表格中的数据导出、在Windows下最开始使用Excel.Application组件实现了导出功能&#xff0c;后面将代码转换到Ubuntu20.04下进行编译&#xff0c;发现项目.pro文件中的QT axcontainer和代码.h文件中的#include <QAxObject>跟…

运维开发.索引引擎ElasticSearch.倒序索引的概念

运维开发.索引引擎ElasticSearch 倒序索引的概念 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn…

ConCurrentHashMap源码学习

ConCurrentHashMap在JDK7之前是ReentrantLockSegmentHashEntry&#xff0c;在JDK8及之后是synchronizedCASNode红黑树。 JDK7之前 对于JDK7的版本实现&#xff0c;ConcurrentHashMap为了提高本身的并发能力&#xff0c;在内部采用了一个Segment结构&#xff0c;一个Segment其…

路由器不能端口映射什么原因?如何设置内网映射?

近期有小伙伴发来求助信息&#xff0c;他以前开游戏服务器和别人一起玩&#xff0c;那个时候端口映射还好&#xff0c;不知道哪一天开始突然不行了&#xff0c;已经是公网了&#xff0c;光猫是桥接的状态&#xff0c;连路由器都换了&#xff0c;就是不能端口映射开服务器&#…

如何使用Suno:免费的AI歌曲生成器

文章目录 Suno AI 是什么&#xff1f;Suno AI 如何工作&#xff1f;选择Suno AI的理由&#xff1a;核心优势易于操作多样化创作灵活的定价策略版权保障技术突破 如何使用Suno AI创作歌曲&#xff1f;第1步&#xff1a;注册Suno AI账户第2步&#xff1a;输入提示词创建第 3 步&a…

酷开系统 | 酷开科技把握智慧先机 AI赋能家庭场景

智慧化是当今世界科技发展的前沿领域之一。现在的智慧化&#xff0c;也正在逐步成为我们日常生活的一部分。电视系统也进入了数字化时代&#xff0c;AI的应用正在不断扩展&#xff0c;其潜力似乎无穷无尽。 酷开科技深耕人工智能技术&#xff0c;在提升语音体验、强化智能家居…