二、Zabbix 企业监控系统搭建

zabbix监控介绍

一、环境准备

centos7.5 系统服务器3台、 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信。

主机名 ip 服务
zabbix-server 192.168.94.141 zabbix-server
zabbix-agent1 192.168.94.142 zabbix-agent
zabbix-agent2 192.168.94.143 zabbix-agent

所有机器关闭防火墙和selinux

[root@zabbix-master ~]# systemctl stop firewalld && setenforce 0(修改配置文件关闭)
[root@zabbix-agent1 ~]# systemctl stop firewalld && setenforce 0
[root@zabbix-agent2 ~]# systemctl stop firewalld && setenforce 0
# 必要时可永久关闭或开启相应的端口

二、Zabbix的安装

下载地址

1)更新yum仓库

我们去官网下载一个包zabbix-release-4.4-1.el7.noarch.rpm,本地安装至我们的虚拟机,这样,我们本地就有了新的yum源,可以直接安装zabbix服务:

下载安装官方yum源
[root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[root@zabbix-server ~]# yum clean all
[root@zabbix-server ~]# yum makecache fast
已加载插件:fastestmirror
正在清理软件源: base extras updates zabbix zabbix-non-supported

更新yum仓库:

[root@zabbix-server ~]# yum repolist 
Loaded plugins: fastestmirror, langpacks  
Loading mirror speeds from cached hostfile
zabbix-non-supported                                                      4/4
repo id                     repo name                                   status
base                        base                                         9,363
epel                        epel                                        11,349
zabbix/x86_64               Zabbix Official Repository - x86_64             80
zabbix-non-supported/x86_64 Zabbix Official Repository non-supported -       4
repolist: 20,796

安装:

[root@zabbix-server ~]# yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-proxy-mysql zabbix-java-gateway zabbix-nginx-conf

#如果上面安装报错
[root@zabbix-server ~]# vim /etc/yum.repo.d/zabbix.repo   #更换国内源
[zabbix]
name=Zabbix Official Repository - $basearch
#baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/    # 这里我们换成阿里云的yum源
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
#baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/  #换了上面Zabbix的安装源地址,其组件地址也要记得换! 
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

[root@zabbix-server ~]# yum clean all
[root@zabbix-server ~]# yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-proxy-mysql zabbix-java-gateway zabbix-nginx-conf
或者(官方)
[root@zabbix-server ~]# yum-config-manager --enable rhel-7-server-optional-rpms
2)安装设置数据库:

1、创建 mariadb.repo

[root@zabbix-server ~]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB 
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64 
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB 
gpgcheck=1

2、yum 安装最新版本 mariadb

[root@zabbix-server ~]# yum -y install mariadb mariadb-server

修改配置文件:/etc/my.cnf.d/server.cnf

[root@zabbix-server ~]# vim /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON          #跳过主机名解析
innodb_file_per_table = ON      #   
innodb_buffer_pool_size = 256M  #缓存池大小
max_connections = 2000          #最大连接数

log-bin = master-log            #开启二进制日志

[root@zabbix-server ~]# systemctl start mariadb
[root@zabbix-server ~]# systemctl enable mariadb

3、创建数据库并授权账号

MariaDB [(none)]> create database zabbix character set 'utf8';  # 创建zabbix数据库
MariaDB [(none)]> grant all on zabbix.* to 'zabbix'@'192.168.94.%' identified by "123";
# 注意授权网段
MariaDB [(none)]> flush privileges;

4、导入表
首先,查看一下,zabbix-server-mysql这个包提供了什么:

[root@zabbix-server ~]# rpm -ql zabbix-server-mysql | grep sql
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-4.4.4
/usr/share/doc/zabbix-server-mysql-4.4.4/AUTHORS
/usr/share/doc/zabbix-server-mysql-4.4.4/COPYING
/usr/share/doc/zabbix-server-mysql-4.4.4/ChangeLog
/usr/share/doc/zabbix-server-mysql-4.4.4/NEWS
/usr/share/doc/zabbix-server-mysql-4.4.4/README
/usr/share/doc/zabbix-server-mysql-4.4.4/create.sql.gz   #生成表的sql文件

我们来使用这个文件生成我们所需要的表:

