Day03-zabbix自动化监控与监控项目

12. 换个角度看监控-zabbix-agent

12.1 Zabbix客户端概述

zabbix客户端应用场景
Zabbix-agent2(最常用)适用于几乎所有情况,支持自定义监控,linux,windows, android/ios
SNMP客户端用于监控网络设备:
Simple Network Management Protocal 简单网络管理协议 监控网络设备
JMXJava-gateway 监控java app(tomcat),
未来推荐自定义监控(zabbix_agents2 + jmap/jstats)
IPMI监控硬件(物理服务器,联想(IBM X86架构 ThinkServer) ,华为,浪潮,Dell,IBM,HP)
直接使用自定义监控(ipmitool + megacli )

12.2 Zbx-agent监控windows/mac

  • 安装客户端,配置

  • 服务端添加主机,关联模板

  • 调试

1)安装windows客户端

  • 安装客户端的时候配置服务端ip

在这里插入图片描述

  • 温馨提示⚠ 主机名中不要包含中文

  • 默认安装目录即可

在这里插入图片描述

  • 安装完成检查-进程

在这里插入图片描述

  • 检查开机自启动

在这里插入图片描述

  • 安装目录及配置文件C:\Program Files\Zabbix Agent 2
91839@DESKTOP-9RU7VPJ MINGW64 /c/Program Files/Zabbix Agent 2
$ grep -i '^[a-z]'   zabbix_agent2.conf
LogFile=C:\Program Files\Zabbix Agent 2\zabbix_agent2.log
Server=10.0.0.63
ServerActive=10.0.0.63
Hostname=DESKTOP-GAMESOFT
ControlSocket=\\.\pipe\agent.sock

2)监控windows

在这里插入图片描述

3)小结

可以监控windows server版本

12.3 网络监控SNMP

  • snmp: 简单网络管理协议

  • 流程:

    • 开启网络设备的SNMP功能,设置暗号(社团名字)(v2c) (v3 用户名+密码)
    • WEB添加主机,配置接口,关联模板。
  • SNMP有多个版本

    • v2c版本使用团体名作为认证。
    • v3版本用户名和密码认证。
  • 命令行连接测试网络设备

yum install -y net-snmp-utils
snmpwalk -v 2c  -c oldboykey  192.168.50.1 SysDesc

1)开启网络设备snmp功能

在这里插入图片描述

在这里插入图片描述

  • zabbix-server检查 网络设备状态
yum install -y net-snmp-utils
COMMUNITY
[root@m03 ~]# snmpwalk -c oldboykx -v 2c 192.168.13.1 SysDesc
SNMPv2-MIBՎʦsysDescr.0 = STRING: H3C Product Version 
ERHMG2-MNW100-R1117
H3C ERHMG2
Copyright(c) 2014-2018 New H3C Technologies Co., 
Ltd. All rights reserved.
[root@m03 ~]# snmpwalk   -c oldboykx -v 2c 192.168.13.1 sysdesc
SNMPv2-MIBՎʦsysDescr.0 = STRING: H3C Product Version 
ERHMG2-MNW100-R1117
H3C ERHMG2
Copyright(c) 2014-2018 New H3C Technologies Co., 
Ltd. All rights reserved.

snmpwalk 命令 使用get方式访问网络设备
-c 团体名称   #v2c版本使用 团体名称
-v 指定 snmp版本 #v2c v3  
ip地址
指令(获取网络设备的信息)   名称方式/oid

#oid Object ID 事务id 给世间万物设置独一无二的id号
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 sysdesc
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 sysUptime
DISMAN-EVENT-MIBՎʦsysUpTimeInstance = Timeticks: 
(40733900) 4 days, 17:08:59.00

