prometheus监控nginx服务,nginx进程自启动以及日志分割

nginx是一个轻量级,高性能的HTTP和反向代理web服务器。目前金融科技研发部下的相关应用,基本通过接入区(互联网接入区,企业信息化接入区)部署的nginx服务进行反向代理提供服务。

在实际业务运行过程中,需要对nginx服务进行一系列的配置(prometheus监控节点、nginx进程,nginx日志切割,nginx服务自启动),便于日常的维护,日志查询,故障定位,服务高可用。本文将会介绍具体每个环节的配置方法与命令。

prometheus组件下载地址:

prometheus节点组件.zip-虚拟化文档类资源-CSDN下载

Supervisor服务组件网盘下载地址:

链接:https://pan.baidu.com/s/1feAckUPRuBkU77LSQDpalg 
提取码:c2vx

nginx组件网盘下载地址:

链接:https://pan.baidu.com/s/1M6GkVDDq9mcDx8rSLHEfCw 
提取码:rshh

目录

1.安装 安全数据摆渡客户端(下载工具):

2.安装 nginx及nginx监控探针(未安装nginx服务)

3.nginx上重编译nginx-module--vts模块(已安装nginx服务)

4.安装nginx_exporter 

 5.安装Supervisor服务(管理并自启动nginx相关服务)

6.配置管理nginx以及nginx_exporter(自启动)

7.日志管理(按日切割以及保留30天)

8.配置prometheus服务端(slave)

9.配置prometheus服务端(master)

10.登陆grafana检查否添加成功

11.配置alert告警分组

nginx监控统一安装脚本:


1.安装 安全数据摆渡客户端(下载工具):

1)安装wget组件:yum -y install wget

2)安装客户端:wget https://X.X.X.X/UniExServices/baseCfg/downloadLinuxClient.html --no-check-certificate

3)解压客户端:unzip downloadLinuxClient.html

4)进入目录:cd /root/linux-client/5.11/

5)修改访问权限:chmod 755 *

###生产环境下各个公司有各自的安全上传文件的通道,此条在通用的环境中忽略。


2.安装 nginx及nginx监控探针(未安装nginx服务)

1)进入安渡客户端目录:cd /root/linux-client/5.11/

2)登录安渡客户端:./MiniFTClient -h X.X.X.X -u user -p passwd

3)进入安渡客户端,下载nginx安装包:get nginx-1.16.1.tar.gz

下载nginx监控探针组件:get nginx-module-vts.tar.gz

下载nginx监控探针:get nginx-vts-exporter.tar.gz

#具体下载的包根据需要的版本而定,例如nginx-1.18.1,对应包名nginx-1.18.1.tar.gz

#额外的组件需要单独下载,比如sticky,命令为get nginx-sticky-module-ng.zip

4)退出安渡客户端:exit    #退出后的目录为/root/linux-client/5.11/

#以上步骤为下载nginx相关组件至服务器,仅供参考。

5)移动nginx安装包至标准路径下:mv nginx-1.16.1.tar.gz /usr/local

移动nginx监控探针组件至组件目录:mv nginx-module-vts.tar.gz /mnt

移动nginx监控探针至组件目录:mv nginx-vts-exporter.tar.gz /mnt

#移动sticky安装包至/mnt目录下:mv nginx-sticky-module-ng.zip /mnt

6)进入标准路径:cd /usr/local

7)解压nginx安装包:tar -zxvf nginx-1.16.1.tar.gz

#一般安装默认下载sticky组件,因此需要对sticky也进行解压。

#解压步骤:cd /mnt

#unzip /mnt/nginx-sticky-module-ng.zip

#tar -zxvf  nginx-module-vts.tar.gz

8)进入解压后的目录:cd /usr/local/nginx-1.16.1/

9)安装编译工具以及库文件:yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

10)编译:./configure --user=root --group=root --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --add-module=/mnt/nginx-sticky-module-ng --add-module=/mnt/nginx-module-vts --with-stream --without-http_rewrite_module --with-pcre

11)安装:make && make install

12)检查版本:/usr/local/nginx/sbin/nginx -v

#返回值为:nginx version: nginx/1.16.1

###通用nginx安装操作如下:

默认在/usr/local目录下执行:

  1. 下载nginx:wget -c https://nginx.org/download/nginx-1.16.1.tar.gz
  2. 解压nginx:tar -zxvf /usr/local/nginx-1.16.1.tar.gz
  3. 进入目录:cd /usr/local/nginx-1.16.1
  4. 下载相关库:yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
  5. 编译:./configure --user=root --group=root --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-stream --without-http_rewrite_module --with-pcre
  6. 安装:make && make install
  7. 检查版本:/usr/local/nginx/sbin/nginx -v

