【30天精通Prometheus:一站式监控实战指南】第15天:ipmi_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们👋

  欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀

  Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪

  在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆

  目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯

  这是一段精彩旅程,期待你的加入!🎉


文章目录

  • 一、ipmi_exporter概述📘
  • 二、安装ipmi_exporter💾
    • 2.1 访问ipmi_exporter官方网站 🌐
    • 2.2 选择适合的版本🔍
    • 2.3 下载ipmi_exporter⬇️
    • 2.4 解压安装包📂
    • 2.5 运行ipmi_exporter🚀
  • 三、ipmi_exporter指标和配置详解📖
    • 3.1 ipmi_remote.yml
    • 3.2 ipmi_exporter.service
  • 四、实战演练:生产环境搭建指南🔨
    • 4.1 安装freeipmi并添加权限
      • 4.1.1 安装ipmitool 并加载相应模块
      • 4.1.2 给deploy用户添加freeipmi的执行权限
    • 4.2 部署管理ipmi_exporter
      • 4.2.1 创建普通用户管理ipmi_exporter👤
      • 4.2.2 解压ipmi_exporter.tar.gz📦
      • 4.2.3 将ipmi_exporter集成到Prometheus配置中✂️
      • 4.2.4 更改ipmi_exporter软件包名称✂️
      • 4.2.5 创建ipmi_remote.yml文件
      • 4.2.6 编辑ipmi_exporter.service文件📝
      • 4.2.7 启动ipmi_exporter.service🔌
      • 4.2.8 查看服务是否正常启动🔍
  • 相关资料下载地址📚

一、ipmi_exporter概述📘

定义
  ipmi_exporter是一个用于收集物理机信息的工具,它是Prometheus监控系统中的一个组件。其主要作用是通过IPMI(Intelligent Platform Management Interface,智能平台管理接口)协议,从支持IPMI的设备上收集硬件相关的监控数据,并将这些数据转换为Prometheus可以理解的格式,从而实现对物理服务器的硬件监控。

功能
  数据收集:它能够通过IPMI协议从远程物理机上收集各种硬件指标,如温度、电压、风扇速度等。

  数据转换:收集到的数据会被转换为Prometheus监控系统的标准格式,即metrics格式,这样Prometheus就能轻松地抓取和处理这些数据。

  远程监控支持:支持远程收集数据,这意味着无需在每台物理机上安装ipmi_exporter,只需在中心位置部署,即可监控多个远程服务器。

  灵活性:一个exporter实例可以监控多个IPMI接口,这减少了资源消耗并提高了监控效率。

  安全性:支持TLS加密和基本认证,确保监控数据在传输过程中的安全性。

应用场景
  数据中心监控:在大型数据中心中,有大量的物理服务器需要监控。ipmi_exporter能够帮助管理员实时监控这些服务器的硬件状态,如温度、电压和风扇速度等关键指标,从而确保服务器的稳定运行。

  远程故障排查:当服务器出现故障时,管理员可能无法直接访问服务器。此时,ipmi_exporter可以通过远程收集硬件数据,帮助管理员快速定位并解决问题。

  自动化运维:结合Prometheus的Alertmanager,ipmi_exporter可以自动化处理硬件警告。例如,当某个硬件指标超出预设阈值时,系统可以自动重启有问题的设备或触发通知,从而减少人工干预的需要并提高运维效率。

二、安装ipmi_exporter💾

注意事项和常见问题
  1.环境配置:确保服务器支持IPMI协议,并已启用。检查服务器的IPMI配置,包括IP地址、用户名和密码,确保可以远程访问。

  2.依赖安装:ipmi_exporter依赖于freeipmi库,因此在安装前需要确保系统上已安装freeipmi。安装freeipmi时,可以根据操作系统使用相应的包管理器,如apt-get install freeipmi(Debian/Ubuntu)或yum install freeipmi(CentOS/RHEL)。

  3.下载与安装:从GitHub的官方仓库下载ipmi_exporter的最新版本。根据需要下载对应的发行版,解压后即可使用。

  4.配置文件:如果需要监控远程服务器,需配置ipmi_remote.yml文件,指定目标服务器的IPMI地址、用户名和密码。确保配置文件中的信息准确无误,以避免连接失败。

  5.启动与运行:使用nohup或其他方式在后台启动ipmi_exporter,确保服务持续运行。启动后,可以通过访问指定的HTTP端口(默认为9290)来验证ipmi_exporter是否成功运行。