[root@zabbix-server ~]# cd /usr/share/doc/zabbix-server-mysql-4.4.4/
[root@zabbix-server zabbix-server-mysql-4.4.4]# ls
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README
[root@zabbix-server zabbix-server-mysql-4.4.4]# gzip -d create.sql.gz 
[root@zabbix-server zabbix-server-mysql-4.4.4]# ls
AUTHORS  ChangeLog  COPYING  create.sql  NEWS  README
[root@zabbix-server zabbix-server-mysql-4.4.4]# head create.sql 
CREATE TABLE `users` (
    `userid`                 bigint unsigned                           NOT NULL,
    `alias`                  varchar(100)    DEFAULT ''                NOT NULL,
    `name`                   varchar(100)    DEFAULT ''                NOT NULL,
    `surname`                varchar(100)    DEFAULT ''                NOT NULL,
    `passwd`                 varchar(32)     DEFAULT ''                NOT NULL,
    `url`                    varchar(255)    DEFAULT ''                NOT NULL,
    `autologin`              integer         DEFAULT '0'               NOT NULL,
    `autologout`             varchar(32)     DEFAULT '15m'             NOT NULL,
    `lang`                   varchar(5)      DEFAULT 'en_GB'           NOT NULL,

我们查看表头发现没有创建数据库的命令,这也正是我们刚刚手动创建数据库的原因。

然后,我们直接把这个表导入至我们的数据库即可:

[root@zabbix-server zabbix-server-mysql-4.4.4]# mysql -uzabbix -p123 -h 192.168.94.141 zabbix < create.sql

导入以后,进入数据库查看一下:

[root@zabbix-server ~]# mysql -uzabbix -p123 -h192.168.94.141
MariaDB [(none)]> use zabbix
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| application_discovery      |
| application_prototype      |
......
| users_groups               |
| usrgrp                     |
| valuemaps                  |
| widget                     |
| widget_field               |
+----------------------------+
149 rows in set (0.001 sec)

可以看出来,数据已经导入成功了。

三、配置 server 端

数据库准备好了以后,就要去修改server端的配置文件了。

[root@zabbix-server ~]# cd /etc/zabbix/
[root@zabbix-server zabbix]# ls
web                 zabbix_java_gateway.conf         zabbix_server.conf
zabbix_agentd.conf  zabbix_java_gateway_logback.xml
zabbix_agentd.d     zabbix_proxy.conf
[root@zabbix-server zabbix]# cp zabbix_server.conf{,.bak}
[root@zabbix-server zabbix]# vim zabbix_server.conf
ListenPort=10051            #默认监听端口
SourceIP=192.168.94.141     #发采样数据请求的IP

为什么要设置SourceIP,由于我们的客户端可能一个主机多个IP,我们又不能允许任意的IP都能从我们这里读取数据,就会有一个验证方式,而该方式是基于识别SourceIP来实现的。

1204916-20171202111451323-1945674171.png

日志,默认用文件记录,也可以发送给我们的rsyslog日志记录系统,如果我们选择默认,则日志存放在LogFile=/var/log/zabbix/zabbix_server.log中,也可以自己设置。

1204916-20171202111457261-900254693.png

日志的滚动。默认值为1,表示滚动。我们设为0则表示不滚动。当数据特别多的时候,我们也可以设置成为1,然后在Maximum size of log file in MB设置当数据文件最大到多少时会自动滚动。

1204916-20171202111508870-541941322.png

日志的级别。一共有6个级别。我们可以根据自己的需要来设置级别。其中0表示输出最少的信息,5表示输出最详细的信息,默认值为3,设置为3的话就表示,0、1、2、3四个级别都显示。考虑到生产系统中的压力时,这里的信息,如果没有必要的话,越简单越好,只要在出错的时候,我们可以依据其进行排错即可。

数据库相关的设置:

DBHost=192.168.94.141       #数据库对外的主机
DBName=zabbix               #数据库名称
DBUser=zabbix               #数据库用户
DBPassword=123              #数据库密码
DBPort=3306                 #数据库启动端口

补充:可以使用grep -i "^####" zabbix_server.conf来查看配置文件中有哪些大段,也可以使用grep -i "^###" zabbix_server.conf来查看配置文件中每一段中的配置项有哪些

开启服务:

[root@zabbix-server zabbix]# systemctl start zabbix-server.service

确认一下我们的端口有没有开启:

[root@zabbix-server zabbix]# ss -lnta | grep 10051
LISTEN     0      128          *:10051                    *:*                  
LISTEN     0      128         :::10051                   :::* 

如果查到的端口没有开启,就要去检查一下配置文件有没有出问题。

至此,server端的进程启动已经ok了,接下来就可以使用web GUI来打开接口进行设定了

四、配置 web GUI

查看web GUI的配置文件在哪里:

[root@zabbix-server ~]# rpm -ql zabbix-web | less
/etc/httpd/conf.d/zabbix.conf
/etc/zabbix/web
/etc/zabbix/web/maintenance.inc.php
/etc/zabbix/web/zabbix.conf.php
/usr/share/doc/zabbix-web-4.4.4
/usr/share/doc/zabbix-web-4.4.4/AUTHORS
/usr/share/doc/zabbix-web-4.4.4/COPYING
/usr/share/doc/zabbix-web-4.4.4/ChangeLog
/usr/share/doc/zabbix-web-4.4.4/NEWS
/usr/share/doc/zabbix-web-4.4.4/README
/usr/share/zabbix
/usr/share/zabbix/actionconf.php
/usr/share/zabbix/adm.gui.php
/usr/share/zabbix/adm.housekeeper.php
/usr/share/zabbix/adm.iconmapping.php
/usr/share/zabbix/adm.images.php
/usr/share/zabbix/adm.macros.php
……

可以看出,有一个/etc/httpd/conf.d/zabbix.conf文件,这个配置文件就是帮我们做映射的文件,我们可以去看一看这个文件:

Alias /zabbix /usr/share/zabbix     #我们访问的时候要在主机后加上/zabbix来访问我们这个服务
1204916-20171202111541714-86449116.png

时区是一定要设置的,这里被注释掉是因为,我们也可以在php的配置文件中设置时区,如果我们在php配置文件中设置时区,则对所有的php服务均有效,如果我们在zabbix.conf中设置时区,则仅对zabbix服务有效。所以,我们去php配置文件中设置我们的时区:

[root@zabbix-server ~]# vim /etc/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai

接下来,启动httpd服务:

[root@zabbix-server ~]# systemctl start httpd.service
[root@zabbix-server ~]# ss -nutl | grep :80
tcp    LISTEN     0      128      :::80                   :::*

五、浏览器访问并进行初始化设置

我们使用浏览器访问192.168.94.141/zabbix,第一次访问时需要进行一些初始化的设置,我们按照提示操作即可:

image.png
image.png
image.png
image.png
image.png
image.png

点击Finish以后,我们就会跳转到登录页面,使用默认的账号密码登录即可:
默认账号:admin
默认密码:zabbix

image.png

登陆进来就可以看到我们的仪表盘了:

image.png

切换中文:

image.png

image.png

解决zabbix仪表盘切换中文时有些字乱码问题

六、配置 agent 端

当我们把监控端配置启动以后,我们需要来设置一下我们的监控端,我们在被监控的主机安装好agent,设置好他的server,并把他添加到server端,就能将其纳入我们的监控系统中去了。

1)安装 zabbix