3.nginx上重编译nginx-module--vts模块(已安装nginx服务)

1)进入安渡客户端目录:cd /root/linux-client/5.11/

2)登录安渡客户端:./MiniFTClient -h X.X.X.X -u user -p passwd

3)下载nginx-module--vts模块安装包:get nginx-module-vts.tar.gz

#以上步骤为下载nginx-module-vts组件至服务器,仅供参考。

4)修改nginx-module--vts模块路径:mv nginx-module-vts.tar.gz /usr/local

5)解压nginx-module--vts模块:tar -zxvf nginx-module-vts.tar.gz

6)查看nginx已经安装模块:/usr/local/nginx/sbin/nginx -V

Tengine version: shgine/1.0.0 (nginx/1.15.9)

built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)

built with OpenSSL 1.0.2s  28 May 2019

TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --user=admin --group=admin --with-pcre=../pcre-8.43 --with-pcre-jit --with-openssl-opt=enable-tlsex --with-file-aio --with-threads --with-http_realip_module --with-http_addition_mo  ule --with-http_mp4_module --with-http_secure_link_module --with-http_gunzip_module --with-http_auth_request_module --with-http_degradation_module --with-http_slice_module --with-stream --with-stream_ssl_module --with-stream_re  lip_module --with-stream_sni --with-stream_ssl_preread_module --with-http_v2_module --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --add-module=../ngx_devel_kit --add-module=../lua-nginx  module --add-module=../echo-nginx-module --add-module=../redis2-nginx-module --add-module=../set-misc-nginx-module --add-module=./modules/ngx_http_concat_module --add-module=./modules/ngx_http_reqstat_module --add-module=./modu  es/ngx_http_upstream_check_module --add-module=./modules/ngx_http_upstream_consistent_hash_module --add-module=./modules/ngx_http_upstream_dynamic_module --add-module=./modules/ngx_http_upstream_dyups_module --add-module=./modu  es/ngx_http_upstream_session_sticky_module --add-module=./modules/ngx_cache_purge-2.3 --with-zlib=../zlib-1.2.8 --with-openssl=../openssl-1.0.2s --with-http_sub_module

上面标黄的部分是已编译安装的参数,下面说明中用(***)表示,每台服务器上编译安装的模块都不一定相同,因此要根据具体的情况进行操作。

7)进入安渡客户端下载相同版本的nginx:get nginx-1.16.1.tar.gz

8)编译时加入需要的模块:

./configure (***)--add-module=/usr/local/nginx-module-vts --add-module=/mnt/nginx-module-vts

9)备份原二进制文件:cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

10)备份nginx.conf配置文件:cp /usr/local/nginx/conf/nginx.conf /root

11)安装:make && make install


4.安装nginx_exporter 

1)进入安渡客户端目录:cd /root/linux-client/5.11/

2)登陆安渡客户端:./MiniFTClient -h X.X.X.X -u user -p passwd

3)下载nginx_exporter:get nginx-vts-exporter.tar.gz

4)退出安渡客户端:exit  #退出后的目录为/root/linux-client/5.11/

#以上步骤为下载nginx_exporter组件至服务器,仅供参考

5)修改node_expoter路径:mv nginx-vts-exporter.tar.gz /mnt

6)进入组件目录:cd /mnt

7)解压缩:tar -zxvf nginx-vts-exporter.tar.gz  #文件名为nginx-vts-exporter

8)赋予可执行权限:chmod 755 nginx-vts-exporter

9)修改nginx.conf文件:vi /usr/local/nginx/conf/nginx.conf

10)配置如下:

http {

vhost_traffic_status_zone;

vhost_traffic_status_filter_by_host on;

    server {

        listen 80;

        location /status {

            vhost_traffic_status_display;

            vhost_traffic_status_display_format html;

        }

    }

}

#监听端口80可以进行修改,与现有业务不冲突即可。建议使用统一的标准

#也可以部署在任意端口下面,只要不与现有业务冲突即可

# vhost_traffic_status_filter_by_host on;  开启此功能,在Nginx配置有多个server_name的情况下,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上。

11)启动监听服务:

nohup /mnt/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri=http://localhost:8088/status/format/json &

#不建议先启动服务,等supervisor服务配置好后再进行启动,否则容易报错


 5.安装Supervisor服务(管理并自启动nginx相关服务)

