1. 首页 > 国产数据库教程 > OceanBase教程 > 正文

OceanBase教程FG123-OceanBase日志分析故障预警

本文档风哥主要介绍OceanBase日志分析故障预警,包括日志分析的概念与意义、故障预警的概念与意义、日志类型与结构、日志分析规划、故障预警规划、工具选型、日志分析实施方案、故障预警实施方案、与监控系统集成、实战案例等内容,风哥教程参考OceanBase官方文档日志管理、故障预警等内容编写,适合DBA人员和运维工程师在学习和工作中使用。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 日志分析的概念与意义

日志分析是指对OceanBase产生的日志进行收集、整理、分析和处理,以获取系统运行状态、故障信息和性能数据的过程。日志分析的意义包括:

  • 故障排查:通过分析日志,快速定位和解决系统故障
  • 性能优化:通过分析日志,发现系统性能瓶颈,进行优化
  • 安全审计:通过分析日志,检测和防止安全事件
  • 系统监控:通过分析日志,监控系统运行状态
  • 趋势分析:通过分析日志,预测系统发展趋势

1.2 故障预警的概念与意义

故障预警是指通过监控和分析系统运行状态,提前发现潜在的故障风险,并及时发出告警,以便运维人员采取措施预防故障发生的过程。故障预警的意义包括:

  • 预防故障:提前发现潜在故障,采取措施预防故障发生
  • 减少损失:避免故障对业务造成的损失
  • 提高可靠性:提高系统的可靠性和可用性
  • 降低运维成本:减少故障处理的人力和时间成本
  • 优化资源利用:合理分配和利用系统资源

1.3 日志类型与结构

OceanBase的日志类型包括:

  • 错误日志:记录系统错误信息,如启动失败、连接失败等
  • 审计日志:记录用户操作信息,如登录、权限变更等
  • 性能日志:记录系统性能信息,如查询执行时间、资源使用情况等
  • 业务日志:记录业务操作信息,如交易记录、订单处理等
  • 系统日志:记录系统运行状态,如进程启动、停止等

日志的基本结构包括:

  • 时间戳:日志产生的时间
  • 级别:日志的级别,如INFO、WARN、ERROR等
  • 模块:产生日志的模块
  • 内容:日志的具体内容
  • 上下文:日志的上下文信息,如线程ID、会话ID等

Part02-生产环境规划与建议

2.1 日志分析规划

日志分析规划的考虑因素:

  • 日志收集:确定需要收集的日志类型和范围
  • 存储方案:确定日志的存储方式和位置
  • 分析工具:选择合适的日志分析工具
  • 分析频率:确定日志分析的频率
  • 告警机制:建立日志分析的告警机制

推荐的日志分析规划:

  • 日志收集:收集所有类型的日志,包括错误日志、审计日志、性能日志等
  • 存储方案:使用ELK Stack(Elasticsearch、Logstash、Kibana)存储和分析日志
  • 分析频率:实时分析关键日志,定期分析历史日志
  • ,风哥提示:。

  • 告警机制:建立基于日志分析的告警机制,当发现异常时及时告警

2.2 故障预警规划

故障预警规划的考虑因素:

  • 预警指标:确定需要监控的预警指标
  • 预警阈值:设置合理的预警阈值
  • 预警方式:选择合适的预警方式,如邮件、短信、微信等
  • 预警级别:设置预警的级别,如警告、严重、紧急等
  • 预警处理流程:建立预警处理流程,确保预警得到及时处理

推荐的故障预警规划:

  • 预警指标:包括系统资源使用率、查询执行时间、错误率等
  • 预警阈值:根据历史数据和业务需求设置合理的阈值
  • 预警方式:使用多种预警方式,确保预警能够及时送达
  • 预警级别:设置多级预警,根据预警的严重程度采取不同的处理措施
  • 预警处理流程:建立标准化的预警处理流程,确保预警得到及时处理

2.3 工具选型