2.1 访问ipmi_exporter官方网站 🌐

  • 打开浏览器,访问ipmi_exporter的官方下载页面,通常位于Github官方网站的ipmi_exporter下:https://github.com/prometheus-community/ipmi_exporter/releases

2.2 选择适合的版本🔍

  • 在下载页面,你将看到不同操作系统的ipmi_exporter二进制包。根据你的操作系统选择适合的版本。例如,如果你使用的是Linux 64位系统,就选择ipmi_exporter-1.8.0.linux-amd64.tar.gz(其中x.x.x是版本号)。

2.3 下载ipmi_exporter⬇️

  • 点击所选版本的下载链接,将ipmi_exporter的二进制包下载到你的本地计算机。

2.4 解压安装包📂

  • 将下载的ipmi_exporter压缩包解压到你想要安装的目录。你可以使用命令行工具(如tar)来完成这个步骤。解压后,你将看到一个名为ipmi_exporter-x.x.x.linux-amd64的目录,其中包含ipmi_exporter的二进制文件和其他相关文件。
tar -xzf ipmi_exporter-1.8.0.linux-amd64.tar.gz

2.5 运行ipmi_exporter🚀

  • 进入解压后的目录,并运行ipmi_exporter服务器。在Linux下,你可以使用如下命令。如果一切正常,你应该能在终端看到ipmi_exporter的启动日志。
cd ipmi_exporter-x.x.x.linux-amd64

./ipmi_exporter

三、ipmi_exporter指标和配置详解📖

  • 黑色:作为默认文本颜色。
  • 绿色:表示常规配置项
  • 橙色:表示具有互斥参数的配置项 / 建议开启(根据自己的场景确定需求)
  • 蓝色:不重要的配置项 / 建议不开启
  • 红色:表示关键信息和警告 / 最好开启

注意:

  • 1.相关参数配置建议仅供参考,具体要以自己生产的实际需要自行配置。
  • 2.以下配置参数介绍是基于ipmi_exporter-1.8.0.linux-amd64版本说明的,其它版本会有不同。

3.1 ipmi_remote.yml