[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 IfNumber
IF-MIBՎʦifNumber.0 = INTEGER: 19
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 IfDescr
IF-MIBՎʦifDescr.16777217 = STRING: WAN1
IF-MIBՎʦifDescr.16777218 = STRING: WAN2
IF-MIBՎʦifDescr.50331650 = STRING: LAN1
IF-MIBՎʦifDescr.50331652 = STRING: LAN2
IF-MIBՎʦifDescr.50331654 = STRING: LAN3
IF-MIBՎʦifDescr.50331656 = STRING: LAN4
IF-MIBՎʦifDescr.385875968 = STRING: VLAN1
IF-MIBՎʦifDescr.385875969 = STRING: VLAN11
IF-MIBՎʦifDescr.385875970 = STRING: VLAN12
IF-MIBՎʦifDescr.385875971 = STRING: VLAN13
IF-MIBՎʦifDescr.385875972 = STRING: VLAN14
IF-MIBՎʦifDescr.385875973 = STRING: VLAN15
IF-MIBՎʦifDescr.385875974 = STRING: VLAN16
IF-MIBՎʦifDescr.385875975 = STRING: VLAN17
IF-MIBՎʦifDescr.385875976 = STRING: VLAN18
IF-MIBՎʦifDescr.385875977 = STRING: VLAN19
IF-MIBՎʦifDescr.385875978 = STRING: VLAN20
IF-MIBՎʦifDescr.385875979 = STRING: VLAN21
IF-MIBՎʦifDescr.385875980 = STRING: VLAN66
[root@m03 /tmp]# 
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 IfInOctet
IF-MIBՎʦifInOctets.16777217 = Counter32: 4096624309
IF-MIBՎʦifInOctets.16777218 = Counter32: 0
IF-MIBՎʦifInOctets.50331650 = Counter32: 3656051160
IF-MIBՎʦifInOctets.50331652 = Counter32: 3255019547
IF-MIBՎʦifInOctets.50331654 = Counter32: 4121087927
IF-MIBՎʦifInOctets.50331656 = Counter32: 0
IF-MIBՎʦifInOctets.385875968 = Counter32: 121007621
IF-MIBՎʦifInOctets.385875969 = Counter32: 1314395390
IF-MIBՎʦifInOctets.385875970 = Counter32: 2701446525
IF-MIBՎʦifInOctets.385875971 = Counter32: 3113202231
IF-MIBՎʦifInOctets.385875972 = Counter32: 3558929335
IF-MIBՎʦifInOctets.385875973 = Counter32: 0
IF-MIBՎʦifInOctets.385875974 = Counter32: 0
IF-MIBՎʦifInOctets.385875975 = Counter32: 0
IF-MIBՎʦifInOctets.385875976 = Counter32: 0
IF-MIBՎʦifInOctets.385875977 = Counter32: 4039834871
IF-MIBՎʦifInOctets.385875978 = Counter32: 3986752945
IF-MIBՎʦifInOctets.385875979 = Counter32: 1748855398
IF-MIBՎʦifInOctets.385875980 = Counter32: 0
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 IfInOctet
IF-MIBՎʦifInOctets.16777217 = Counter32: 1402719161
IF-MIBՎʦifInOctets.16777218 = Counter32: 0
IF-MIBՎʦifInOctets.50331650 = Counter32: 3689519028
IF-MIBՎʦifInOctets.50331652 = Counter32: 3286579931
IF-MIBՎʦifInOctets.50331654 = Counter32: 4215317407
IF-MIBՎʦifInOctets.50331656 = Counter32: 0
IF-MIBՎʦifInOctets.385875968 = Counter32: 212287463
IF-MIBՎʦifInOctets.385875969 = Counter32: 1314397506
IF-MIBՎʦifInOctets.385875970 = Counter32: 2707094611
IF-MIBՎʦifInOctets.385875971 = Counter32: 3137147383
IF-MIBՎʦifInOctets.385875972 = Counter32: 3560411099
IF-MIBՎʦifInOctets.385875973 = Counter32: 0
IF-MIBՎʦifInOctets.385875974 = Counter32: 0
IF-MIBՎʦifInOctets.385875975 = Counter32: 0
IF-MIBՎʦifInOctets.385875976 = Counter32: 0
IF-MIBՎʦifInOctets.385875977 = Counter32: 4060020833
IF-MIBՎʦifInOctets.385875978 = Counter32: 3987206613
IF-MIBՎʦifInOctets.385875979 = Counter32: 1751758219
IF-MIBՎʦifInOctets.385875980 = Counter32: 0

2)添加主机

在这里插入图片描述

在这里插入图片描述

3) 检查

在这里插入图片描述

  • 在服务端安装fping

在这里插入图片描述

[root@m02-zbx-server ~]# yum install -y fping

4) 小结

  • 网络设备开启snmp功能,web进行检查.
  • 用于监控网络设备。

12.4 监控java应用

1)方案选型与原理

方案监控方案说明
方案01开启java jmxremote远程监控功能zbx中关联对应的模板,安装与开启java工具zbx-java-gateway
方案02通过java命令,自定义监控获取想要指标通过在java应用服务器安装zbx agent和java命令(jmap,jstack),然后自定义监控
  • 方案01 原理图

在这里插入图片描述

  • 方案02 原理图(类似于自定义监控)

在这里插入图片描述

