zabbix进阶-主动模式和被动模式、proxy主动被动模式、自定义监控项

一、实验目的

总结zabbix作为监控软件的原理,了解并使用zabbix的监控功能,zabbix的监控模式,主要特点,zabbix的架构,内部配置的数据流程,zabbix的术语,zabbix的安装和基本操作,zabbix实现主动模式和被动模式,proxy代理的主动和被动模式,zabbix自定义监控项,熟记自定义监控项的流程。

二、实验主要内容

1、zabbix监控模版实现tomcat的压缩功能

2、zabbix实现主动模式和被动模式

3、zabbix实现proxy的主动模式和被动模式

4、zabbix自定义监控项,cpu、tcp、memcached

三、实验环境与准备

5台拍完快照配置好的linux主机,昨天已经完成括号内的内容(1台10.100为zabbix监控主机server、安装java-gateway服务、mysql-server服务,一台110作为agent服务器),一台120先实现主动模式(然后作为proxy代理的主动),130作为proxy负责110的被动zabbix-agent,140作为proxy负责120的主动zabbix-agent

四、实验分析与设计思路

自定义监控项配置流程

首先要确定好agent端盒server端要监控的指标是什么,在agent端对应的配置文件中编写要监控的脚本,agent端的agent主配置文件要编写userparameter,定义key和传递的参数,传递多个参数可以用位置$1,$2来传递中括号里面的参数,在zabbix的server端或者proxy端使用zabbix-get对其进行探测是否异常,正常的话后期就关联到自定义监控项的模版中,并做后续的绘图。

Zabbix支持多种模式,zabbix支持普通的zabbix server到zabbix agent端模式,也支持zabbix-sever到zabbix-proxy模式,zabbix-server同时关联多个zabbix-agent,将zabbix-agent的历史数据存储到zabbix-server管理的数据库中,然后经过zabbix的web(也就是nginx)展示出来;

zabbix支持proxy代理模式,只需要授权proxy监听在特定的端口上10052,而对应的proxy会独立的管理他下面的zabbix-agent,并将zabbix-agent的数据存储到proxy管理的数据库中,zabbix-server没有存储zabbix-proxy数据的功能,是将proxy的数据放到zabbix web展示区进行展示;

Zabbix是基于php开发的,默认使用fastcgi,而Java不支持fastcgi模式,为了采集展示进行可视化java对应的指标数据,要让Java支持fastcgi,需要安装一个JMX的java类,zabbix关联java gateway,java中的应用体系支持gateway进行绑定起来,基于JMX就可以收集到Java gateway的数据并将其在zabbix web上进行图表展示。

被监控端安装agent应用程序,被监控端可以采集数据,基于主动模式或被动模式将历史数据或者趋势数据发送给zabbix的服务端,服务端会将数据进行汇聚,将历史数据存储到数据库,关联他的认证执行系统,将收集的趋势数据基于特定的UI格式展示出来,同时汇聚的数据到告警策略区,一旦数据指标出现超过阈值的情况,会触发告警策略,关联到用户管理系统、认证执行系统、媒介系统,动作系统,发送告警,会关联后面的告警媒介,基于邮件微信电话或者短信告警,同时将告警的事件记录到事件管理器,在主面板展示出来,故障修复之后,事件管理器会重新定义事件,将已经修复的事件移除。

五、详细实验过程

1、zabbix监控模版实现tomcat的压缩功能

在打开仪表盘的时候tomcat的压缩比会有警告提示

编写tomcat的主机上的配置文件server.xml

[root@node-2 ~]# vim /usr/local/tomcat/conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

compression="on" //打开支持压缩

compressionMinSize="50" //最小压缩比

compressionUserAgents="gozilla,traviata"

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />

我比较自信直接重启的服务,当然也可以先停服检查语法再启动,两个颜色两个方法

[root@node-2 ~]# systemctl restart tomcat.service 重启tomcat服务

[root@node-2 ~]# systemctl stop tomcat.service 或者先停止服务检查语法