日志分析和故障预警的工具选型:

  • 日志收集工具:
    • Logstash:收集和处理日志
    • Filebeat:轻量级日志收集工具
    • Flume:分布式日志收集系统
    • ,学习交流加群风哥微信: itpux-com。

  • 日志存储工具:
    • Elasticsearch:分布式搜索引擎,用于存储和检索日志
    • ClickHouse:列式数据库,用于存储和分析日志
    • InfluxDB:时序数据库,用于存储和分析时间序列数据
  • 日志分析工具:
    • Kibana:可视化日志分析工具
    • Grafana:监控和可视化工具
    • Graylog:日志管理和分析平台
  • 故障预警工具:
    • Prometheus:监控和告警系统
    • Zabbix:监控和告警系统
    • Nagios:监控和告警系统

Part03-生产环境项目实施方案

3.1 日志分析实施方案

3.1.1 日志分析实施步骤

# 日志分析实施方案

## 1. 环境准备
– 安装ELK Stack:
– 安装Elasticsearch:
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.0-linux-x86_64.tar.gz
$ tar -xzf elasticsearch-7.17.0-linux-x86_64.tar.gz
$ mv elasticsearch-7.17.0 /ob/elasticsearch,学习交流加群风哥QQ113257174。

– 安装Logstash:
$ wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.0-linux-x86_64.tar.gz
$ tar -xzf logstash-7.17.0-linux-x86_64.tar.gz
$ mv logstash-7.17.0 /ob/logstash

– 安装Kibana:
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.0-linux-x86_64.tar.gz
$ tar -xzf kibana-7.17.0-linux-x86_64.tar.gz
$ mv kibana-7.17.0-linux-x86_64 /ob/kibana