2)方案01实战

  • 开启远程监控功能
  • zbx服务端部署java gateway 配置
  • 添加主机关联模板
a)开启远程监控功能
  • 开启远程监控功能
[root@web03 tomcat]# vim bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenti
cate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=172.16.1.9"
[root@web03 tomcat]# systemctl start tomcat
[root@web03 tomcat]# ps -ef|grep java
root       1237      1 47 14:51 ?        00:00:07 /server/tools/jdk/bin/java -Djava.util.logging.config.file=/server/tools/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=172.16.1.9 -Dignore.endorsed.dirs= -classpath /server/tools/tomcat/bin/bootstrap.jar:/server/tools/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/server/tools/tomcat -Dcatalina.home=/server/tools/tomcat -Djava.io.tmpdir=/server/tools/tomcat/temp org.apache.catalina.startup.Bootstrap start
root       1276   1159  0 14:51 pts/0    00:00:00 grep --color=auto java
b)zbx服务端部署java gateway 配置
  • zbx服务端 部署 zabbix-java-gateway
1. 安装
yum install -y zabbix-java-gateway
2. 启动
systemctl enable zabbix-java-gateway.service
systemctl start zabbix-java-gateway.service

grep '^[a-Z]' /etc/zabbix/zabbix_java_gateway.conf
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"

systemctl restart zabbix-java-gateway.service
ss -lntup |grep java

3. 配置zbx 服务端
grep -n 'Java.*=' /etc/zabbix/zabbix_server.conf
317:JavaGateway=127.0.0.1
325:JavaGatewayPort=10052
333:StartJavaPollers=5

4. 重启服务端
systemctl restart zabbix-server.service
  • 检查java poller进程

在这里插入图片描述

c)添加主机
  • 也可以添加个 zabbix agent客户端监控

在这里插入图片描述

在这里插入图片描述

3) 方案01补充-jar包启动的应用如何配置jmxremote

java -jar xxx.jar 

java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=172.16.1.9 \
-jar xxx.jar

在这里插入图片描述

在这里插入图片描述

12.5 监控硬件设备

  • 硬件服务器
监控方案步骤
方案01开启设备的ipmi功能监控,添加接口的时候选择ipmi即可.(进入物理设备的bios系统.LAN局域网访问.)
方案02通过客户端命令获取指标实现监控硬件:megacli和ipmitool
  • 方案02-通过命令自定义监控
命令说明
megacli用于获取raid卡状态
ipmitoolcpu温度,风扇转速

12.6 小结

zabbix客户端应用场景
Zabbix-agent
或agent2(最常用)
适用于几乎所有情况,支持自定义监控,linux,windows, android/ios
SNMP客户端用于监控网络设备:
Simple Network Management Protocal 简单网络管理协议 监控网络设备
JMXJava-gateway 监控java app(tomcat),
未来推荐自定义监控(zabbix_agents2 + jmap/jstats)
IPMI监控硬件(物理服务器,联想(IBM X86架构 ThinkServer) ,华为,浪潮,Dell,IBM,HP)
直接使用自定义监控(ipmitool + megacli )

在这里插入图片描述

13. 来点新的-自动化

  • 自动添加主机并关联模板。
自动添加主机方案含义应用场景
自动发现(服务端主动)zbx服务端 主动去找是否有新的主机,如果有则添加进来,关联模板。。。。配置简单,大量添加主机不适合。临时性可用
自动注册(客户端主动)zbx客户端 主动去找服务端提交自己的信息,请求向服务端注册配置繁琐,经常性。大量主机

13.1 自动发现

  • 客户端(zbx agent),配置文件.

  • web配置自动发现规则. - 发现主机

  • web配置自动发现的动作 - 发现主机后关联模板,添加主机,加入主机组,启用

环境准备
zbx10.0.0.62
nfs01
db01
web01
web02

1)客户端(zbx agent),配置文件

ansible实现
playbook
   yum
   template

2)web配置自动发现规则

  • 配置–>自动发现 创建自动发现规则

在这里插入图片描述

  • 检查自动发现的主机
    • (注意仅仅发现并不会添加到zbx主机中)

3)web配置动作

  • 配置 自动发现 的动作

  • 添加组

  • 关联模板

  • 启动主机

  • 进入自动发现动作配置

在这里插入图片描述

  • 启动自动发现动作

在这里插入图片描述

  • 配置自动发现动作的操作(关联主机组,关联模板)

在这里插入图片描述

在这里插入图片描述

  • 检查自动发现

在这里插入图片描述

  • 检查添加的主机