modules:
  default:
    user: "default_user"
    pass: "example_pw"
    driver: "LAN_2_0"
    privilege: "user"
    timeout: 10000
    collectors:
    - bmc
    - ipmi
    - chassis
    exclude_sensor_ids:
    - 2
    - 29
    - 32
    - 50
    - 52
    - 55
  dcmi:
    user: "admin_user"
    pass: "another_pw"
    privilege: "admin"
    driver: "LAN_2_0"
    collectors:
    - dcmi
  thatspecialhost:
    user: "some_user"
    pass: "secret_pw"
    privilege: "admin"
    driver: "WORK"
    collectors:
    - ipmi
    - sel
    workaround_flags:
    - discretereading
    custom_args:
      ipmi:
      - "--bridge-sensors"
  advanced:
    user: "some_user"
    pass: "secret_pw"
    privilege: "admin"
    driver: "WORK"
    collectors:
    - ipmi
    - sel
    collector_cmd:
      ipmi: sudo
      sel: sudo
    custom_args:
      ipmi:
      - "ipmimonitoring"
      sel:
      - "ipmi-sel"
  • default
    • user: “default_user”
        用于连接IPMI 设备的用户名
    • pass: “example_pw”
        用于连接IPMI 设备的密码
    • driver: “LAN_2_0”
        IPMI 协议的版本或类型。“LAN_2_0” 表示使用 IPMI v2.0 协议进行通信
    • privilege: “user”
        IPMI 用户的权限级别。“user” 权限通常允许基本的监控和读取操作,一般不允许进行配置更改
    • timeout: 10000
        连接超时时间,单位是毫秒
    • collectors: [ “bmc”,“ipmi”,“chassis” ]
        指定要启用的数据采集器列表。这些采集器决定了 ipmi_exporter 从 IPMI 设备中收集哪些数据。在提供的配置示例中,启用了 bmc(基板管理控制器信息)、ipmi(IPMI 设备信息)、chassis(机箱状态信息)等采集器,大家可以根据需要启用或禁用特定的采集器
    • exclude_sensor_ids:
        一个列表,包含不希望监控的传感器 ID。在提供的配置中,ID 为 2、29、32、50、52 和 55 的传感器将被排除在监控之外。这可以用于过滤掉不重要或不需要监控的传感器数据。
  • dcmi
    • user: “admin_user”
        用于连接到IPMI接口的用户名
    • pass: “another_pw”
        与用户名对应的密码。这里的密码是"another_pw"
    • privilege: “admin”
        定义了IPMI会话的权限级别。在此配置中,它被设置为"admin",这意味着该用户具有更高的权限,可以执行更广泛的操作,包括配置更改等
    • driver: “LAN_2_0”
        指定用于连接的IPMI驱动类型。"LAN_2_0"表示使用IPMI v2.0协议通过局域网进行通信
    • collectors: dcmi
        这是一个列表,指定ipmi_exporter应从IPMI设备收集哪些类型的数据。在此配置中,只启用了dcmi收集器
  • thatspecialhost
    • user: “some_user”
        用于连接到特定IPMI设备的用户名,这里设置为"some_user"。确保该用户名与你的IPMI设备上配置的用户名一致
    • pass: “secret_pw”
        与用户名相对应的密码,此例中为"secret_pw"。你需要确保这个密码正确,以便ipmi_exporter能够成功登录到IPMI设备
    • privilege: “admin”
        用户的权限级别,这里设置为"admin"。管理员权限通常允许用户执行更广泛的监控和管理操作
    • driver: “WORK”
        指定用于连接的IPMI驱动类型
    • collectors: [ “ipmi”,“sel” ]
        指定ipmi_exporter应从IPMI设备收集的数据类型。在这个配置中,启用了ipmi和sel两个采集器
    • workaround_flags: [“discretereading”]
        包含用于解决特定IPMI设备兼容性问题的标志
    • custom_args: ipmi: [“–bridge-sensors”]
        允许你指定额外的命令行参数,这些参数将传递给底层的IPMI监控工具(如ipmimonitoring)。在这个配置中,为ipmi采集器指定了一个参数"–bridge-sensors"。这个参数的具体作用取决于底层工具和IPMI设备的实现,通常用于处理或转换传感器数据。
  • advanced
    • user: “some_user”
        用于连接到IPMI设备的用户名
    • pass: “secret_pw”
        与用户名对应的密码
    • privilege: “admin”
         指定用于与IPMI设备通信的驱动类型
    • driver: “WORK”
         一个列表,定义了ipmi_exporter应该从IPMI设备收集哪些类型的数据
    • collectors: [ “ipmi”,“sel” ]
        一个列表,定义了ipmi_exporter应该从IPMI设备收集哪些类型的数据
    • collector_cmd: {“ipmi”: sudo ,“sel”: sudo}
        允许你为不同的采集器指定运行命令的前缀。在这个例子中,ipmi和sel采集器都使用了sudo命令前缀,这意味着ipmi_exporter会尝试以超级用户权限运行这些采集器。这是因为某些操作需要更高的权限才能执行
    • custom_args: {“ipmi”: [“ipmimonitoring”],“sel”: [“ipmi-sel”]}
        允许为特定的采集器提供自定义的命令行参数