[root@node-2 ~]# configtest.sh 检查语法

[root@node-2 ~]# systemctl start tomcat.service 启动服务

查看仪表盘就没有了警告

2、zabbix实现主动模式和被动模式

主动模式的----------新开一个虚拟机120作为主动模式来进行操作

安装zabbix-agent2 还是从官网找到对应的命令然后进行安装,下面是官网地址

https://www.zabbix.com/cn/download?zabbix=6.4&os_distribution=rocky_linux&os_version=9&components=agent_2&db=&ws=

rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm

[root@node-3 ~]# dnf clean all

[root@node-3 ~]# dnf install zabbix-agent2 zabbix-agent2-plugin-* -y 安装zabbix-agent2

[root@node-3 ~]# cd /etc/zabbix/ 进入到zabbix的配置目录

[root@node-3 zabbix]# vim zabbix_agent2.conf 编辑agent2配置文件

Server=192.168.10.100 对应的server主机IP

ServerActive=192.168.10.100 主动模式必须打开此项,且应该指向server主机

Hostname=192.168.10.120 此项主机name可以自定义别的,但是在添加主机的时候要对应

Timeout=30 超时时长最好高一点

[root@node-3 zabbix]# systemctl start zabbix-agent2.service 启动服务

[root@node-3 zabbix]# ss -tnl 查看端口 端口已经打开

在仪表板上创建新主机,将120添加到新的主机中,模版选择主动模式即Linux by Zabbix agent active 注意主机名称不能写错,在配置文件里面是什么这里就写什么

可以看到已经添加上了120主机,但是有bug,不会变成绿色,不过不必理会

在配置中找到主机,将更新间隔改短一点,方便更好的演示出实验效果

重新启动120的agent服务,不然数据一致出不来,重启服务之后,我们在监测中查看最新数据就能看到10.120的数据已经产生,且可以看到监控数据的图形展示

[root@node-3 zabbix]# systemctl restart zabbix-agent2.service

[root@node-3 zabbix]# tail -f /var/log/zabbix/zabbix_agent2.log 查看日志

查看ss -tan 可以看到120的随机端口主动向100的10051端口发送数据

----------------------------------------------------------------------------------------------------------------------

被动模式是zabbix的默认模式,在10.110上进行演示

[root@node-2 ~]# vim /etc/zabbix/zabbix_agent2.conf

serverIP为server的主机IP

agent作为被监控端的端口为10050

listenIP打开与否都行

指向本机即为被动模式

主机名在后面添加主机时应为此名,可以自定义

[root@node-2 ~]# systemctl restart zabbix-agent2.service 重启服务,可以看到有很多数据

监控数据的图形界面

在虚拟机中可以看到被动模式下,110作为agent开启10050端口会定时的向100server的随机端口传送数据

3、zabbix实现proxy的主动模式和被动模式

可以看图中信息了解各个主机所做的工作,proxy中不设置本地数据库,统一将数据到server的mysql中,每个proxy安装mysql客户端即可

在10.100中创建被动模式和主动模式的数据库,并且都使用统一的用户zabbix,密码666666

mysql> create database zabbix_proxy_passive character set utf8mb4 collate utf8mb4_bin;

mysql> grant all privileges on zabbix_proxy_passive.* to zabbix@'%';

mysql> set global log_bin_trust_function_creators = 1;

mysql> create database zabbix_proxy_active character set utf8mb4 collate utf8mb4_bin;

mysql> grant all privileges on zabbix_proxy_active.* to zabbix@'%';

为node-4、5导入初始架构和数据,系统将提示输入新创建的密码

[root@node-4 zabbix]# cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy_passive

[root@node-5 zabbix]# cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy_active

mysql 进入查看数据库和数据表 可以看到数据表已经生成

mysql> show databases;

mysql> use zabbix_proxy_active

mysql> show tables;

mysql> use zabbix_proxy_passive

mysql> show tables;