介绍:Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。

生产环境由于是封闭的网络,因此使用离线安装的方式。

安装及配置如下:

1)进入安渡客户端目录:cd /root/linux-client/5.11/

2)登陆安渡客户端:./MiniFTClient -h X.X.X.X -u user -p passwd

3)下载Supervisor服务安装包:get supervisor_install_pack.tar.gz

4)退出安渡客户端:exit  #退出后的目录为/root/linux-client/5.11/

#以上步骤为下载supervisor组件至服务器,仅供参考。

5)创建程序安装目录:mkdir -p /app/supervisor/

#创建的目录可修改,修改后目录后需要修改安装脚本中的路径。

6)移动安装包至安装目录下:mv supervisor_install_pack.tar.gz /app/supervisor/

7)切换至安装目录下:cd /app/supervisor/

8)解压安装包:tar -zxvf supervisor_install_pack.tar.gz

9)进入安装程序:cd supervisor/  #此时绝对路径为/app/supervisor/supervisor

10)执行安装脚本:sh install_supervisor.sh

11)切换至上层目录:cd /app/supervisor

12)启动supervisor服务:sh run_supervisor.sh

13)检查supervisor服务是否已运行:ps -ef | grep supervisord

14)配置systemctl服务:vi /etc/systemd/system/supervisor.service

15)将下列内容添加至supervisor.service文件内:

[Unit]

Description=supervisor

After=network.target



[Service]

Type=forking

ExecStart=/usr/bin/supervisord -c /app/supervisor/etc/supervisord.conf

ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown

ExecReload=/usr/bin/supervisorctl $OPTIONS reload

KillMode=process

Restart=on-failure

RestartSec=42s



[Install]

WantedBy=multi-user.target

16)设置开机启动:

systemctl enable supervisor.service

systemctl daemon-reload

17)关闭supervisor进程:pkill -9 supervisor

18)使用systemctl命令启动:systemctl start supervisor.service

19)检查服务:systemctl status supervisor.service

20)关闭NetworkManager: 

systemctl stop NetworkManager

systemctl disable NetworkManager

21)查看mac地址:ip addr

 22)编辑网卡信息:vi /etc/sysconfig/network-scripts/ifcfg-ens192

#网卡的名称不同的服务器不尽相同,请根据实际情况选择

23)添加内容:HWADDR=00:50:56:9c:14:09

# supervisor常用管理命令:

# supervisorctl restart all ;重启所有应用

# supervisorctl stop all ;停止所有应用

# supervisorctl start all ;启动所有应用

# supervisorctl status ;查看所有应用


6.配置管理nginx以及nginx_exporter(自启动)

需要给托管的子进程配置相应的配置文件,每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起。目录及文件后缀可以在supervisor.conf配置文件中进行自定义。

1)创建日志文件目录:mkdir -p /data/logs/supervisord/

2)编辑配置文件:vi /app/supervisor/etc/supervisord.conf

3)添加管理nginx进程:

[program:nginx]

directory=/usr/local/nginx/sbin

command=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -g 'daemon off;'

#numprocs=6

autostart=true

autorestart=true

startsecs=1

priority=1

user=root

stopasgroup=true

killasgroup=true

stdout_logfile=/data/logs/supervisord/nginx.log

stderr_logfile=/data/logs/supervisord/nginx.err.log

4)添加管理nginx_exporter进程:

[program:nginx_exporter]

directory=/mnt/nginx-vts-exporter

command=/mnt/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri=http://localhost:80/status/format/json

autostart=true

autorestart=true

startsecs=5

priority=1

user=root

stopasgroup=true

killasgroup=true

stdout_logfile=/data/logs/supervisord/nginx_exporter.log

stderr_logfile=/data/logs/supervisord/nginx_exporter.err.log

7.日志管理(按日切割以及保留30天)

1)编辑日志管理脚本:vi /abc/cut_nginx_log.sh

2)脚本内容如下:

#!/bin/bash



#原nginx日志存放路径

log_files_path="/data/nglog/"



#备份nginx日志存放路径

log_files_backup="/data/backup/"



#nginx切割后存放路径

log_files_dir=${log_files_backup}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%d")



#罗列出需要切割的日志名

log_file_list=$(ls -l /data/nglog/ | awk '{print$9}' |awk -F'.' '{print $1}')

#待切割日志名称集合如access.log error.log

log_files_name=(${log_file_list})



#nginx启动脚本路径