3.2 ipmi_exporter.service

  • - -config.file=CONFIG.FILE
      指定配置文件的路径。这个配置文件包含了如何连接到 IPMI 设备的信息,比如设备的 IP 地址、用户名、密码等。CONFIG.FILE 应该替换为你的实际配置文件路径。
  • - -freeipmi.path=FREEIPMI.PATH
      指定 freeipmi 工具的路径ipmi_exporter 依赖于 freeipmi 工具来收集 IPMI 数据。如果你已经把 freeipmi 安装到了系统的 PATH 环境变量中,那么不需要设置这个参数。FREEIPMI.PATH 应该替换为 freeipmi 工具的实际路径。
  • - -[no-]web.systemd-socket
      一个布尔标志,用于控制是否使用 systemd socket 激活。如果你的 ipmi_exporter 是通过 systemd socket 激活的,那么应该启用这个标志。加上 no- 前缀会禁用这个选项,即不使用 systemd socket 激活。
  • - -web.listen-address=:9290
      指定 ipmi_exporter 的 HTTP 服务监听地址和端口。:9290 表示监听所有 IPv4 和 IPv6 地址的 9290 端口。你可以根据需要更改端口号或绑定到特定的 IP 地址。
  • - -web.config.file=“”
      要使用 TLS 和/或基本身份验证,需要传递配置文件使用参数。

四、实战演练:生产环境搭建指南🔨

4.1 安装freeipmi并添加权限

4.1.1 安装ipmitool 并加载相应模块

yum -y install ipmitool freeipmi

modprobe ipmi_msghandler
modprobe ipmi_devintf
modprobe ipmi_poweroff
modprobe ipmi_si
modprobe ipmi_watchdog

4.1.2 给deploy用户添加freeipmi的执行权限

cat >> /etc/sudoers <<EOF
deploy ALL=(ALL) NOPASSWD:/usr/sbin/ipmimonitoring,/usr/sbin/ipmi-sensors,/usr/sbin/ipmi-dcmi,/usr/sbin/ipmi-raw,/usr/sbin/bmc-info,/usr/sbin/ipmi-chassis,/usr/sbin/ipmi-sel
EOF

4.2 部署管理ipmi_exporter

4.2.1 创建普通用户管理ipmi_exporter👤

useradd deploy

4.2.2 解压ipmi_exporter.tar.gz📦

注意:
  我的是x86,所以使用ipmi_exporter-1.8.0.linux-amd64.tar.gz,您可以使用uname -a命令查看系统架构

tar xvf ipmi_exporter-1.8.0.linux-amd64.tar.gz -C /home/deploy/

4.2.3 将ipmi_exporter集成到Prometheus配置中✂️

  将ipmi_exporter集成到Prometheus配置中,确保数据能够正常采集。编辑Prometheus的配置文件(通常是prometheus.yml),在scrape_configs部分添加ipmi_exporter的配置。告诉Prometheus将采集localhost:9290的数据。

  - job_name: 'ipmi_exporter'
    static_configs:
      - targets:
      - targets: ["localhost:9290"]
        labels:
          exporter: ipmi_exporter

4.2.4 更改ipmi_exporter软件包名称✂️

mv ipmi_exporter-1.8.0.linux-amd64 /home/deploy/ipmi_exporter

4.2.5 创建ipmi_remote.yml文件

vi /home/deploy/ipmi_exporter/ipmi_remote.yml

modules:
  10.131.16.137:		# ipmi地址
    user: "ipmi_user"	# ipmi用户名
    pass: "ipmi_passwod"   # ipmi密码
    privilege: "user"
    driver: "LAN_2_0"
    collectors:
    - bmc
    - ipmi
    - dcmi
    - chassis
    - sel
    custom_args:
      bmc:
      - "bmc-info"
      ipmi:
      - "ipmimonitoring"
      dcmi:
      - "ipmi-dcmi"
      chassis:
      - "ipmi-chassis"
      sel:
      - "ipmi-sel"

4.2.6 编辑ipmi_exporter.service文件📝

cat > /etc/systemd/system/ipmi_exporter.service <<EOF
[Unit]
Description=Ipmi Exporter
After=network.target

[Service]
Type=simple
User=deploy
Group=deploy
ExecStart=/home/deploy/ipmi_exporter/ipmi_exporter\
--graphite.mapping-config=/home/deploy/ipmi_exporter/ipmi_exporter \
--config.file=ipmi_remote.yml \
--freeipmi.path=/usr/local/sbin/ \
--web.listen-address=:9290
ExecReload=/bin/kill -HUP
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

4.2.7 启动ipmi_exporter.service🔌

sudo systemctl daemon-reload

sudo systemctl enable --now ipmi_exporter.service