①实现zabbix的proxy代理被动模式

在进行操作前先将原有的epel源移出,我有脚本直接运行即可

在10.130和10.140上安装proxy,在官网能找到想要的命令

在130上安装repo仓库,清除原来的repo缓存,安装zabbix-proxy,安装mysql客户端

rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm

dnf clean all

[root@node-4 ~]# dnf install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy -y

[root@node-4 ~]# yum -y install mysql

编辑110的agent配置文件,被动模式下更改为指向proxy主机

[root@node-2 ~]# vim /etc/zabbix/zabbix_agent2.conf

[root@node-4 zabbix]# egrep -v '^#|^$' ./zabbix_proxy.conf

ProxyMode=1 
Server=192.168.10.100 
Hostname=192.168.10.130 
ListenPort=10051 
LogFile=/var/log/zabbix/zabbix_proxy.log 
LogFileSize=0 
EnableRemoteCommands=1 
PidFile=/run/zabbix/zabbix_proxy.pid 
SocketDir=/run/zabbix 
DBHost=192.168.10.100 
DBName=zabbix_proxy_passive 
DBUser=zabbix 
DBPassword=666666 
ProxyLocalBuffer=180 
ProxyOfflineBuffer=180 
ProxyConfigFrequency=30 
StartPollers=5 
JavaGateway=192.168.10.130 
JavaGatewayPort=10052 
StartJavaPollers=3 
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log 
ListenIP=0.0.0.0 
Timeout=15 
LogSlowQueries=3000 
StatsAllowedIP=127.0.0.1

130主机上安装zabbix_java_gateway,配置 zabbix_java_gateway.conf

[root@node-4 zabbix]# dnf install zabbix-java-gateway -y

[root@node-4 zabbix]# vim zabbix_java_gateway.conf

LISTEN_IP="0.0.0.0"

LISTEN_PORT=10052

START_POLLERS=5

TIMEOUT=30

添加agent代理程序 被动模式的为130为被动式,然后启动主机,更新主机的agent代理

更新完成之后将监控项和自动发现的时间分别进行调整,改为15s和60s,不然更新的速度会很慢,效果不好

100server、110agent passive和130proxy passive 全都重启服务,然后110正常变绿

②实现zabbix的proxy代理主动模式

在140上安装repo仓库,清除原来的repo缓存,安装zabbix-proxy

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm

dnf clean all

[root@node-5 ~]# dnf install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy -y

编辑zabbix_proxy.conf的配置文件,注意数据库名称和hostname名称

[root@node-5 zabbix]# vim /etc/zabbix/zabbix_proxy.conf

修改完之后将其展示出来,大致就是下面这样

[root@node-5 zabbix]# egrep -v '^#|^$' ./zabbix_proxy.conf

ProxyMode=0                         0代表工作在主动模式
Server=192.168.10.100                  server 的主机IP
Hostname=192.168.10.140               主机名
ListenPort=10051                      监听端口
LogFile=/var/log/zabbix/zabbix_proxy.log  日志位置
LogFileSize=0
EnableRemoteCommands=1             允许远程执行命令
PidFile=/run/zabbix/zabbix_proxy.pid
SocketDir=/run/zabbix
DBHost=192.168.10.100                数据库IP
DBName=zabbix_proxy_active           数据库名称
DBUser=zabbix                        数据库用户
DBPassword=666666                   密码
ProxyLocalBuffer=180                  代理缓冲时长
ProxyOfflineBuffer=180                 若连不上master数据库,最多保留数据的时长
ConfigFrequency=30                    对server进行同步的时间
StartPollers=5                          默认开启的触发器数量
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
ListenIP=0.0.0.0
Timeout=15                          超时时长
LogSlowQueries=3000                  慢查询
StatsAllowedIP=127.0.0.1

启动服务

[root@node-5 zabbix]# systemctl start zabbix-proxy.service

启用主机

由agent代理程序监测,选择10.140proxy做代理监测