nginx_sbin="/usr/local/nginx/sbin/nginx"



#日志保存时间

save_days=30



#创建存放目录

mkdir -p $log_files_dir

log_files_num=${#log_files_name[@]}



#循环切割日志

for((i=0;i<$log_files_num;i++));do

mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}/${log_files_name[i]}_$(date -d "yesterday" +"%Y%m%d").log

done



#删除超过30天的日志文件

find $log_files_backup -mtime +$save_days -exec rm -rf {} \;



#重启nginx服务,重新生成新的文件

$nginx_sbin -s reload

3)编辑crontab定时服务:crontab –e

4)配置每天凌晨进行日志处理:0 0 * * * sh /abc/cut_nginx_log.sh


8.配置prometheus服务端(slave)

1)登陆prometheus服务端(slave):x.x.x.x(企业信息化)

2)检查服务端与被监控端的网络(端口9913):比如telnet x.x.x.x 9913

3)配置监控组节点信息:vi /usr/local/prometheus/sd_config/nginx.yml

4)在(-targets:)下添加监控节点信息:

可以让光标停留在targets的最后一行,安yyp即可直接复制到下一行再进行修改

5)添加监控组节点信息文件至prometheus服务文件(如果已经添加,无需操作):

vi /usr/local/prometheus/prometheus.yml

在最后一行添加如下信息:

  - job_name: 'nginx_tybg'

    file_sd_configs:

    - files: ['/usr/local/prometheus/sd_config/nginx.yml']

      refresh_interval: 5m

6)配置完成后重启prometheus服务:

kill -hup `ps -ef |grep prometheus|grep -v grep|awk '{print $2}'`

7)检查prometheus服务是否重启成功:ps -ef |grep prometheus


9.配置prometheus服务端(master)

1)登陆prometheus服务端(master):x.x.x.x

2)配置prometheus服务文件:

找到slave节点对应的区域,并在列表中添加监控组(如果监控组已经添加,无需操作

vi /usr/local/prometheus/prometheus.yml

3)完成后重启prometheus服务:

kill -hup `ps -ef |grep prometheus|grep -v grep|awk '{print $2}'`

4)检查prometheus服务是否重启成功:ps -ef |grep prometheus

 


10.登陆grafana检查否添加成功

1)登入服务器x.x.x.x,访问Grafana服务:http://x.x.x.x:3000

2)选择所有节点(all node),按照监控组(job)搜索,看是否添加成功:


11.配置alert告警分组

1)登入alertmanager服务器x.x.x.x,进入目录/usr/local/alertmanager

2)编辑告警的分区信息:vi /usr/local/alertmanager/robotKey.json

3)文件的内容如下:

文件中的格式为:“告警机器人名”:“企业机器人组key”

告警机器人名取自各个slave服务器下的文件,以slave节点x.x.x.x为例子:

比如cw分组:/usr/local/prometheus/sd_config/node_cw/node_cw.yml

alert:cw     #这个地方配置报警机器人的名字

配置好之后重启服务:kill -hup `ps -ef |grep prometheus|grep -v grep|awk '{print $2}'`

之后再回到alertmanager服务器x.x.x.x,添加配置到文件/usr/local/alertmanager/robotKey.json

{

    "oa": "cbe2866f-0d35-4064-b761-92321b665cf4",

    "sftp": "15bc15f7-be2e-4262-8a31-04cf1d83c557",

    "ziyan": "3c2f92ad-57c3-45fc-9c36-31ac5e6a0902",

    "zyspecial": "f085fee9-b61e-496d-950c-77008590f960",

    "cw": "8af4df90-7b1c-4cd9-838b-196e77790ddc",

    "mail": "91bbf9bf-ce6f-4c32-a998-c4242a76061d",

    "qywx": "d8ab1d94-cd23-4994-bcd6-c1154cb1c5bc",

    "oayq": "dca8487d-ce03-45e3-8fc5-9ab71cc1020f",

    "zz": "57fc5b51-b64e-4b8b-bbea-cd45fd9ca945",

    "yyzx": "83c108d6-696c-44f3-a9f6-d23acf837b39"

}

  1. 配置好文件后,查询并关闭alert相关的进程:ps -ef | grep alert

Kill -9 进程号 #关闭下图中框起来的进程,进程号会有所不同根据实际的情况进行关闭。

  1. 关闭进程后,重新读取robotkey的信息至alertmanager:

