编程 Zabbix 7.4 深度解析:嵌套低级别自动发现如何重新定义企业监控的自动化边界

2026-05-11 16:53:52 +0800 CST views 11

Zabbix 7.4 深度解析:嵌套低级别自动发现如何重新定义企业监控的自动化边界

2026年5月,Zabbix正式发布7.4版本。这不是一次普通的版本迭代——它引入了"嵌套低级别自动发现"(Nested Low-Level Discovery)这一颠覆性特性,彻底改变了企业监控系统的自动化边界。本文将深入剖析Zabbix 7.4的核心创新、技术架构、实战配置,以及它对运维自动化格局的深远影响。

一、Zabbix 7.4 的三大核心创新

Zabbix 7.4 带来了三个重量级特性,每一个都直击企业运维痛点:

1.1 嵌套低级别自动发现(Nested LLD)

这是本次更新的最大亮点。在传统Zabbix中,低级别自动发现(LLD)只能发现单层级的资源——比如发现一台服务器上的所有磁盘、所有网卡、所有端口。但在云原生时代,资源往往是多层级嵌套的:

  • 云服务 → 集群节点 → 应用容器 → 基础资源
  • Kubernetes集群 → Namespace → Pod → 容器 → 资源指标
  • 物联网网关 → 子设备 → 传感器 → 数据流

Zabbix 7.4 的嵌套LLD允许你在发现一个资源后,自动触发对该资源子资源的发现——无限层级嵌套。这意味着你可以用一个发现规则,自动发现并监控整个技术栈的每一个层级。

1.2 发现原型(Discovery Prototype)

配合嵌套LLD,Zabbix 7.4 引入了全新的实体类型:发现原型。它允许你在发现规则中定义"如何发现下一级资源",形成发现链:

Level 1: 发现云服务实例
  └─ Level 2: 发现实例中的Kubernetes集群
       └─ Level 3: 发现集群中的节点
            └─ Level 4: 发现节点上的容器
                 └─ Level 5: 发现容器的资源指标

每一层都可以独立配置监控项、触发器、图形模板。

1.3 主机创建向导(Host Wizard)

对于新手用户,Zabbix一直存在"上手门槛高"的问题。7.4版本引入了图形化的主机创建向导:

  1. 选择模板(如 Linux Server、MySQL、Nginx)
  2. 填写主机名和IP地址
  3. 系统自动生成Agent安装命令
  4. 一键配置PSK加密
  5. 完成

整个流程从"需要阅读半小时文档"缩短到"5分钟搞定"。

二、嵌套低级别自动发现:技术原理与架构分析

2.1 传统LLD的局限性