更新之后重启120的agent服务和140的proxy服务

[root@node-3 ~]# systemctl restart zabbix-agent2.service

[root@node-5 zabbix]# systemctl restart zabbix-proxy.service

查看120的数据已经产生了很多

图形化展示如下

4、zabbix自定义监控项,cpu、tcp、memcached

自定义监控项---CPU

客户端编辑agent配置文件,添加键名xxhf 输出监控项haha

[root@node-2 bin]# vim /etc/zabbix/zabbix_agent2.conf

UserParameter=xxhf,/usr/bin/echo "haha"

重启agent服务

[root@node-2 bin]# systemctl restart zabbix-agent2.service

在130proxy端安装zabbix_get工具,用来测试110的agent监控项配置

[root@node-4 zabbix]# rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/9/x86_64/zabbix-get-6.0.20-release1.el9.x86_64.rpm

[root@node-4 zabbix]# zabbix_get -s 192.168.10.110 -p 10050 -k "xxhf" 正常输出

基于脚本,110agent创建自定义监控项CPU,当输入的参数==cpu 输出94,否则输出1024

[root@node-2 bin]# cd /etc/zabbix/zabbix_agent2.d/ 进入到zabbix_agent2.d/目录下

[root@node-2 zabbix_agent2.d]# vim cpu_monitor.sh 编写监控项脚本

#!/bin/bash
NUM=CPU
if [ $1 == $NUM ];then
        echo 94
else
        echo 1024
fi

[root@node-2 zabbix_agent2.d]# chmod +x cpu_monitor.sh 创建之后赋予执行权限

编写agent配置文件,将图中代码放在对应的的位置

[root@node-2 zabbix_agent2.d]# cd ..

[root@node-2 zabbix]# vim zabbix_agent2.conf

UserParameter=xxhf[*],/bin/bash cpu_monitor.sh $1

UserParameterDir=/etc/zabbix/zabbix_agent2.d

在130的proxy主机上进行测试

[root@node-4 zabbix]# zabbix_get -s 192.168.10.110 -p 10050 -k "xxhf[CPU]"

[root@node-4 zabbix]# zabbix_get -s 192.168.10.110 -p 10050 -k "xxhf[abc]"

自定义监控-----TCP状态,配置项和监控命令

[root@node-2 zabbix_agent2.d]# vim linux_status.sh 编写监控tcp状态的脚本

[root@node-2 zabbix_agent2.d]# chmod +x linux_status.sh 为脚本添加执行权限

[root@node-2 zabbix_agent2.d]# vim ../zabbix_agent2.conf 配置agent配置文件,加入代码在指定位置

UserParameter=linux_status[*],/bin/bash linux_status.sh $1 $2

110Agent重启服务

[root@node-2 zabbix_agent2.d]# systemctl restart zabbix-agent2.service

[root@node-4 zabbix]# 130proxy端进行监测测试

zabbix_get -s 192.168.10.110 -p 10050 -k "linux_status[tcp_status,TIME-WAIT]"

添加模版,在配置的模版中选择添加模版

找到新添加的模版my_template,选择监控项

测试是能获得值的,证明配置没问题

点击添加即可,添加之后就有了监控项了

添加完监控项还需要添加触发器,表达式中的内容如下

last(/my_template/linux_status[tcp_status,TIME-WAIT])>=180

添加触发器成功

添加图形,将刚才创建的监控项添加

图形创建成功

将创建好的my_template模版添加到主机110中

在110的最新数据中我们可以看到TCP连接已经产生了数据,证明模版的监控项创建没问题

再看一下图形,从添加到主机之后就开始检测数据且,多次超过了阈值

超过阈值之后触发器生效,产生警告,提示一般严重,且显示持续时间

自定义监控-----memcached状态,配置项和监控命令

导入模版

导入成功,可以看到模版中已经有了

在120主动模式的agent的主机中进行操作,编辑agent配置文件,安装memcached nc telnet