nohup python3 /usr/local/alertmanager/send_robot_data.py > /usr/local/alertmanager/logs/send_robot_data.out 2>&1 &

  1. 信息读取完毕后,重新开启报警监控程序alertmanager:

nohup /usr/local/alertmanager/alertmanager --log.level=debug > /usr/local/alertmanager/logs/alertmanager.out 2>&1 &

  1. 配置完成后,检验告警机器人是否生效,关闭job组中一台服务器上的node_exporter进程,并等待企业微信告警机器人对告警信息进行反馈,一般在10~30分钟会有报警提示:

关闭nginx_exporter命令为:systemctl stop node_exporter

确认nginx_exporter状态:systemctl status node_exporter

告警机器人截图:

确认好后,恢复相关的节点监控进程:systemctl start node_exporter

nginx监控统一安装脚本:

#安装安渡客户端
yum -y install wget
wget https://X.X.X.X/UniExServices/baseCfg/downloadLinuxClient.html --no-check-certificate
unzip downloadLinuxClient.html
cd linux-client/5.11/
chmod 755 *

#安装nginx及nginx监控探针
#进入安渡客户端目录

cd /root/linux-client/5.11/
./MiniFTClient -h X.X.X.X -u user -p passwd << EOF
get nginx-1.16.1.tar.gz
get nginx-module-vts.tar.gz
get nginx-vts-exporter.tar.gz
get nginx-sticky-module-ng.zip
exit
EOF
mv nginx-1.16.1.tar.gz /usr/local
mv nginx-module-vts.tar.gz /mnt
mv nginx-vts-exporter.tar.gz /mnt
mv nginx-sticky-module-ng.zip /mnt
cd /usr/local

#解压

tar -zxvf nginx-1.16.1.tar.gz
cd /mnt

#解压

unzip /mnt/nginx-sticky-module-ng.zip
tar -zxvf  nginx-module-vts.tar.gz
cd /usr/local/nginx-1.16.1/

#安装依赖库

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

#编译

./configure --user=root --group=root --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --add-module=/mnt/nginx-sticky-module-ng --add-module=/mnt/nginx-module-vts --with-stream --without-http_rewrite_module --with-pcre

#安装

make && make install

#检查版本

/usr/local/nginx/sbin/nginx -v

#安装nginx_exporter

cd /root/linux-client/5.11/
mv nginx-vts-exporter.tar.gz /mnt
cd /mnt
tar -zxvf nginx-vts-exporter.tar.gz
chmod 755 nginx-vts-exporter

#切换目录

cd /root/linux-client/5.11/
./MiniFTClient -h X.X.X.X -u user -p passwd << EOF
get supervisor_install_pack.tar.gz
exit
EOF

#安装

mkdir -p /app/supervisor/
mv supervisor_install_pack.tar.gz /app/supervisor/
cd /app/supervisor/
tar -zxvf supervisor_install_pack.tar.gz
cd supervisor/
sh install_supervisor.sh
cd /app/supervisor
sh run_supervisor.sh
#配置systemctl服务
cat >> /etc/systemd/system/supervisor.service << EOF
[Unit]
Description=supervisor
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /app/supervisor/etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
EOF
#配置结束

#supervisor服务自启动

systemctl enable supervisor.service
systemctl daemon-reload

#强制关闭supervisor服务

pkill -9 supervisor

#启动并查看supervisor服务

#systemctl start supervisor.service
#systemctl status supervisor.service

#停止NetworkManager服务:
systemctl stop NetworkManager
systemctl disable NetworkManager

#编辑配置脚本

cat >> /app/supervisor/etc/supervisord.conf << EOF
[program:nginx]
directory=/usr/local/nginx/sbin
command=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -g 'daemon off;'
#numprocs=6
autostart=true
autorestart=true
startsecs=1
priority=1
user=root
stopasgroup=true
killasgroup=true
stdout_logfile=/data/logs/supervisord/nginx.log
stderr_logfile=/data/logs/supervisord/nginx.err.log

[program:nginx_exporter]
directory=/mnt/nginx-vts-exporter
command=/mnt/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri=http://localhost:80/status/format/json
autostart=true
autorestart=true
startsecs=5
priority=1
user=root
stopasgroup=true
killasgroup=true
stdout_logfile=/data/logs/supervisord/nginx_exporter.log
stderr_logfile=/data/logs/supervisord/nginx_exporter.err.log
EOF
#完成配置nginx以及nginx_exporter

#创建日志目录,否则重启服务时会报错

mkdir -p /data/logs/supervisord

#重启服务

systemctl restart supervisor.service

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值