同样的,我们先来安装zabbix。下载包,注释epel源,安装所需的包。具体步骤如下:

下载安装官方yum源
[root@zabbix-agent1 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[root@zabbix-agent1 ~]# yum clean all
[root@zabbix-agent1 ~]# yum makecache fast
已加载插件:fastestmirror
正在清理软件源: base extras updates zabbix zabbix-non-supported
# yum 下载
[root@zabbix-agent1 ~]# yum install zabbix-agent zabbix-sender -y

安装完成以后,修改配置文件。

2)修改配置文件

先查一下包内有什么:

[root@zabbix-agent1 ~]# rpm -ql zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
/usr/lib/systemd/system/zabbix-agent.service
/usr/lib/tmpfiles.d/zabbix-agent.conf
/usr/sbin/zabbix_agentd
/usr/share/doc/zabbix-agent-4.4.4
/usr/share/doc/zabbix-agent-4.4.4/AUTHORS
/usr/share/doc/zabbix-agent-4.4.4/COPYING
/usr/share/doc/zabbix-agent-4.4.4/ChangeLog
/usr/share/doc/zabbix-agent-4.4.4/NEWS
/usr/share/doc/zabbix-agent-4.4.4/README
/usr/share/man/man8/zabbix_agentd.8.gz
/var/log/zabbix
/var/run/zabbix

对配置文件做一个备份,然后去修改配置文件:

[root@zabbix-agent1 ~]# cd /etc/zabbix/
[root@zabbix-agent1 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@zabbix-agent1 zabbix]# cp zabbix_agentd.conf{,.bak}
[root@zabbix-agent1 zabbix]# vim zabbix_agentd.conf
image-20200123112302076.png
image-20200123112532726.png
image-20200123112718258.png

重点需要修改的仍然是GENERAL PARAMETERS段:

1204916-20171202111819198-1483932137.png

是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险。

Server=192.168.94.141       #指明服务器是谁
ListenPort=10050            #自己监听的端口
ListenIP=0.0.0.0            #自己监听的地址,0.0.0.0表示本机所有地址
StartAgents=3               #优化时使用的