4.2.8 查看服务是否正常启动🔍

# 查看service服务是否启动
sudo systemctl status ipmi_exporter.service

# 查看端口是否存在
sudo ss -ntulp | grep 9290

相关资料下载地址📚

  • 官方文档:https://prometheus.io/docs/introduction/overview/
  • 下载地址:https://github.com/prometheus/prometheus/releases/tag/v2.52.0
  • 文档地址:https://prometheus.io/docs/prometheus/latest/installation/
  • 离线包下载链接:https://pan.baidu.com/s/1ANF_AlFnM5_FMIbKBuzBmg 提取码:yqpt

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

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

相关文章

flink Jobmanager metaspace oom 分析

文章目录 现象作业背景分析现象分析类卸载条件MAT 分析 解决办法flink 官方提示 现象 通过flink 页面提交程序&#xff0c;多次提交后&#xff0c;jobmanager 报metaspace oom 作业背景 用户代码是flink 代码Spring nacos 分析 现象分析 从现象来看肯定是因为有的类没有被…

[学习笔记](b站视频)PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】(ing)

视频来源&#xff1a;PyTorch深度学习快速入门教程&#xff08;绝对通俗易懂&#xff01;&#xff09;【小土堆】 前面P1-P5属于环境安装&#xff0c;略过。 5-6.Pytorch加载数据初认识 数据文件: hymenoptera_data # read_data.py文件from torch.utils.data import Dataset …

RabbitMQ-直连交换机(direct)使用方法

RabbitMQ-默认读、写方式介绍 RabbitMQ-发布/订阅模式 目录 1、概述 2、直连交换机 3、多重绑定 4、具体代码实现 4.1 生产者部分 4.2 消费者部分 5、运行代码 6、总结 1、概述 直连交换机&#xff0c;可以实现类似路由的功能&#xff0c;消息从交换机发送到哪个队列…

使用低代码系统的意义与价值主要体现在哪里?

使用低代码系统的意义与价值主要体现在以下几个方面&#xff0c;这些观点基于驰骋低代码设计者的专业洞察和行业经验&#xff1a; 快速原型创建&#xff1a; 低代码平台通过提供图形化界面和预构建的模块&#xff0c;极大地加速了系统原型的创建过程。这意味着企业能够更快地验…

Aras Innovator-Team(群组)的使用方法

当Aras Innovator在处理权限时&#xff0c;在不使用Team的情况下&#xff0c;系统的权限配置可以满足大部分业务场景&#xff0c;如&#xff1a;常见的按照组织架构&#xff0c;成员和角色分配权限&#xff0c;按照生命周期分配权限等。 如果遇到比较复杂的权限需求&#xff0c…

Docker安装启动Mysql

1、安装Docker&#xff08;省略&#xff09; 网上教程很多 2、下载Mysql5.7版本 docker pull mysql:5.7 3、查看镜像是够下载成功 docker images 4、启动镜像&#xff0c;生成容器 docker run --name mysql5.7 -p 13306:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7 5…

通过非欧几何体改变 AI 嵌入

目录 一、说明 二、LLM嵌入的形势 三、了解一些背景信息 3.1 什么是嵌入&#xff1f; 3.2 为什么嵌入在 NLP 中很重要&#xff1f; 3.3 复数Complex 几何的角色 3.4 C主动学习 3.5 角度嵌入 &#xff08;AE&#xff09;&#xff1a;解锁稳健排序 3.6 RotatE&#xff1a;将关系…

探索 Python 的 vars() 函数

大家好&#xff0c;在软件开发的过程中&#xff0c;调试是一个不可或缺的环节。无论你是在解决 bug&#xff0c;优化代码&#xff0c;还是探索代码的执行流程&#xff0c;都需要一些有效的工具来帮助你更好地理解和调试代码。在 Python 编程中&#xff0c;vars() 函数是一个非常…

无人机路径规划:基于鸽群优化算法PIO的无人机三维路径规划MATLAB代码