## 2. 配置ELK Stack
– 配置Elasticsearch:
$ cat > /ob/elasticsearch/config/elasticsearch.yml << 'EOF' cluster.name: oceanbase-log node.name: node-1 path.data: /ob/elasticsearch/data path.logs: /ob/elasticsearch/logs network.host: 0.0.0.0 http.port: 9200 EOF - 配置Logstash: $ cat > /ob/logstash/config/logstash.conf << 'EOF' input { file { path => “/ob/logs/oceanbase/*.log”
start_position => “beginning”
sincedb_path => “/ob/logstash/sincedb”
}
}

filter {
grok {
match => {
“message” => “%{TIMESTAMP_ISO8601:timestamp} \[%{LOGLEVEL:level}\] \[%{DATA:module}\] %{GREEDYDATA:content}”
}
}
date {
match => [“timestamp”, “yyyy-MM-dd HH:mm:ss.SSS”]
target => “@timestamp”,更多视频教程www.fgedu.net.cn。
}
}

output {
elasticsearch {
hosts => [“localhost:9200”]
index => “oceanbase-log-%{+YYYY.MM.dd}”
}
}
EOF

– 配置Kibana:
$ cat > /ob/kibana/config/kibana.yml << 'EOF' server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"] EOF ## 3. 启动服务 - 启动Elasticsearch: $ cd /ob/elasticsearch $ bin/elasticsearch -d - 启动Logstash: $ cd /ob/logstash $ bin/logstash -f config/logstash.conf & - 启动Kibana: $ cd /ob/kibana $ bin/kibana & ## 4. 配置日志收集 - 配置OceanBase日志: $ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e "ALTER SYSTEM SET log_level = 'INFO' TENANT 'sys';" $ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e "ALTER SYSTEM SET log_dir = '/ob/logs/oceanbase' TENANT 'sys';" - 配置日志轮转: $ cat > /etc/logrotate.d/oceanbase << 'EOF' /ob/logs/oceanbase/*.log {,更多学习教程公众号风哥教程itpux_com。 daily rotate 7 compress delaycompress missingok postrotate systemctl restart oceanbase endscript } EOF ## 5. 测试验证 - 访问Kibana: - 浏览器访问:http://服务器IP:5601 - 创建索引模式:oceanbase-log-* - 查看日志数据 - 验证日志分析: - 搜索错误日志 - 分析性能日志 - 查看系统状态

3.2 故障预警实施方案

3.2.1 故障预警实施步骤

# 故障预警实施方案

## 1. 环境准备,from DB视频:www.itpux.com。
– 安装Prometheus和Grafana:
– 安装Prometheus:
$ wget https://github.com/prometheus/prometheus/releases/download/v2.40.0/prometheus-2.40.0.linux-amd64.tar.gz
$ tar -xzf prometheus-2.40.0.linux-amd64.tar.gz
$ mv prometheus-2.40.0.linux-amd64 /ob/prometheus

– 安装Grafana:
$ wget https://github.com/grafana/grafana/releases/download/v9.3.6/grafana-9.3.6.linux-amd64.tar.gz
$ tar -xzf grafana-9.3.6.linux-amd64.tar.gz
$ mv grafana-9.3.6.linux-amd64 /ob/grafana

## 2. 配置Prometheus
– 配置Prometheus:
$ cat > /ob/prometheus/prometheus.yml << 'EOF' global: scrape_interval: 15s scrape_configs: - job_name: 'oceanbase' static_configs: - targets: ['192.168.1.10:9100', '192.168.1.11:9100', '192.168.1.12:9100'] - job_name: 'node_exporter' static_configs: - targets: ['192.168.1.10:9100', '192.168.1.11:9100', '192.168.1.12:9100'] EOF - 配置告警规则: $ cat > /ob/prometheus/rules/oceanbase_rules.yml << 'EOF' groups: - name: oceanbase_alerts rules: - alert: HighCpuUsage expr: (100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High CPU usage detected”
description: “CPU usage is above 80% for 5 minutes”

– alert: HighMemoryUsage
expr: (node_memory_MemTotal_bytes – node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High memory usage detected”
description: “Memory usage is above 80% for 5 minutes”

– alert: HighDiskUsage
expr: (node_filesystem_size_bytes{mountpoint=”/ob”} – node_filesystem_free_bytes{mountpoint=”/ob”}) / node_filesystem_size_bytes{mountpoint=”/ob”} * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High disk usage detected”
description: “Disk usage is above 80% for 5 minutes”

– alert: OceanBaseDown
expr: up{job=”oceanbase”} == 0
for: 1m
labels:
severity: critical
annotations:
summary: “OceanBase instance down”
description: “OceanBase instance is down”
EOF

## 3. 配置告警管理器
– 安装Alertmanager:
$ wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
$ tar -xzf alertmanager-0.24.0.linux-amd64.tar.gz
$ mv alertmanager-0.24.0.linux-amd64 /ob/alertmanager

– 配置Alertmanager:
$ cat > /ob/alertmanager/alertmanager.yml << 'EOF' global: resolve_timeout: 5m route: group_by: ['alertname'] group_wait: 30s group_interval: 5m repeat_interval: 1h receiver: 'email' receivers: - name: 'email' email_configs: - to: 'admin@fgedu.net.cn' from: 'alertmanager@fgedu.net.cn' smarthost: 'smtp.fgedu.net.cn:25' auth_username: 'alertmanager' auth_password: 'password' require_tls: false EOF ## 4. 启动服务 - 启动Prometheus: $ cd /ob/prometheus $ ./prometheus --config.file=prometheus.yml --storage.tsdb.path=/ob/prometheus/data & - 启动Alertmanager: $ cd /ob/alertmanager $ ./alertmanager --config.file=alertmanager.yml & - 启动Grafana: $ cd /ob/grafana $ ./bin/grafana-server --homepath=/ob/grafana & ## 5. 配置Grafana - 访问Grafana: - 浏览器访问:http://服务器IP:3000 - 登录:admin/admin - 添加数据源:Prometheus - 创建仪表盘:OceanBase监控 ## 6. 测试验证 - 模拟故障: - 增加系统负载:stress --cpu 8 --io 4 --vm 2 --vm-bytes 1G --timeout 60s - 查看告警:访问Alertmanager界面 - 查看Grafana仪表盘:验证监控数据

3.3 与监控系统集成

3.3.1 与监控系统集成步骤

# 与监控系统集成

## 1. 集成Prometheus
– 配置OceanBase导出器:
– 安装node_exporter:
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
$ tar -xzf node_exporter-1.3.1.linux-amd64.tar.gz
$ mv node_exporter-1.3.1.linux-amd64 /ob/node_exporter

– 启动node_exporter:
$ cd /ob/node_exporter
$ ./node_exporter &

– 配置Prometheus监控OceanBase:
– 安装OceanBase导出器:
$ git clone https://github.com/oceanbase/ob_exporter.git
$ cd ob_exporter
$ make
$ ./ob_exporter –config.file=config.yml &

## 2. 集成Zabbix
– 安装Zabbix Agent:
$ yum install -y zabbix-agent
$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent

– 配置Zabbix Agent:
$ cat > /etc/zabbix/zabbix_agentd.conf << 'EOF' Server=192.168.1.20 ServerActive=192.168.1.20 Hostname=oceanbase-server-1 EOF - 重启Zabbix Agent: $ systemctl restart zabbix-agent - 在Zabbix服务器中添加主机: - 登录Zabbix管理界面 - 配置 → 主机 → 创建主机 - 输入主机名称和IP地址 - 关联模板:Template OS Linux ## 3. 集成ELK Stack - 配置Logstash收集Zabbix告警: $ cat > /ob/logstash/config/zabbix.conf << 'EOF' input { zabbix { host => “0.0.0.0”
port => 10051
}
}

output {
elasticsearch {
hosts => [“localhost:9200”]
index => “zabbix-alert-%{+YYYY.MM.dd}”
}
}
EOF

– 启动Logstash:
$ cd /ob/logstash
$ bin/logstash -f config/zabbix.conf &

– 在Kibana中创建Zabbix告警仪表盘:
– 登录Kibana
– 管理 → 索引模式 → 创建索引模式:zabbix-alert-*
– 可视化 → 创建可视化:Zabbix告警统计

## 4. 集成告警平台
– 集成企业微信:
– 配置Alertmanager:
$ cat > /ob/alertmanager/alertmanager.yml << 'EOF' global: resolve_timeout: 5m route: group_by: ['alertname'] group_wait: 30s group_interval: 5m repeat_interval: 1h receiver: 'wechat' receivers: - name: 'wechat' wechat_configs: - corp_id: 'your_corp_id' api_url: 'https://qyapi.weixin.qq.com/cgi-bin/' to_party: '1' agent_id: '1000002' api_secret: 'your_api_secret' message: '{{ template "wechat.default.message" . }}' EOF - 集成短信告警: - 配置Alertmanager: $ cat > /ob/alertmanager/alertmanager.yml << 'EOF' global: resolve_timeout: 5m route: group_by: ['alertname'] group_wait: 30s group_interval: 5m repeat_interval: 1h receiver: 'sms' receivers: - name: 'sms' webhook_configs: - url: 'http://localhost:8080/sms' send_resolved: true EOF ## 5. 测试验证 - 触发告警: - 模拟系统负载 - 查看告警信息:企业微信、短信 - 查看监控仪表盘:Grafana、Kibana

Part04-生产案例与实战讲解

4.1 日志分析实战案例

# 日志分析实战案例

## 案例背景
– 生产环境:3节点OceanBase集群
– 业务类型:电商业务
– 问题:系统响应缓慢,需要通过日志分析定位问题

## 实施步骤

### 1. 日志收集与分析
– 配置ELK Stack:
– 安装Elasticsearch、Logstash、Kibana
– 配置Logstash收集OceanBase日志
– 启动服务

– 分析日志:
– 登录Kibana
– 创建索引模式:oceanbase-log-*
– 搜索错误日志:
– 关键词:ERROR
– 时间范围:最近1小时

– 发现问题:
– 日志中出现大量慢查询:
[2026-01-01 10:00:00.000] [ERROR] [SQL] Slow query: SELECT * FROM fgedu_order WHERE user_id = 123456
– 执行时间:10秒

### 2. 问题定位与解决
– 分析慢查询原因:
– 检查表结构:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “DESCRIBE fgedu_order;”
– 检查索引:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SHOW INDEX FROM fgedu_order;”
– 发现问题:user_id字段没有索引

– 解决方案:
– 创建索引:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “CREATE INDEX idx_user_id ON fgedu_order(user_id);”
– 验证索引:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SHOW INDEX FROM fgedu_order;”

### 3. 验证结果
– 再次执行查询:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM fgedu_order WHERE user_id = 123456;”
– 执行时间:0.1秒

– 分析日志:
– 登录Kibana
– 搜索慢查询:
– 关键词:Slow query
– 时间范围:最近1小时
– 结果:慢查询消失

## 案例总结
– 成功通过日志分析定位了系统响应缓慢的问题
– 发现并解决了慢查询问题,通过创建索引提高了查询性能
– 验证了日志分析在故障排查中的重要作用
– 建立了日志分析的流程和方法

4.2 故障预警实战案例

# 故障预警实战案例

## 案例背景
– 生产环境:3节点OceanBase集群
– 业务类型:金融核心业务
– 需求:建立故障预警机制,提前发现和处理潜在故障

## 实施步骤

### 1. 预警配置
– 安装Prometheus和Grafana:
– 安装Prometheus、Alertmanager、Grafana
– 配置Prometheus监控OceanBase
– 配置告警规则

– 配置预警指标:
– CPU使用率:超过80%告警
– 内存使用率:超过80%告警
– 磁盘使用率:超过80%告警
– OceanBase实例状态:Down告警

### 2. 预警测试
– 模拟故障:
– 增加系统负载:stress –cpu 8 –io 4 –vm 2 –vm-bytes 1G –timeout 60s
– 查看告警:
– 访问Alertmanager界面:http://服务器IP:9093
– 查看Grafana仪表盘:http://服务器IP:3000

– 验证预警:
– 收到CPU使用率告警邮件
– Grafana仪表盘中CPU使用率超过80%
– 系统负载恢复后,告警自动解除

### 3. 预警处理
– 收到告警后,运维人员立即响应:
– 登录系统查看负载情况
– 分析负载原因:发现是批量任务导致
– 调整批量任务执行时间:改到低峰期执行

– 验证处理结果:
– 系统负载恢复正常
– 告警解除
– 批量任务在低峰期执行,不影响业务

## 案例总结
– 成功建立了故障预警机制,提前发现和处理了潜在故障
– 预警配置合理,能够及时发现系统异常
– 预警处理流程顺畅,能够快速响应和处理告警
– 验证了故障预警在系统运维中的重要作用

4.3 与监控系统集成实战案例

# 与监控系统集成实战案例

## 案例背景
– 生产环境:5节点OceanBase集群
– 业务类型:电商业务
– 需求:集成ELK Stack和Prometheus,实现日志分析和故障预警的统一管理

## 实施步骤

### 1. 系统集成
– 安装并配置ELK Stack:
– 安装Elasticsearch、Logstash、Kibana
– 配置Logstash收集OceanBase日志
– 启动服务

– 安装并配置Prometheus:
– 安装Prometheus、Alertmanager、Grafana
– 配置Prometheus监控OceanBase
– 配置告警规则

– 集成Grafana和Kibana:
– 在Grafana中添加Elasticsearch数据源
– 创建统一的监控仪表盘,包含日志分析和性能监控

### 2. 统一监控
– 登录Grafana:
– 浏览器访问:http://服务器IP:3000
– 查看统一监控仪表盘
– 监控指标包括:
– 系统资源使用率(CPU、内存、磁盘)
– OceanBase性能指标(QPS、TPS、响应时间)
– 日志分析结果(错误率、慢查询)

– 配置统一告警:
– 配置Prometheus告警规则
– 配置Alertmanager告警方式(邮件、企业微信)
– 测试告警发送

### 3. 实战应用
– 监控系统运行状态:
– 实时监控系统资源使用率
– 实时监控OceanBase性能指标
– 实时分析日志数据

– 故障预警:
– 当系统资源使用率超过阈值时,触发告警
– 当OceanBase性能指标异常时,触发告警
– 当日志中出现错误时,触发告警

– 故障处理:
– 收到告警后,查看统一监控仪表盘
– 分析故障原因
– 采取相应的处理措施
– 验证处理结果

## 案例总结
– 成功集成了ELK Stack和Prometheus,实现了日志分析和故障预警的统一管理
– 建立了统一的监控仪表盘,便于直观查看系统状态
– 配置了统一的告警机制,确保故障能够及时发现和处理
– 验证了系统集成在提高运维效率中的重要作用

Part05-风哥经验总结与分享

5.1 日志分析最佳实践

日志分析的最佳实践:

  • 统一收集:集中收集所有类型的日志,确保日志的完整性
  • 结构化存储:使用Elasticsearch等工具存储日志,便于检索和分析
  • 实时分析:实时分析关键日志,及时发现和处理问题
  • 定期分析:定期分析历史日志,发现系统趋势和潜在问题
  • 告警机制:建立基于日志分析的告警机制,当发现异常时及时告警
  • 可视化:使用Kibana等工具可视化日志分析结果,便于理解和决策
  • 自动化:自动化日志分析流程,减少人工干预
  • 持续优化:根据业务需求和系统变化,持续优化日志分析策略

5.2 故障预警最佳实践

故障预警的最佳实践:

  • 全面监控:监控系统的各个方面,包括资源使用率、性能指标、日志数据等
  • 合理阈值:根据历史数据和业务需求设置合理的预警阈值
  • 多级预警:设置多级预警,根据预警的严重程度采取不同的处理措施
  • 多渠道告警:使用多种告警方式,确保预警能够及时送达
  • 自动化处理:对于常见的预警,实现自动化处理,减少人工干预
  • 定期演练:定期进行预警演练,提高运维人员的应急处理能力
  • 持续优化:根据预警的实际效果,持续优化预警策略
  • 知识积累:积累预警处理经验,建立预警处理知识库

5.3 常见问题与解决方案

常见问题与解决方案:

  • 日志收集不完整:
    • 原因:日志配置不当,日志轮转设置不合理
    • 解决方案:检查日志配置,调整日志轮转设置
  • 日志分析效率低:
    • 原因:日志量大,分析工具配置不当
    • 解决方案:优化分析工具配置,使用索引和过滤
  • 预警误报:
    • 原因:预警阈值设置不合理,监控指标选择不当
    • 解决方案:调整预警阈值,选择合适的监控指标
  • 预警漏报:
    • 原因:监控覆盖不全,预警规则设置不当
    • 解决方案:完善监控覆盖,优化预警规则
  • 告警处理不及时:
    • 原因:告警渠道不畅,处理流程不明确
    • 解决方案:优化告警渠道,建立明确的处理流程
风哥提示:日志分析和故障预警是OceanBase运维的重要组成部分,合理的日志分析和故障预警机制可以帮助运维人员及时发现和处理系统问题,提高系统的可靠性和可用性。建议DBA人员和运维工程师掌握日志分析和故障预警的方法和技巧,根据业务需求和系统特点,建立完善的日志分析和故障预警体系,确保系统的稳定运行和可持续发展。学习交流加群风哥微信: itpux-com

日志分析和故障预警建议:在实施日志分析和故障预警时,要选择合适的工具和技术栈,确保系统的可扩展性和可靠性。同时,要建立完善的监控和告警体系,及时发现和处理系统问题,定期优化日志分析和故障预警策略,确保系统能够满足业务需求的变化。更多学习教程公众号风哥教程itpux_com

风哥提示:日志分析和故障预警是一个持续的过程,需要不断地优化和改进。建议建立日志分析和故障预警的长效机制,包括定期的日志分析、预警演练和经验总结,不断提高系统的可靠性和可用性,为业务的稳定运行提供保障。from OceanBase视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息