在这里插入图片描述

4) 自动发现原理与小结

  • 客户端(zbx agent),配置文件
  • web配置自动发现规则. - 发现主机
  • web配置动作 - 发现主机后关联模板,添加主机,加入主机组,启用

在这里插入图片描述

在这里插入图片描述

全网监控任务

19.1 网站需要监控什么?

  • 面试题: 你们公司监控了什么?自定义监控了什么?监控指标?。。。。。

  • 潜台词:问你网站架构监控了什么内容?

1)回答参考

  • ❌不推荐的回答案例:(没有经验,小白)

    • cpu,内存,磁盘,网络,带宽,负载。。。。。。。。
  • ⭕ 推荐的回答:

  • 按照网站层次架构监控的(多个维度监控)

    • 任何一台机器(从下到上):
      • API接口监控:(选做)
      • 业务/app监控:
      • 服务监控:
      • 系统监控:
      • 硬件监控:
    • 按照访问顺序监控(一层一层): dns/cdn,安全组,负载,web,数据库,存储,备份。
    • 补充的监控

2)任何一台机器(从下到上)

监控内容详细内容具体实现落地
API接口监控:监控指定的api接口,比如zbx api。开发提供.curl命令、web场景/监测
业务、应用、app监控:检查应用是否可用,书写测试代码。类似于info.php,mysqli.php这种页面.curl命令、web场景/监测
服务监控:基本: 进程,端口
专有: 服务的状态,不同服务不同。
日志 最近2000行日志中是否有error/failed/exception/sever
模板或根据具体要求自定义监控
系统监控:cpu,负载,内存,磁盘,网络,带宽,io,关键文件是否变化,进程,僵尸进程,是否有非堡垒机登录模板+自定义(僵尸进程,用户异地登录)
硬件监控:物理服务器,温度,风扇转速,raid状态ipmi

自定义监控
(ipmitool/megacli)
  • web场景

在这里插入图片描述

3)按照访问顺序监控(一层一层)

  • dns/cdn,安全组,负载,web,数据库,存储,备份
监控内容详细内容具体实现落地
DNS解析是否OK自定义监控-ping/dig/…
域名: whois baidu.com 过滤过期
证书: curl -Lsv www.baidu.com -o /dev/null过滤expire date 过期
CDN是否可用.命中率.(web检查)分布式ping:
商业:监控宝,听云
免费网站: www.17ce.com,ping.chinaz.com
开源软件: smokeping
负载ngx服务情况,证书过期,网站访问量,并发ngx/haproxy/keepalived状态:模板
证书:模板、自定义监控。
网站访问量(运营):ip,pv,uv(网站第三方插件实现百度统计),
matomo(php piwiki)
并发:统计80,443端口连接数。
负载均衡健康检查模式upstream_check 自定义监控
访问日志(状态码),错误日志(error,failed数量)
服务:ngx,keepalived(vip数量,备节点是否有vip)
web主要监控服务情况具体服务使用对应模板即可。
ngx
php
tomcat(war)/jar包
数据库redis,mysql模板即可。
存储nfs自定义监控,存储目前多少空间,能否使用.模拟挂载,创建文件检查结果
备份备份的数据量自定义监控,系统是否有备份,发送邮件…占用多少空间
  • 用户访问流程之DNS解析
#zabbix服务端自定义监控

#1. DNS是否可用.
ping 就可以,ping通就表示dns可用.
定义带有参数的键值
check.ping[*], sh 脚本  "$1"  #$1是域名 可以解析返回1,否则返回0

#2. 域名过期时间(还剩下多少天)
check.domain[*],sh 脚本 "$1" #$1是域名 显示这个域名还有多久 过期(天)
whois baidu.com #过滤 Expiry 取出这个时间

用于计算两个时间之间有多少天
[root@m02-zbx-server ~]# date -d "2024-04-21"
Sun Apr 21 00:00:00 CST 2024
[root@m02-zbx-server ~]# date -d "2024-04-21" +%s
1713628800
[root@m02-zbx-server ~]# date +%s
1679036681

#3. https证书过期时间.
check.ssl[*],sh 脚本 "$1"  #$1是域名 https://
[root@m02-zbx-server ~]# curl -v https://baidu.com |& grep "expire date"|awk -F': ' '{print $2}'
Feb 27 23:59:59 2024 GMT
[root@m02-zbx-server ~]# date -d "Feb 27 23:59:59 2024 GMT" +%F
2024-02-28
[root@m02-zbx-server ~]# date -d "Feb 27 23:59:59 2024 GMT" +%s
1709078399
  • CDN
    • 流量
    • 带宽
    • (命中率)
    • 暂时web页面查看.