一、无人机模型介绍 无人机三维航迹规划_无人机航迹规划-CSDN博客 二、部分代码 close all clear clc warning (off) global model global gca1 gca2 gca3 gca4 model CreateModel(); % Create search map and parameters load(BestPosition5.mat); load(ConvergenceCurve5…

【Linux】Linux的权限_1

文章目录 三、权限1. shell外壳2. Linux的用户3. Linux权限管理文件访问者的分类文件类型和访问权限 未完待续 三、权限 1. shell外壳 为什么要使用shell外壳 由于用户不擅长直接与操作系统直接接触和操作系统的易用程度、安全性考虑&#xff0c;用户不能直接访问操作系统。 什…

GIS、GPS、RS综合应用

刘老师&#xff08;副教授&#xff09;&#xff0c;北京重点高校资深专家&#xff0c;拥有丰富的科研及工程技术经验&#xff0c;长期从事3S在环境中的应用等领域的研究和教学工作&#xff0c;具有资深的技术底蕴和专业背景。 第一章、3S 技术及应用简介 1.1、3S 技术及集成简…

C++20 范围(Range):简化集合操作

C20 范围&#xff1a;简化集合操作 一、范围&#xff08;Range&#xff09;的目的二、在模板函数中使用范围概念三、投影四、视图五、结论 一、范围&#xff08;Range&#xff09;的目的 在 C20 中&#xff0c;范围概念要求一个对象同时拥有迭代器和结束哨兵。这在标准集合的上…

STM32HAL-最简单的长、短、多击按键框架

目录 概述 一、开发环境 二、STM32CubeMx配置 三、编码 四、运行结果 五、总结 概述 本文章使用最简单的写法实现长、短、多击按键框架&#xff0c;非常适合移植各类型单片机&#xff0c;特别是资源少的芯片上。接下来将在stm32单片机上实现&#xff0c;只需占用1个定时…

定个小目标之每天刷LeetCode热题(7)

今天这道题是道简单题&#xff0c;使用双指针进行迭代即可&#xff0c;画了下草图如下 代码如下 class Solution {public ListNode reverseList(ListNode head) {if (head null || head.next null) {return head;}ListNode p head, q head.next, temp null;while (q ! nu…

电脑缺少dll文件怎么解决,分享几种靠谱的解决方法

在现代科技高度发达的时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;在使用电脑的过程中&#xff0c;我们可能会遇到一些问题&#xff0c;其中之一就是电脑丢失dll文件。那么&#xff0c;当我们面临这样的问题时&#xff0c;应该如何解决呢&am…

全新市场阶段,Partisia BlockChain 将向 RWA、DeFi 等领域布局

Partisia Blockchain 是一个全新范式的 Layer1&#xff0c;该链通过 MPC 方案来构建链上隐私方案&#xff0c;同时该链通过系列独特且创新的设计&#xff0c;旨在进一步解决目前 Web3 中所面临的不可能三角问题&#xff0c;包括安全性、互操作性和可扩展性&#xff0c;为更多的…

Mac安装pytorch(二)

书接上回&#xff0c;配置好了pytorch环境后&#xff0c;看看是否真的能用 终端输入一下代码&#xff1a; import torch xtorch.rand(3,4) print(x) 出现这些后表明安装完成&#xff0c;可使用 接下来在pycharm中使用 打开设置

Django表单革命:打造安全、高效、用户友好的Web应用

Django表单处理&#xff0c;听起来是不是有点枯燥&#xff1f;别急&#xff0c;阿佑将带你领略Django表单的艺术之美。我们将以轻松幽默的语言&#xff0c;一步步引导你从表单的创建到管理&#xff0c;再到验证和自定义&#xff0c;让你在不知不觉中掌握Django表单的精髓。文章…

【工具】探索 DOU:每用户数据使用量

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 &#x1f3b5; 邓紫棋《光年之外》 什么是 DOU…

cocos creator 3.x 手搓背包拖拽装备

项目背景&#xff1a; 游戏背包 需要手动 拖拽游戏装备到 装备卡槽中&#xff0c;看了下网上资料很少。手搓了一个下午搞定&#xff0c;现在来记录下实现步骤&#xff1b; 功能拆分&#xff1a; 一个完整需求&#xff0c;我们一般会把它拆分成 几个小步骤分别造零件。等都造好了…