文章目录
1.Prometheus(普罗米修斯)安装部署
Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上, Prometheus性能足够支撑上万台规模的集群。
官网:https://prometheus.io/
1.1部署环境准备
部署环境信息:
操作系统版本:Cetnos7.9
IP地址主机名身份192.168.0.123prometheusprometheus服务器192.168.0.124grafanagrafana服务器192.168.0.125client被监控客户端
关闭防火墙:
3台主机都执行以下命令:
systemctl stop firewalld
关闭防火墙
systemctl disable firewalld
开机禁止防火墙启动
关闭selinux:
3台主机都执行命令:
setenforce 0
然后将/etc/selinux/config里的参数SELINUX=enforcing修改为SELINUX=disabled,永久关闭selinux
修改主机名:
3台主机各自修改成对应主机名:
hostnamectl set-hostname hostname
1.2部署prometheus
下载安装包:
地址:https://prometheus.io/download/
上传安装包:
将prometheus-2.40.1.linux-amd64.tar.gz安装包上传至192.168.0.123服务器
解压并启动prometheus:
以下命令按顺序执行,解压安装包 -> 修改文件夹名字 -> 启动prometheus
tar xf prometheus-2.40.1.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-2.40.1.linux-amd64/ /usr/local/prometheus
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml"&
检查prometheus监听是否正常,默认端口9090
netstat-an|grep9090
1.3主机数据展示
通过http://192.168.0.123:9090/访问prometheus
默认可以查看到已监控本机
菜单Status -> Targets
通过浏览器访问http://192.168.0.123:9090/metrics可以查看监控数据
在WEB界面首页可以通过关键字搜索查询监控项
2.Grafana安装部署
Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警
2.1部署Grafana
下载安装包:
地址:
https://dl.grafana.com/enterprise/release/grafana-enterprise-9.2.4-1.x86_64.rpm
上传安装包:
将grafana-enterprise-9.2.4-1.x86_64.rpm安装包上传至192.168.0.124服务器
安装grafana:
进入安装包所在目录,执行命令
rpm -ivh grafana-enterprise-9.2.4-1.x86_64.rpm
完成grafana安装
注意!安装过程有可能会提示缺少依赖包,如果报错则需要先配置yum源将相关依赖包安装上再继续安装grafana-enterprise-9.2.4-1.x86_64.rpm
yum install fontconfig
yum install urw-fonts
rpm-ivh grafana-enterprise-9.2.4-1.x86_64.rpm
启动grafana:
执行命令:
systemctl start grafana-server
启动grafana服务
systemctl enable grafana-server
开机自动启动grafana
检查grafana监听是否正常,默认端口3000
netstat-an|grep3000
2.2配置Grafana数据源
通过浏览器访问 http://192.168.0.124:3000/就到了登录界面,使用默认的admin用户,admin密码登陆。登录后需要修改默认密码
登录后把prometheus服务器收集的数据作为一个数据源添加到grafana,让grafana可以得到prometheus的数据
(1)从左侧导航栏找到Data sources菜单
(2)进入菜单后点击增加数据源,数据源选择prometheus
(3)进入prometheus配置后有两个必填的配置,分别是数据源名称和prometheus的访问地址,prometheus的ip和端口。配置完成后在页面最下方点击Save & test保存
2.2配置Grafana仪表板
配置完数据源后,grafana接收到prometheus的数据需要使用仪表板展示,仪表板可自定义或导入模板,grafana官网也有非常多类型的模板供下载
(1)从左侧导航栏找到新建仪表板,选择添加一个面板
(2)进入新建面板后选择prometheus数据源,需要展示的数据项在Metric里选择,配置完成后可在面板看到数据展示
(3)导入模板方式,从左侧导航栏找到导入,导入模板可本地上传或者直接从官网下载导入(输入模板的ID或完整的链接,但需要有互联网),以下就是模板的完整链接,标红的为模板ID。
https://grafana.com/grafana/dashboards/7362-mysql-overview/?tab=revisions
使用两种方式的其中一种导入模板后就会出现以下界面,这里演示模板名称和文件夹都为默认,数据源就选择2.2章节配置的prometheus,然后导入
从左侧导航栏找到Browse,进入后即可找到刚刚导入的模板
点击该模板可以查看仪表板效果,因为本章节仅演示模板导入,没有配置对应数据源,所以仪表板有没有数据展示
仪表板模板可以在以下地址下载
https://grafana.com/grafana/dashboards/
3.AlertManager安装部署
3.1部署alertmanager
Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;告警方式可以按照不同的规则发送给不同的模块负责人,Alertmanager支持Email, Slack,等告警方式, 也可以通过webhook接入钉钉等国内IM工具。
下载安装包:
地址:https://prometheus.io/download/#alertmanager
按操作系统类型选择需要的安装包
上传安装包:
将alertmanager-0.24.0.linux-amd64.tar.gz安装包上传至192.168.0.123服务器
安装alertmanager:
进入安装包所在目录,执行以下命令完成alertmanager部署
tar zxf alertmanager-0.24.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/alertmanager-0.24.0.linux-amd64/ /usr/local/alertmanager
3.2告警邮件发送配置
编辑alertamanger配置文件:
vim /usr/local/alertmanager/alertmanager.yml
global:
smtp_smarthost: 'smtp.xxx.com:25'#告警邮件发送者SMTP地址
smtp_from: '[email protected]'#发件者邮箱
smtp_auth_username: '[email protected]'#邮箱账号
smtp_auth_password: 'password'#邮箱专用授权码,不是邮箱登陆密码
smtp_require_tls: false#关闭tls授权
route: #定义告警路由规则,可以定义多个receiver和group实现告警分组
group_by: ['rabbitmq_alerts']#根据告警规则组名进行分组
group_wait: 30s #分组内第一个告警等待时间,30s内如有第二个告警会合并成一个
group_interval: 5m #发送新告警的间隔时间
repeat_interval: 10m #重复告警间隔发送时间
receiver: 163#默认接收者
routes: #子路由,不满足子路由的都走默认路由
- match: #普通匹配
severity: critical #告警等级
receiver: brilliance #匹配critical告警的接收者
- match_re: #正则匹配
severity: ^(warning|critical)$ #告警等级
receiver: qq #匹配warning或critical告警的接收者
receivers: #定义三个接受者,和上面三个路由对应
- name: 'outlook'#和上面route部分中的receiver一致
email_configs: #接收器为email,除此还有其他接收器可以使用
- to: '[email protected]'#告警邮件发送对象
send_resolved: true#接收告警恢复邮件
- name: '163'
email_configs:
- to: '[email protected]'
- name: 'qq'
email_configs:
- to: '[email protected]'
修改完成后使用amtool检查alertmanager.yml是否存在语法错误,显示SUCCESS表示无误
/usr/local/alertmanager/amtool check-config /usr/local/alertmanager/alertmanager.yml
启动alertmanager服务
执行命令启动alertmanager
/usr/local/alertmanager/alertmanager --config.file /usr/local/alertmanager/alertmanager.yml &
检查alertmanager监听是否正常,默认端口9093
netstat-anp|grep9093
编辑prometheus配置文件:
增加和修改prometheus.yml的alertmanager部分,让alertmanger能与Prometheus通信,其它原有配置不动
vim /usr/local/prometheus/prometheus.yml
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.0.123:9093 #修改成alertmanager服务器的ip和端口
rule_files: #指定告警规则的配置路径
- "rules/*.yml"
scrape_configs: #接收alertmanager的数据
- job_name: 'alertmanager'
static_configs:
- targets: ['192.168.0.123:9093']
编辑具体告警规则配置文件:
在/usr/local/prometheus/路径建立rules文件夹
mkdir-p /usr/local/prometheus/rules
新建具体告警规则配置文件,这里以rabbitmq策略作为例子
vim /usr/local/prometheus/rules/rabbitmq_alert.yml
groups:
- name: rabbitmq_alerts #告警分组,一个组下的告警会整合在一个邮件中
rules:
- alert: Rabbitmq服务状态监测 #定义告警事件名
expr: rabbitmq_up{job='rabbitmq'}!=1#告警触发的条件
for:1m #事件持续时长,0的话代表一满足就触发
labels:
severity: critical #定义了一个标签用于告警分组
annotations: #邮件中的显示内容,可以引用变量
summary: "Instance {{ $labels.instance }} critical alert"#summary概要信息
description: "Instance: {{ $labels.instance }} is Down! 请尽快处理告警"#description详细信息
配置完成后重启prometheus
ps-ef|grep prometheus |grep-vgrep|awk'{print $2}'|xargskill-9#杀死进程
/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &#启动服务
3.3测试邮件告警效果
在3.2章节当中配置了一条告警策略为rabbitmq服务没启动即触发告警,下面就关闭rabbitmq服务后检查是否能够收到告警邮件
关停192.168.0.125的rabbitmq服务
systemctl stop rabbitmq-server
在Grafana可以看到rabbitmq服务状态已经为down
打开邮件看到已成功接收到告警邮件,红框部分就是告警规则中的自定义内容
启动192.168.0.125的rabbitmq服务
systemctl start rabbitmq-server
当服务恢复后可以接收到告警恢复的邮件
3.4自定义邮件告警模板
配置邮件模板:
首先在Alertmanager主目录下创建一个templates文件夹,用户存放模板文件,然后创建一个email.tmpl文件,写入以下内容
mkdir-p /usr/local/alertmanager/templates
vim /usr/local/alertmanager/templates/email.tmpl
{{ define "email.html"}}{{- if gt (len .Alerts.Firing)0 -}}{{- range $index, $alert := .Alerts -}}======== 异常告警 ========<br>
告警名称:{{$alert.Labels.alertname }}<br>
告警级别:{{$alert.Labels.severity }} 级 <br>
告警机器:{{$alert.Labels.instance }}{{$alert.Labels.device }}<br>
告警主题:{{$alert.Annotations.summary }}<br>
告警详情:{{$alert.Annotations.description }}<br>
告警时间:{{($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05"}}<br>========== END =========={{- end }}{{- end }}{{- if gt (len .Alerts.Resolved)0 -}}{{- range $index, $alert := .Alerts -}}======== 告警恢复 ========<br>
告警名称:{{$alert.Labels.alertname }}<br>
告警级别:{{$alert.Labels.severity }} 级 <br>
告警机器:{{$alert.Labels.instance }}{{$alert.Labels.device }}<br>
告警主题:{{$alert.Annotations.summary }}<br>
告警详情:{{$alert.Annotations.description }}<br>
告警时间:{{($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05"}}<br>
恢复时间:{{($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05"}}<br>========== END =========={{- end }}{{- end }}{{- end }}
在alertmanager.yml中添加模板扫描,及邮件使用模板
vim /usr/local/alertmanager/alertmanager.yml
templates: #配置自定义模板位置
- 'templates/*.tmpl'
receivers:
- name: 'brilliance'
email_configs:
- to: '[email protected]'
html: '{{ template "email.html" . }}'#为接收者指定邮件使用模板
send_resolved: true
测试模板告警效果:
关停192.168.0.125的rabbitmq服务,测试告警内容显示效果
systemctl stop rabbitmq-server
启动192.168.0.125的rabbitmq服务,测试告警恢复内容显示效果
systemctl start rabbitmq-server
3.5钉钉接收告警配置
创建钉钉机器人:
【电脑端钉钉 】-【群聊】-【群设置】-【智能群助手】-【添加更多】-【添加机器人】-【自定义】-【添加】,编辑机器人名称和选择添加的群组,勾选加签,将生成的秘钥复制出来。
生成一个Webhook,将地址复制出来
部署prometheus-webhook-dingtalk:
alertmanager的webhook集成了钉钉报警,所以他是本来就有的。但是钉钉对格式要求很严格,一会还需要使用插件进行格式转换。prometheus-webhook-dingtalk是Prometheus AlertManager WebHooks生成钉钉通知工具。
下载安装包:
地址:https://github.com/timonwong/prometheus-webhook-dingtalk/releases/
按操作系统类型选择需要的安装包
上传安装包:
将prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar安装包上传至192.168.0.123服务器
安装prometheus-webhook-dingtalk:
进入安装包所在目录,执行以下命令完成prometheus-webhook-dingtalk部署
tar zxvf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-webhook-dingtalk-2.1.0.linux-amd64/ /usr/local/prometheus-webhook-dingtalk
修改prometheus-webhook-dingtalk配置:
新建/usr/local/prometheus-webhook-dingtalk/config.yml,添加以下配置
vim /usr/local/prometheus-webhook-dingtalk/config.yml
targets:
ding_webhook:
# 钉钉webhook地址
url: https://oapi.dingtalk.com/robot/send?access_token=a8axxxxxxxxxxx
# 创建机器人时获取到的加签秘钥
secret: SEC8bd85xxxxxxxxxxxxx
编辑alertmanager.yml配置文件,添加路由和接受者配置,注意url填写钉钉插件提供的webhook地址,而不是钉钉直接提供的那个webhook。
vim /usr/local/alertmanager/alertmanager.yml
route:
#设置默认接收人
receiver: 'webhook'#组告警等待时间。也就是告警产生后等待10s,如果有同组告警一起发出
group_wait: 10s
#两组告警的间隔时间
group_interval: 10s
#重复告警的间隔时间,减少相同微信告警的发送频率
repeat_interval: 30s
#采用哪个标签来作为分组依据
group_by: [alertname]
routes:
- receiver: webhook
#配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式
receivers:
- name: 'webhook'
webhook_configs:
#钉钉插件提供的webhook地址
- url: http://192.168.0.123:8060/dingtalk/ding_webhook/send
#警报被解决之后是否通知
send_resolved: true
启动prometheus-webhook-dingtalk服务:
/usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus-webhook-dingtalk/config.yml &
检查prometheus-webhook-dingtalk监听是否正常,默认端口8060
netstat-anp|grep8060
3.6测试钉钉接收告警效果
同样使用3.2章节当中配置的rabbitmq告警策略触发告警,下面就关闭rabbitmq服务后检查钉钉是否能够收到告警信息
关停192.168.0.125的rabbitmq服务
systemctl stop rabbitmq-server
在钉钉成功接收到告警信息
启动192.168.0.125的rabbitmq服务
systemctl start rabbitmq-server
服务恢复后钉钉收到告警恢复信息
4.Redis服务监控
4.1部署redis_exporter
redis_exporter是用于redis指标的Prometheus导出器。用来监控redis服务,并且使用prometheus收集数据,最后再通过grafana展示相关告警数据。redis_exporter部署在哪台服务器上都是可以的,因为之后会在启动redis_exporter的时候配置所要监控的redis的连接地址。这里直接将redis_exporter部署在安装了Redis Server的服务器(192.168.0.125)上。
下载安装包:
地址:https://github.com/oliver006/redis_exporter/releases/
按操作系统类型选择需要的安装包
上传安装包:
将redis_exporter-v1.45.0.linux-amd64.tar.gz安装包上传至192.168.0.125服务器
安装redis_exporter:
进入安装包所在目录,执行以下命令完成redis_exporter部署
tar -zxf redis_exporter-v1.45.0.linux-amd64.tar.gz
解压安装包
mv redis_exporter-v1.45.0.linux-amd64 /usr/local/redis_exporter
改名和变更路径
启动redis_exporter:
可以通过
./redis_exporter --help
命令查看各个参数的含义,比较常用的参数如下 :
-redis.addr string:Redis实例的地址,可以使一个或者多个,多个节点使用逗号分隔,默认为 “redis://localhost:6379”
-redis.password string:Redis实例的密码
-web.listen-address string:服务监听的地址,默认为 0.0.0.0:9121
执行以下命令启动redis_exporter服务
/usr/local/redis_exporter/redis_exporter -redis.addr192.168.0.125:6379 -redis.password password &
检查grafana监听是否正常,默认端口9121
netstat-anp|grep9121
4.2 prometheus添加监控目标
需要把redis_exporter监控添加到prometheus服务器(192.168.0.123)中
vim /usr/local/prometheus/prometheus.yml
编辑prometheus配置文件并添加以下配置
- job_name: 'redis'
static_configs:
- targets: ['192.168.0.125:9121']#redis_exporter的ip+端口
修改配置后重启prometheus
ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9
杀死进程
/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &
启动服务
重启后可以看到prometheus已与redis_exporter建立了连接
netstat-anp|grep9121
在prometheus页面可以看到新添加的redis监控目标
4.3添加Redis Grafana模板
在Grafana的官方网站上可以找到比较好用的Redis的仪表板模板,直接用模板地址导入即可。
(1)导入redis仪表板模板,这里使用本地上传方式
模板名称和文件夹都为默认,数据源就选择prometheus,然后导入
(2)导入模板后就可以看到仪表板的效果,采集到的redis数据也能正常展示
5.Rabbitmq服务监控
5.1部署rabbitmq_exporter
Rebbitmq_Exporter是RabbitMQ指标的Prometheus导出器。数据由prometheus抓取。
下载安装包:
地址:https://github.com/kbudde/rabbitmq_exporter/releases
按操作系统类型选择需要的安装包
上传安装包:
将redis_exporter-v1.45.0.linux-amd64.tar.gz安装包上传至192.168.0.125服务器
安装rabbitmq_exporter:
进入安装包所在目录,执行以下命令完成rabbitmq_exporter部署
tar zxf rabbitmq_exporter_1.0.0-RC19_linux_amd64.tar.gz -C /usr/local
启动rabbitmq_exporter:
执行以下命令启动rabbitmq_exporter服务
cd /usr/local
RABBIT_USER=root RABBIT_PASSWORD=123456OUTPUT_FORMAT=JSON PUBLISH_PORT=9099RABBIT_URL=http://192.168.0.125:15672 nohup ./rabbitmq_exporter &
服务启动常用参数如下:
RABBIT_USER=username #用户名
RABBIT_PASSWORD=password #密码
OUTPUT_FORMAT=JSON PUBLISH_PORT=9099 #rabbitmq_exporter服务端口
RABBIT_URL=http://192.168.0.125:15672 #rabbitmq的UI地址
5.2 prometheus添加监控目标
需要把rabbitmq_exporter监控添加到prometheus服务器(192.168.0.123)中
vim /usr/local/prometheus/prometheus.yml
编辑prometheus配置文件并添加以下配置
- job_name: 'rabbitmq'
static_configs:
- targets: ['192.168.0.125:9099']#rabbitmq_exporter的ip+端口
修改配置后重启prometheus
ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9
杀死进程
/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &
启动服务
重启后可以看到prometheus已与redis_exporter建立了连接
netstat-anp|grep9099
在prometheus页面可以看到新添加的rabbitmq监控目标
5.3添加Rabbitmq Grafana模板
在Grafana的官方网站上可以找到比较好用的Rabbit mq的仪表板模板,直接用模板地址导入即可。
(1)导入rabbitmq仪表板模板,这里使用本地上传方式
模板名称和文件夹都为默认,数据源就选择prometheus,然后导入
(2)导入模板后就可以看到仪表板的效果,采集到的rabbitmq数据也能正常展示
6.mysql服务监控
6.1部署mysqld_exporter
主要监控Mysql数据库的稳定性、吞吐量、连接情况、缓冲池使用情况、查询性能等各项指标,是我们压测时常常需要监控的一些指标。
下载安装包:
地址:https://prometheus.io/download/#mysqld_exporter
按操作系统类型选择需要的安装包
上传安装包:
将mysqld_exporter-0.14.0.linux-amd64.tar.gz安装包上传至192.168.0.125服务器
安装mysqld_exporter:
进入安装包所在目录,执行以下命令完成redis_exporter部署
tar zxvf mysqld_exporter-0.14.0.linux-amd64.tar.gz -C /usr/local/
解压安装包
mv /usr/local/mysqld_exporter-0.14.0.linux-amd64/ /usr/local/mysqld_exporter
改名和变更路径
创建一个mysql配置文件,写上连接的用户名与密码(和上面的授权的用户名和密码要对应)
vim /usr/local/mysqld_exporter/.my.cnf
[client]user=mysql_monitor
password=123456
启动mysqld_exporter:
执行以下命令启动mysqld_exporter服务
/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &
检查grafana监听是否正常,默认端口9104
netstat-anp|grep9104
6.2 prometheus添加监控目标
需要把mysqld_exporter监控添加到prometheus服务器(192.168.0.123)中
vim /usr/local/prometheus/prometheus.yml
编辑prometheus配置文件并添加以下配置
- job_name: 'mysql'
static_configs:
- targets: ['192.168.0.125:9104']#mysqld_exporter的ip+端口
修改配置后重启prometheus
#ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9
杀死进程
#/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &
启动服务
重启后可以看到prometheus已与mysqld_exporter建立了连接
netstat-anp|grep9104
在prometheus页面可以看到新添加的mysql监控目标
6.3添加mysql Grafana模板
在Grafana的官方网站上可以找到比较好用的mysql的仪表板模板,直接用模板地址导入即可。
(1)导入mysql仪表板模板,这里使用本地上传方式
模板名称和文件夹都为默认,数据源就选择prometheus,然后导入
(2)导入模板后就可以看到仪表板的效果,采集到的mysql数据也能正常展示
7.Linux主机监控
7.1部署node_exporter
下载安装包:
地址:https://prometheus.io/download/#node_exporter
上传安装包:
将node_exporter-1.4.0.linux-amd64.tar.gz安装包上传至192.168.0.125服务器
安装node_exporter:
进入安装包所在目录,执行以下命令完成node_exporter部署
tar -zxf tar zxvf node_exporter-1.4.0.linux-amd64.tar.gz
解压安装
包
mv /usr/local/node_exporter-1.4.0.linux-amd64/ /usr/local/node_exporter
改名和变更路径
启动node_exporter:
/usr/local/node_exporter/node_exporter &
检查node_exporter监听是否正常,默认端口9100
netstat-anp|grep9100
7.2 prometheus添加监控目标
需要把node_exporter监控添加到prometheus服务器(192.168.0.123)中
vim /usr/local/prometheus/prometheus.yml 编辑prometheus
配置文件并添加以下配置
- job_name: 'linux'
static_configs:
- targets: ['192.168.0.125:9100']#node_exporter的ip+端口
修改配置后重启prometheus
ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9
杀死进程
/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &
启动服务
重启后可以看到prometheus已与node_exporter建立了连接
netstat-anp|grep9100
7.3添加Linux Grafana模板
在Grafana的官方网站上可以找到比较好用的linux的仪表板模板,直接用模板地址导入即可。
(1)导入rabbitmq仪表板模板,这里使用本地上传方式
模板名称和文件夹都为默认,数据源就选择prometheus,然后导入
(2)导入模板后就可以看到仪表板的效果,采集到的linux数据也能正常展示
版权归原作者 Altairr 所有, 如有侵权,请联系我们删除。