调用公有云的api接口获取.python/golang .
  • 负载均衡
    • 监控基础指标
    • 监控服务
      • nginx (配置负载均衡健康检查模块) tengine 页面(curl) 自定义下监控池塘多少个,每个池塘中节点是否运行中.
      • ngx状态 模板
      • 访问日志:状态码每一种状态码的数量(最近1小时,最近5000行).
[root@lb01 /var/log/nginx]# date +%F
2023-03-17
[root@lb01 /var/log/nginx]# date +%Y/%m/%d
2023/03/17
[root@lb01 /var/log/nginx]# date +%Y/%m/%d" "%H 
2023/03/17 15
[root@lb01 /var/log/nginx]# date +%Y/%m/%d" "%H -d '-1hour'
2023/03/17 14
[root@lb01 /var/log/nginx]# sed -n '/开始的时间/,/结束的时间/p'
^C
[root@lb01 /var/log/nginx]# sed -n '/开始的时间/,/结束的时间/p' access.log
  • web服务 - nginx
    • web:nginx 监控,日志监控
    • php 日志监控,服务监控
    • java 日志,jmxremote
    • xxx
[root@web01 ~]# cat /etc/nginx/conf.d/default.conf
server {
  listen 80 default_server;
  server_name "";
location / {
  charset utf8;
  default_type text/plain;
  return 200 "别闹,没事别乱访问";
}
location /status {
  stub_status;
  # allow
  # deny
  }
}
  • 修改模板

  • web-php

[root@m02-zbx-server ~]# cat /etc/nginx/conf.d/status.conf
server {
  listen 8888;
  server_name status.oldboylinux.cn;
  location /basic_status {
    stub_status;
   }
  location /php_status {
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
   }
  location /php_ping {
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
   }
}
[root@web01 /etc/nginx/conf.d]# egrep -v ';|^$' /etc/php-fpm.d/www.conf 
[root@web01 /etc/nginx/conf.d]# egrep -v ';|^$' /etc/php-fpm.d/www.conf 
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
;;php状态监控的配置
pm.status_path = /php_status
ping.path = /php_ping
ping.response = pong

slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on

php_value[session.save_handler] = redis
php_value[session.save_path] = tcp://172.16.1.51:6379
php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache

[root@m02-zbx-server ~]# systemctl restart nginx
[root@m02-zbx-server ~]# systemctl restart php-fpm.service
[root@m02-zbx-server ~]# curl http://127.0.0.1:8888/basic_status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 
[root@m02-zbx-server ~]# curl http://127.0.0.1:8888/php_status
pool:                 www
process manager:      dynamic
start time:           08/May/2024:08:46:46 +0800
start since:          72
accepted conn:        1
listen queue:         0
max listen queue:     0
listen queue len:     511
idle processes:       4
active processes:     1
total processes:      5
max active processes: 1
max children reached: 0
slow requests:        0
[root@m02-zbx-server ~]# curl http://127.0.0.1:8888/php_ping
pong

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • db01

在这里插入图片描述

  • redis

在这里插入图片描述

在这里插入图片描述

  • 数据库
    • 模板
    • 日志
    • 数据空间

在这里插入图片描述

在这里插入图片描述

  • 存储

    • 系统监控
    • 服务进程
    • 是否可用:挂载下,创建些文件
    • 监控共享存储使用的空间
  • 对象存储(开发书写代码,测试写入)

  • 备份服务器

    • rsync服务
    • 空间
    • md5sum
    • 日常模拟数据恢复. 故障演练.
  • docker容器

    • 系统监控
    • docker模板监控

4)补充监控

  • apm监控网站性能监控。用户访问流程链监控。。。
  • docker监控

5)案例:监控api接口

1. 访问页面是否可以使用 zbx.oldboylinux.cn
http://zbx.oldboylinux.cn

2.访问zbx_api是否可用
http://zbx.oldboylinux.cn/api_jsonrpc.php
  • zbx服务端创建:web场景监控

在这里插入图片描述

  • 配置web场景基本信息

在这里插入图片描述

  • 添加操作步骤部分:第1步-检查zbx首页是否可以访问.

在这里插入图片描述

  • 添加操作:第2步骤检查zbx-api接口是否可以访问

在这里插入图片描述

  • 检查监控结果

在这里插入图片描述

  • 检查结果
    在这里插入图片描述

在这里插入图片描述

19.2 实施全网监控

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值