ServerActive=192.168.94.141 #主动监控时的服务器
Hostname=agent1     #自己能被server端识别的名称

修改完成之后,我们保存退出。然后就可以启动服务了:

[root@zabbix-agent1 zabbix]# systemctl start zabbix-agent
[root@zabbix-agent1 zabbix]# netstat -lntp | grep 10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      15909/zabbix_agentd 
tcp6       0      0 :::10050                :::*                    LISTEN      15909/zabbix_agentd

agent2同样操作,但是主机名不能一样

接着,就可以去server端添加了。

七、监控过程详解

1)修改密码
image.png
image.png
2)创建主机及主机群组

先定义一个主机群组:

image.png

image.png

然后就可以去添加主机了:

image.png
image.png

当然,上面有很多选择卡,有一个加密:

image.png

添加完成后,就能在列表中看到这个主机了

image.png

再把agent2也添加进来

image.png

3)监控项(items)

创建模板 > 创建应用集 > 创建监控项

① 首先我们创建一个模板

image.png

给模板取一个名字绑定群组
image.png

创建好了之后就会出现在列表里
image.png

② 创建应用集

点击应用集

image.png

创建应用集

image.png

给应用集取一个名字,一般根据功能取易识别的就好
image.png

好了,现在就是在agent模板下,建立了一个CPU应用集
image.png

③ 创建监控项

点击监控项

image.png

image.png

任何一个被监控项,如果想要能够被监控,一定要在zabbix-server端定义了能够连接至zabbix-agent端,并且能够获取命令。或者在agent端定义了能够让server端获取命令。一般都是内建的命令,都对应的有其名字,被我们称之为key。

image.png

关于key值,我们可以直接在网页上设置(服务器自动执行),也可以使用命令行命令(手动执行)来获取:
[root@zabbix-server ~]# zabbix_get -s 192.168.94.142 -p 10050 -k "system.cpu.intr"
在我们的agent端,也可以使用命令来查看intr的速率变化:

这里定义了一个不带参数的监控项"system.cpu.intr"

image.png

image.png

设置完以后,点击添加,即可加入,并会自动跳转至下图页面:

image.png

然后点击配置,主机回到下面这个页面,去给主机绑定我们刚才创建好的模板

image.png

④ 绑定模板

点击agent1

image.png

image.png

然后点击更新,等待5秒,我们可以看到,我们agent1节点后面的选项已经有变成绿色的了:
image.png

我们也可以回到我们的仪表盘,可以看到,我们的监控项有一个处于启用状态:

image.png

那么,我们的数据在哪里呢?可以点击最新数据,把我们的主机群组添加进来,应用一下,就可以看到下面的状态了:

image.png
image.png

可以看到,我们还有一个图形页面,点进去则可以看图形的分布:

image.png

然后我们发现切换中文之后,下面有些字体乱码

解决zabbix仪表盘切换中文时有些字乱码问题

image.png

事实上,我们关注的指标有很多种,我们一一添加进来即可。

刚刚我们定义的监控项是很简单的,指定一个key即可,但是有些监控项是带有参数的,这样一来,我们的监控项就有更多的灵活性。接下来,我们来简单说明一个需要带参数的监控项:

⑤ 定义一个带参数的监控项

这一次我们定义的监控项,不绑定模板,不指定应用集,也就是说它只是针对某一个主机设定的监控项


image.png
image.png
1204916-20171202112221667-2119454107.png

图中的[]就是需要参数的意思,里面的值即为参数,带<>为不可省略的。我们就以这个例子来说明:
if表示是接口名;<mode>表示是那种模式,包括但不限于:packets(包)、bytes(字节)、errors(错误)、dropped(丢包)、overuns等等(上述内容通过ifconfig查看)

我们来设置一下这个监控值:

image.png

image.png

同样的,我们也可以通过命令行来查看:
[root@zabbix-server ~]# zabbix_get -s 192.168.94.143 -p 10050 -k "net.if.in[ens32,packets]"
1739

我们发现agent2也亮了起来

image.png

接着我们去查看一下图形

image.png
image.png

⑥ 快速定义类似指标

如果我们想要定义一个类似的指标,我们可以直接选择克隆,然后简单的修改一点点参数即可。

就以我们刚刚定义的net.if.in[ens33,packets]为例,如果我们想要在定义一个out的进行如下操作即可:

image.png

只需要修改这两个地方就可以

image.png
image.png

然后点击添加,就可以看到列表中就有了我们刚才添加的监控项

image.png

我们来到 检测中 ---> 最新数据,可以看到,我们定义的监控项都已经有值了:


image.png
image.png