[root@node-3 zabbix_agent2.d]# yum -y install memcached nc telnet

[root@node-3 zabbix_agent2.d]# vim memcache_monitor.sh 编写memcache监控脚本

[root@node-3 zabbix_agent2.d]# chmod +x memcache_monitor.sh 给脚本添加执行权限

修改memcached配置文件,并启动服务

[root@node-3 zabbix_agent2.d]# vim /etc/sysconfig/memcached

systemctl start memcached.service
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 0.0.0.0,::1"

使用nc进行探测,编辑zabbix_agent2配置文件,并启动zabbix-agent服务

[root@node-3 zabbix_agent2.d]# echo stats | nc 192.168.10.120 11211

[root@node-3 zabbix_agent2.d]# vim ../zabbix_agent2.conf

UserParameter=memcached_status[*],/bin/bash memcache_monitor.sh $1 $2 $3

[root@node-3 zabbix_agent2.d]# systemctl restart zabbix-agent2.service

在140的proxy主机上安装zabbix-get

[root@node-5 zabbix]# yum -y install zabbix-get

使用zabbix_get 工具探测

[root@node-5 zabbix]# zabbix_get -s 192.168.10.120 -p 10050 -k "memcached_status["memcached_status","11211","curr_connections"]"

关联模版

预览图形界面如何

添加选择刚才创建的模版

可以看到刚才添加的模版已经检测到数据

图形中也能看到阈值

六、实验结果和分析

搞清楚zabbix的架构体系和功能对于实验的操作有着很好的帮助,zabbix-server和zabbix-agent之间的关系,关联的方式,导入数据库中的内容等等,已经在监控过程中可能会出现的告警等等,还有就是字体需要更改。

七、总结

Zabbix 术语

被监控: 即 Zabbix 监控的主机或设备

监控项item:即 Zabbix 监控的相关指标,比如:CPU利用率,内存使用率,TCP连接数等

应用集Application:为方便管理众多的监控项,可将多个同类型的监控项进行归类,纳入一个集合中,即应用集

触发器Trigger:是一个表达式,或者说一个条件,如磁盘利用率超过80%等,当触发条件后,会导致一个触发事件,这个事件会执行一个或多个动作

动作Action:动作是触发器的条件被触发后的行为,可以是发送一条短信,微信或邮件,或是重启某个服务

告警:当触发器和动作二者结合起来时,就构成了的告警机制,比如cpu的使用率达到80%以上,触发了报警动作,系统将自动发送一封邮件到指定的邮箱。然后运维可以及时的去处理此错误。

Web 监测:对WEB服务进行检测,比如:访问指定网站是否可正常访问

模板 Template: 可以方便地应用于多个主机的一组实体的集合。

zabbix的主动和被动模式

基于agent端考虑是被动还是主动,本质是server获取agent端的数据,主动模式是agent向server发数据,而被动模式是agent等待server来取数据

zabbix 主动与被动监控模式:

学习主动模式与被动模式工作原理,主动模式模板制作,然后添加主机并关联主动模式模板,然后验证主动模式监控数据和图形。

被动模式:

无论是主动模式还是被动模式,都是站在zabbix agent角度来说的工作模式,比如被动模式,是说zabbix agent被动的接受zabbix server周期性发送过来的数据收集指令,在被动模式之下,zabbix server会根据主机关联的模板中的监控项和数据采集间隔时间,周期性的打开随机端口并向zabbix agent服务器的10050发起tcp连接,然后发送获取监控项数据的指令,即zabbix server发送什么指令那么zabbix agent就收集什么数据,zabbix server什么时候发送zabbix agent就什么时候采集,zabbix server不发送zabbix agent就一直不响应,所以zabbix agent也不用关心其监控项和数据采集周期间隔时间。