在Zabbix 7.4之前,LLD的工作流程是:

  1. 定义一个发现规则(如 vfs.fs.discovery
  2. 规则返回JSON格式的资源列表
  3. 基于监控项原型自动创建监控项

这个设计有一个硬伤:无法处理层级关系

举个例子,你想监控一个Kubernetes集群:

  1. 发现所有Namespace → 可以做到
  2. 发现每个Namespace下的所有Pod → 需要为每个Namespace单独创建发现规则
  3. 发现每个Pod的容器 → 需要为每个Pod单独创建发现规则

如果有10个Namespace、每个Namespace有100个Pod,你需要创建10 + 1000 = 1010个发现规则——这是不可维护的。

2.2 嵌套LLD的工作原理

Zabbix 7.4 的嵌套LLD通过"发现原型"解决了这个问题:

┌─────────────────────────────────────────────────────────────────┐
│                    发现规则(顶层)                               │
│  发现Kubernetes集群中的所有Namespace                             │
│  返回: [{#NAMESPACE}: "default", {#NAMESPACE}: "kube-system"...]│
└─────────────────────────┬───────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────────┐
│                 发现原型(第一层嵌套)                            │
│  对于每个Namespace,发现其中的所有Pod                            │
│  参数: {#NAMESPACE}                                             │
│  返回: [{#POD}: "nginx-xxx", {#POD}: "redis-yyy"...]            │
└─────────────────────────┬───────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────────┐
│                 发现原型(第二层嵌套)                            │
│  对于每个Pod,发现其中的所有容器                                  │
│  参数: {#NAMESPACE}, {#POD}                                     │
│  返回: [{#CONTAINER}: "nginx", {#CONTAINER}: "sidecar"...]      │
└─────────────────────────┬───────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────────┐
│                 监控项原型(最底层)                              │
│  对于每个容器,创建CPU、内存、网络监控项                          │
│  参数: {#NAMESPACE}, {#POD}, {#CONTAINER}                       │
└─────────────────────────────────────────────────────────────────┘

核心机制

  1. 父级发现触发子级发现:当LLD发现一个资源时,会自动触发该资源关联的所有发现原型
  2. 宏参数传递:父级发现的宏(如 {#NAMESPACE})会作为参数传递给子级发现
  3. 无限制嵌套:理论上支持无限层级(实际受性能限制)

2.3 配置实战:三层嵌套监控Kubernetes

以下是一个完整的配置示例,监控Kubernetes集群的Namespace → Pod → 容器三层结构:

Step 1: 创建顶层发现规则

# 在Zabbix Agent配置文件中添加自定义发现脚本
# /etc/zabbix/zabbix_agentd.d/k8s.conf

UserParameter=k8s.namespace.discovery,/usr/local/bin/k8s_discovery.sh namespace
#!/bin/bash
# /usr/local/bin/k8s_discovery.sh

case $1 in
  namespace)
    kubectl get namespaces -o json | jq -c '.items[] | {"{#NAMESPACE}": .metadata.name}'
    ;;
  pod)
    NAMESPACE=$2
    kubectl get pods -n $NAMESPACE -o json | jq -c '.items[] | {"{#POD}": .metadata.name}'
    ;;
  container)
    NAMESPACE=$2
    POD=$3
    kubectl get pod $POD -n $NAMESPACE -o json | jq -c '.spec.containers[] | {"{#CONTAINER}": .name}'
    ;;
esac

Step 2: 在Zabbix Web界面创建发现规则

  1. 进入 Configuration → Templates → Discovery rules
  2. 创建新发现规则:
    • Name: Kubernetes Namespace Discovery
    • Type: Zabbix agent
    • Key: k8s.namespace.discovery

Step 3: 创建发现原型(第一层:Pod)

  1. 在发现规则下创建 Discovery prototype
  2. 配置:
    • Name: Pod Discovery in {#NAMESPACE}
    • Type: Zabbix agent
    • Key: k8s.pod.discovery[{#NAMESPACE}]

Step 4: 创建发现原型(第二层:Container)

  1. 在Pod发现原型下再创建 Discovery prototype
  2. 配置:
    • Name: Container Discovery in {#NAMESPACE}/{#POD}
    • Type: Zabbix agent
    • Key: k8s.container.discovery[{#NAMESPACE},{#POD}]

Step 5: 创建监控项原型

# 容器CPU使用率
Key: k8s.container.cpu[{#NAMESPACE},{#POD},{#CONTAINER}]
Name: CPU Usage of {#CONTAINER} in {#NAMESPACE}/{#POD}

# 容器内存使用量
Key: k8s.container.memory[{#NAMESPACE},{#POD},{#CONTAINER}]
Name: Memory Usage of {#CONTAINER} in {#NAMESPACE}/{#POD}

2.4 嵌套LLD的性能优化

无限嵌套虽然强大,但也带来性能挑战。Zabbix 7.4 内置了多项优化:

并行发现:同一层级的发现任务会并行执行,而非串行等待

缓存机制:发现结果会被缓存,避免重复查询

延迟配置:可以为每层发现配置独立的执行间隔

# 推荐的发现间隔配置
Level 1 (Namespace): 1h     # Namespace变化频率低
Level 2 (Pod): 5m           # Pod变化频率中等
Level 3 (Container): 10m    # 容器变化频率较高

三、主机向导:从"命令行专家"到"图形化运维"

3.1 传统主机添加的痛点

在Zabbix 7.4之前,添加一台新主机需要:

  1. 在Web界面创建主机,配置名称、IP、端口
  2. 选择模板,链接到主机
  3. SSH到目标服务器,安装Zabbix Agent
  4. 编辑 /etc/zabbix/zabbix_agentd.conf,配置Server地址
  5. 配置防火墙规则
  6. 启动Agent服务
  7. 回到Web界面检查主机是否上线

这个过程涉及多个终端切换,新手容易出错。

3.2 主机向导的工作流程

Zabbix 7.4 的主机向导将整个流程图形化:

┌─────────────────────────────────────────────────────────────┐
│ Step 1: Welcome                                             │
│                                                             │
│  [Linux Server]  [Windows Server]  [Network Device]         │
│  [MySQL Database] [Redis Cache]    [Kubernetes Cluster]     │
│                                                             │
│  选择你要监控的目标类型                                      │
└─────────────────────────────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│ Step 2: Configure Host                                      │
│                                                             │
│  Host Name: [db-server-01        ]                          │
│  IP Address: [192.168.1.100       ]                         │
│  Agent Port: [10050               ]                         │
│                                                             │
│  Host Groups: [☑ Production Databases]                      │
│                                                             │
│  Templates:   [☑ MySQL by Zabbix Agent]                     │
│               [☑ Linux by Zabbix Agent]                     │
└─────────────────────────────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│ Step 3: Install Agent                                       │
│                                                             │
│  系统自动生成安装命令(根据选择的操作系统):                  │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ # Ubuntu/Debian                                     │   │
│  │ wget https://repo.zabbix.com/zabbix/7.4/ubuntu/... │   │
│  │ dpkg -i zabbix-agent_7.4.0_amd64.deb               │   │
│  │ cat > /etc/zabbix/zabbix_agentd.conf << EOF        │   │
│  │ Server=192.168.1.10                                │   │
│  │ Hostname=db-server-01                              │   │
│  │ TLSConnect=psk                                     │   │
│  │ TLSAccept=psk                                      │   │
│  │ TLSPSKFile=/etc/zabbix/zabbix_agentd.psk          │   │
│  │ EOF                                                │   │
│  │ echo "your-psk-key-here" > /etc/zabbix/zabbix_agentd.psk│ │
│  │ systemctl restart zabbix-agent                     │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  [复制命令]  [显示详细步骤]                                  │
└─────────────────────────────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│ Step 4: Verify & Finish                                     │
│                                                             │
│  Agent Status: ✅ Connected                                 │
│  Data Receiving: ✅ Active                                  │
│  Latest Data: CPU 12%, Memory 45%, Disk 23GB free           │
│                                                             │
│  [完成]  [添加更多主机]                                      │
└─────────────────────────────────────────────────────────────┘

3.3 自动PSK加密配置

安全是企业监控的刚需。Zabbix 7.4 的主机向导会自动生成PSK密钥并配置加密通信:

  1. 向导生成随机PSK密钥
  2. 自动写入Agent配置文件
  3. Server端自动配置对应的PSK
  4. 无需手动管理证书

这意味着即使是新手,也能一键配置生产级别的加密监控。

四、嵌套主机原型:自动发现并创建主机

4.1 从监控项到主机的跨越

传统LLD只能自动创建监控项、触发器、图形。但在分布式环境中,你可能需要自动创建主机——比如发现了一个新的Kubernetes节点,自动为它创建一个独立的主机实体。

Zabbix 7.4 引入了嵌套主机原型

发现规则: 发现Kubernetes集群中的所有节点
  └─ 主机原型: 为每个节点创建独立的主机实体
       └─ 监控项原型: 监控该节点的CPU、内存、磁盘
       └─ 触发器原型: 节点宕机告警

4.2 实战案例:自动发现云服务器并创建主机

假设你在AWS上有多个EC2实例,需要自动发现并监控:

Step 1: 创建发现规则

# 使用AWS CLI获取实例列表
UserParameter=aws.ec2.discovery,/usr/local/bin/aws_ec2_discovery.sh
#!/bin/bash
# /usr/local/bin/aws_ec2_discovery.sh

aws ec2 describe-instances \
  --query 'Reservations[*].Instances[*].[InstanceId,PrivateIpAddress,Tags[?Key==`Name`].Value|[0]]' \
  --output text | awk '{
    printf "{\"{#INSTANCE_ID}\":\"%s\", \"{#PRIVATE_IP}\":\"%s\", \"{#INSTANCE_NAME}\":\"%s\"},\n", $1, $2, $3
  }' | sed '$ s/,$//' | awk 'BEGIN{print "{\"data\":["} {print} END{print "]}"}'

Step 2: 创建主机原型

在Zabbix Web界面:

  1. 进入发现规则的 Host prototypes 选项卡
  2. 创建新原型:
    • Host name: {#INSTANCE_NAME}
    • Visible name: AWS EC2 - {#INSTANCE_NAME} ({#INSTANCE_ID})
    • Groups: AWS EC2 Instances
    • Interfaces: Agent interface, IP: {#PRIVATE_IP}, Port: 10050
    • Templates: Linux by Zabbix Agent

Step 3: 配置自动发现动作

当发现新实例时,自动:

  • 创建主机
  • 链接模板
  • 启用监控
  • 配置告警

五、监控指标卡片:Dashboard新体验

5.1 传统Dashboard的局限

Zabbix的Dashboard功能强大,但有一个痛点:Item Value组件只显示数值,不显示上下文

比如你想在Dashboard上显示某个关键服务的状态:

传统Item Value组件:
┌─────────────┐
│ CPU: 45%    │
└─────────────┘

你看不到这个指标的历史趋势、是否在告警阈值边缘、相关的触发器状态。

5.2 Item Card组件

Zabbix 7.4 引入了 Item Card 组件:

┌─────────────────────────────────────────────────┐
│ 🖥️ Web Server CPU                                │
│                                                  │
│     Current: 45%                                │
│     ┌──────────────────────────┐                │
│     │ ▂▃▅▇▅▃▂▁  (24h trend)  │                │
│     └──────────────────────────┘                │
│                                                  │
│     Min: 12%    Max: 89%    Avg: 41%           │
│     Last Alert: 2026-05-11 14:23                │
│     Status: ✅ Normal                           │
│                                                  │
│     [View Graph]  [Configure Alert]             │
└─────────────────────────────────────────────────┘

一个卡片显示:

  • 当前值
  • 24小时趋势图
  • 统计数据(最小/最大/平均)
  • 最近告警记录
  • 当前状态
  • 快捷操作按钮

5.3 配置Item Card

# Dashboard配置示例
Widget: Item Card
Item: system.cpu.util
Display options:
  Show sparkline: Yes
  Show min/max/avg: Yes
  Show last alert: Yes
  Show status indicator: Yes
  Time period: Last 24 hours
  Refresh interval: 30 seconds

六、性能与安全增强

6.1 数据收集效率优化

Zabbix 7.4 在性能层面做了多项优化:

批量数据收集:Agent可以批量发送多个监控项的数据,减少网络开销

压缩传输:Server与Agent之间的通信支持压缩,带宽占用降低30%

异步处理:发现规则的结果处理改为异步,避免阻塞主数据收集流程

索引优化:数据库索引结构优化,大规模环境下的查询性能提升40%

6.2 安全增强

TLS 1.3支持:全面支持TLS 1.3加密协议

证书轮换:支持自动证书轮换,无需重启服务

审计日志增强:所有配置变更都有详细的审计记录

RBAC细化:权限控制粒度更细,可以限制用户只能查看特定主机组的数据

七、实战部署指南

7.1 环境准备

# 操作系统: CentOS 8 / Ubuntu 22.04 / Debian 12
# 数据库: PostgreSQL 15+ (推荐) 或 MySQL 8.0+
# PHP: 8.1+
# Web服务器: Nginx 1.24+ 或 Apache 2.4+

7.2 安装Zabbix 7.4 Server

# Ubuntu 22.04 示例

# 1. 添加Zabbix仓库
wget https://repo.zabbix.com/zabbix/7.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.4-1+ubuntu22.04_all.deb
apt update

# 2. 安装Zabbix Server + PostgreSQL
apt install -y zabbix-server-pgsql zabbix-frontend-php php8.1-pgsql \
    zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

# 3. 创建数据库
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix

# 4. 导入初始架构
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | \
    sudo -u zabbix psql zabbix

# 5. 配置Zabbix Server
vim /etc/zabbix/zabbix_server.conf
# DBHost=localhost
# DBName=zabbix
# DBUser=zabbix
# DBPassword=your_password

# 6. 启动服务
systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm

7.3 配置嵌套LLD监控Kubernetes

# /etc/zabbix/zabbix_agentd.d/k8s.conf

# K8s集群发现
UserParameter=k8s.cluster.discovery,kubectl cluster-info | grep -oP 'Kubernetes master is running at \K.*' | jq -R '{"{#CLUSTER_URL}": .}'

# Namespace发现
UserParameter=k8s.ns.discovery[*],kubectl get ns -o json | jq -c '.items[] | {"{#NS}": .metadata.name}'

# Pod发现(带Namespace参数)
UserParameter=k8s.pod.discovery[*],kubectl get pods -n $1 -o json | jq -c '.items[] | {"{#POD}": .metadata.name, "{#STATUS}": .status.phase}'

# 容器发现(带Namespace和Pod参数)
UserParameter=k8s.container.discovery[*],kubectl get pod $2 -n $1 -o json | jq -c '.spec.containers[] | {"{#CONTAINER}": .name}'

# 容器资源使用(需要metrics-server)
UserParameter=k8s.container.cpu[*],kubectl top pod $2 -n $1 --containers | grep $3 | awk '{print $2}' | sed 's/m//'
UserParameter=k8s.container.memory[*],kubectl top pod $2 -n $1 --containers | grep $3 | awk '{print $3}' | sed 's/Mi//'

7.4 创建嵌套发现规则

在Zabbix Web界面:

  1. Configuration → Templates → Create template

    • Template name: Kubernetes Cluster
    • Groups: Templates/Cloud
  2. Discovery rules → Create discovery rule

    • Name: Namespace Discovery
    • Type: Zabbix agent
    • Key: k8s.ns.discovery
    • Update interval: 1h
  3. Discovery prototypes → Create discovery prototype (第一层:Pod)

    • Name: Pod Discovery in {#NS}
    • Key: k8s.pod.discovery[{#NS}]
    • Update interval: 5m
  4. 在Pod发现原型下创建发现原型 (第二层:Container)

    • Name: Container Discovery in {#NS}/{#POD}
    • Key: k8s.container.discovery[{#NS},{#POD}]
  5. 在Container发现原型下创建监控项原型

    • Name: CPU of {#CONTAINER} in {#NS}/{#POD}
    • Key: k8s.container.cpu[{#NS},{#POD},{#CONTAINER}]
    • Units: mcores

八、与竞品对比:Zabbix 7.4 的独特优势

8.1 vs Prometheus

特性Zabbix 7.4Prometheus
自动发现✅ 多层级嵌套发现⚠️ 需要配置服务发现
学习曲线✅ 图形化配置,入门友好⚠️ 需要学习PromQL
长期存储✅ 内置数据库存储❌ 需要外置Thanos/Cortex
告警管理✅ 内置丰富的告警功能⚠️ 需要Alertmanager
Agent模式✅ 支持主动/被动模式❌ 主要靠Pull模式
仪表盘✅ 丰富的可视化组件⚠️ 需要Grafana

Zabbix优势:开箱即用、自动发现强大、适合传统IT基础设施监控

Prometheus优势:云原生生态完善、指标查询灵活、适合Kubernetes监控

8.2 vs Datadog

特性Zabbix 7.4Datadog
部署模式✅ 完全开源,可私有部署❌ SaaS订阅制
成本✅ 免费⚠️ 按主机收费,成本高
功能完整性✅ 监控+告警+可视化✅ APM+日志+监控一体化
SaaS体验⚠️ 需要自己维护✅ 全托管服务
集成生态⚠️ 社区维护模板✅ 600+官方集成

Zabbix优势:成本可控、数据私有、适合对数据敏感的企业

Datadog优势:功能全面、开箱即用、适合快速迭代的团队

九、最佳实践与避坑指南

9.1 嵌套LLD的最佳实践

控制发现层级:建议嵌套层级不超过4层,过深的嵌套会影响性能和可维护性

合理设置发现间隔

  • 顶层发现:1小时(资源列表变化慢)
  • 中间层发现:5-10分钟
  • 底层发现:10-30分钟

使用发现过滤器:避免发现不需要的资源

// 只发现running状态的Pod
{
  "filter": {
    "{#STATUS}": ["Running"]
  }
}

监控发现任务本身:创建监控项跟踪发现规则的执行状态和耗时

9.2 性能调优

数据库优化

-- PostgreSQL配置建议
shared_buffers = 4GB
effective_cache_size = 12GB
maintenance_work_mem = 1GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB

Zabbix Server配置

# /etc/zabbix/zabbix_server.conf
StartPollers=50
StartPollersUnreachable=10
StartTrappers=20
StartDiscoverers=10
CacheSize=256M
HistoryCacheSize=128M
TrendCacheSize=64M
ValueCacheSize=256M

9.3 常见问题排查

问题1:发现规则不执行

  • 检查Agent日志:/var/log/zabbix/zabbix_agentd.log
  • 验证UserParameter命令是否能手动执行
  • 检查Agent是否有执行权限

问题2:嵌套发现卡住

  • 检查发现间隔是否过短
  • 查看Server日志是否有超时错误
  • 考虑增加 Timeout 配置值

问题3:主机原型创建失败

  • 检查接口配置是否正确
  • 验证模板是否可用
  • 检查权限配置

十、总结与展望

Zabbix 7.4 的嵌套低级别自动发现,是企业监控领域的一次重大创新。它解决了云原生环境下多层级资源自动发现的痛点,让监控系统的自动化能力达到了新的高度。

核心价值

  1. 自动化边界扩展:从监控项自动创建扩展到主机自动创建
  2. 云原生友好:原生支持Kubernetes等多层级架构
  3. 学习曲线降低:主机向导让新手也能快速上手
  4. 企业级安全:自动PSK加密、RBAC细化、审计日志增强

适用场景

  • 大规模Kubernetes集群监控
  • 云环境自动发现(AWS/GCP/Azure)
  • 物联网设备分层监控
  • 传统IT基础设施监控

未来展望

随着云原生架构的普及,监控系统的自动化能力将成为核心竞争力。Zabbix 7.4 已经迈出了关键一步,未来可能会看到:

  • 更深度的Kubernetes集成(Operator模式)
  • AI驱动的异常检测
  • 更智能的告警收敛
  • 边缘计算场景优化

对于运维团队来说,Zabbix 7.4 值得升级。它不仅能减少重复劳动,还能让监控系统的自动化水平上一个台阶。在"基础设施即代码"的时代,Zabbix 7.4 的嵌套LLD正是通往"监控即代码"的关键一步。

复制全文 生成海报 Zabbix 监控 运维 LLD 自动化 DevOps

推荐文章

Vue 3 路由守卫详解与实战
2024-11-17 04:39:17 +0800 CST
JavaScript设计模式:发布订阅模式
2024-11-18 01:52:39 +0800 CST
如何在Vue3中定义一个组件?
2024-11-17 04:15:09 +0800 CST
JavaScript设计模式:组合模式
2024-11-18 11:14:46 +0800 CST
在 Rust 生产项目中存储数据
2024-11-19 02:35:11 +0800 CST
git使用笔记
2024-11-18 18:17:44 +0800 CST
PHP 唯一卡号生成
2024-11-18 21:24:12 +0800 CST
Go 接口:从入门到精通
2024-11-18 07:10:00 +0800 CST
如何开发易支付插件功能
2024-11-19 08:36:25 +0800 CST
跟着 IP 地址,我能找到你家不?
2024-11-18 12:12:54 +0800 CST
#免密码登录服务器
2024-11-19 04:29:52 +0800 CST
PyMySQL - Python中非常有用的库
2024-11-18 14:43:28 +0800 CST
Vue 3 是如何实现更好的性能的?
2024-11-19 09:06:25 +0800 CST
程序员茄子在线接单