⑦ 删除监控项

如果有一个监控项,我们用不上了,就可以删除掉。但是如果你直接删除的话,默认数据是会留下的,所以我们要先清除数据,然后再删除,具体操作步骤如下:

1204916-20171202112656808-290199455.png

⑧ 监控项存储的值

对于监控项存储的值,老一点的版本只有以下三种方式:

  • As is:不对数据做任何处理(存储的为原始值)
  • Delta:(simple change)(变化),本次采样减去前一次采样的值的结果
  • Delta:(speed per second)(速率),本次采样减去前一次采样的值,再除以经过的时长;
    而在3.4版本以后有了更多的表现形式:
image.png
4)触发器(trigger)

① 简介

当我们的采集的值定义完了以后,就可以来定义触发器了。

我们触发器的定义是:界定某特定的item采集到的数据的非合理区间或非合理状态。通常为逻辑表达式。

逻辑表达式(阈值):通常用于定义数据的不合理区间,其结果如下:
  OK(不符合条件):正常状态 --> 较老的zabbix版本,其为FALSE;
  PROBLEM(符合条件):非正常状态 --> 较老的zabbix版本,其为TRUE;

一般,我们评定采样数值是否为合理区间的比较稳妥的方法是——根据最后N次的平均值来判定结果;这个最后N次通常有两种定义方式:

  1. 最近N分钟所得结果的平均值
  2. 最近N次所得结果的平均值

而且,我们的触发器存在可调用的函数:

nodata()    #是否采集到数据,采集不到则为异常
last()      #最近几次的平均值
date()
time()
now()
dayofmonth()
...

注:能用数值保存的就不要使用字符串

② 触发器表达式

基本的触发器表达式格式如下所示
{<server>:<key>.<function>(<parameter>)}<operator><constant>

  • server:主机名称;
  • key:主机上关系的相应监控项的key;
  • function:评估采集到的数据是否在合理范围内时所使用的函数,其评估过程可以根据采取的数据、当前时间及其它因素进行;
  • 目前,触发器所支持的函数有avg、count、change、date、dayofweek、delta、diff、iregexp、last、max、min、nodata、now、sum等
  • parameter:函数参数;大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#”做为前缀,则表示为最近几次的取值,如sum(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和;
  • 此外,avg、count、last、min和max还支持使用第二个参数,用于完 成时间限定;例如,max(1h,7d)将返回一周之前的最大值;

表达式所支持的运算符及其功能如下图所示:

1204916-20171202112728636-256605681.png

③ 定义一个触发器

我们可以查看一下,agent1的cpu_status监控项,并以其为标准确定我们的非正常的值:


image.png

图中我们可以看出,我们的最大值为105,最小值为47,平均值为58。这样的话,我们可以定义110以上的都是非正常的值,这里为了测试定义为50。

下面我们来定义一个触发器:

进入:配置 ---> 主机 ---> agent1 ---> 触发器 ---> 创建触发器

image.png

image.png

触发表达式设置
image.png

image.png

恢复表达式设置
image.png

生成完毕后,我们就点击页面下方的添加,即成功定义了一个触发器,同时页面自动跳转:
image.png

image.png

看见仪表盘已经有了警告信息


image.png

然后我们去看一下我们刚刚定义了触发器的那个监控项:


image.png

我们可以看出,这个里面就有了一根线,就是我们刚刚定义的值,超过线的即为异常状态,看起来非常直观。

但是,现在即使超过了这根线,也仅仅会产生一个触发器事件而不会做其他任何事。因此,我们就需要去定义一个动作(action)。

④ 触发器的依赖关系

我们的触发器彼此之间可能会存在依赖关系的,一旦某一个触发器被触发了,那么依赖这个触发器的其余触发器都不需要再报警。  我们可以来试想一下这样的场景:

我们的多台主机是通过交换机的网络连接线来实现被监控的。如果交换机出了故障,我们的主机自然也无法继续被监控,如果此时,我们的所有主机统统报警……想想也是一件很可怕的事情。要解决这样的问题,就是定义触发器之间的依赖关系,当交换机挂掉,只它自己报警就可以了,其余的主机就不需要在报警了。这样,也更易于我们判断真正故障所在。

注意:目前zabbix不能够直接定义主机间的依赖关系,其依赖关系仅能通过触发器来定义。

我们来简单举一个例子,示范一下如何定义一个依赖关系:

打开任意一个触发器,上面就有依赖关系,我们进行定义即可:


image.png

触发器可以有多级依赖关系,比如我们看下面的例子:

1204916-20171202112943901-1385885917.png

推荐阅读更多精彩内容