被动模式的优点就是配置简单,安装后即可使用,因此也成为zabbix 的默认工作模式,但是被动模式的最大问题就是会加大zabbix server的工作量,在数百甚至数千台服务器的环境下会导致zabbix server需要轮训向每个zabbix agent发送数据采集指令,如果zabbix server负载很高还会导致不能及时获取到最新数据,但由于无需其他复杂配置,被设置为了默认的工作方式。在192.168.10.130上实现zabbix主动模式

主动模式:

主动模式是由zabbix agent主动向zabbix server的10051端口发起tcp连接请求,因此主动模式下必须在zabbix agent配置文件中指定zabbix server的IP或者主机名(必须可以被解析为IP地址),在连接到zabbix server之前zabbix agent是不知道自己要采集那些数据以及间隔多久采集一次数据的,然后在连接到zabbix server以后获取到自己的监控项和数据采集间隔周期时间,然后再根据监控项采集数据并返回给zabbix server,在主动模式下不再需要zabbix serve向zabbix agent发起连接请求,因此主动模式在一定程度上可减轻zabbix server打开的本地随机端口和进程数,在一定程度就减轻zabbix server的压力。

zabbix proxy

zabbix 作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控数据然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy 可以代替 zabbix server 收集监控数据,然后把数据汇报给 zabbix server,所以zabbix proxy可以在一定程度上分担了zabbix server 的数据收集压力,从而降低了数据的采集时间、也相应的增加了zabbix server的监控能力。另外zabbix proxy也区分主动模式和被动模式,通信方式与zabbix server主动模式和被动模式一样,区别是zabbix proxy由于没有zabbix agent的配置,所以zabbix proxy在主动模式下要向zabbix server周期性的向zabbix server申请获取zabbix agent的监控项信息,但是zabbix proxy在被动模式下也是等待zabbix server的连接并接受zabbix server发送的监控项指令,然后再有zabbix proxy向zabbix agent发起请求获取数据。

自定义监控项配置流程

首先要确定好agent端盒server端要监控的指标是什么,在agent端对应的配置文件中编写要监控的脚本,agent端的agent主配置文件要编写userparameter,定义key和传递的参数,传递多个参数可以用位置$1,$2来传递中括号里面的参数,在zabbix的server端或者proxy端使用zabbix-get对其进行探测是否异常,正常的话后期就关联到自定义监控项的模版中,并做后续的绘图。

  • 17
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Zabbix Proxy可以通过两种方式与Zabbix Server进行通信:主动模式被动模式。 配置主动模式: 1. 在Zabbix Server中创建一个代理主机,设置其IP地址和主机名。 2. 在Zabbix Proxy中编辑配置文件zabbix_proxy.conf,设置ServerActive参数为Zabbix Server的IP地址和端口号。 3. 在Zabbix Proxy中启动zabbix_proxy进程,等待其与Zabbix Server建立连接。 4. 在Zabbix Server中确认代理主机状态为“Monitored”,表示主动模式已经配置成功。 配置被动模式: 1. 在Zabbix Server中创建一个代理主机,设置其IP地址和主机名。 2. 在Zabbix Proxy中编辑配置文件zabbix_proxy.conf,设置Server参数为Zabbix Server的IP地址和端口号。 3. 在Zabbix Proxy中启动zabbix_proxy进程,等待其与Zabbix Server建立连接。 4. 在Zabbix Server中创建一个被动代理监控,设置其key为被监控主机的IP地址或主机名。 5. 在Zabbix Proxy中编辑配置文件zabbix_proxy.conf,设置Hostname参数为被监控主机的IP地址或主机名。 6. 在被监控主机上安装Zabbix Agent,并在其配置文件zabbix_agentd.conf中设置Server参数为Zabbix Proxy的IP地址和端口号。 7. 在Zabbix Server中确认代理主机状态为“Monitored”,表示被动模式已经配置成功。 需要注意的是,在配置主动模式时,Zabbix Proxy需要向Zabbix Server主动发送数据;而在配置被动模式时,Zabbix Server需要向Zabbix Proxy请求数据。因此,被动模式可以更好地适应防火墙和网络拓扑的限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我变秃了也没变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值